void CParticle::Init(CRandom& random, const CCamera& camera, const SParicleEmitParameter& param, const CVector3& emitPosition ) { float halfW = param.w * 0.5f; float halfH = param.h * 0.5f; TK_ASSERT(param.uvTableSize <= ARRAYSIZE(param.uvTable), "uvTable size over!!!"); CVector4 uv; if (param.uvTableSize > 0) { uv = param.uvTable[random.GetRandInt() % param.uvTableSize]; } else { uv = param.uvTable[0]; } SShapeVertex_PT vb[] = { { -halfW, halfH, 0.0f, 1.0f, uv.x, uv.y }, { halfW, halfH, 0.0f, 1.0f, uv.z, uv.y }, { -halfW, -halfH, 0.0f, 1.0f, uv.x, uv.w }, { halfW, -halfH, 0.0f, 1.0f, uv.z, uv.w }, }; short index[]{ 0,1,2,3 }; primitive.Create( CPrimitive::eTriangleStrip, 4, sizeof(SShapeVertex_PT), scShapeVertex_PT_Element, vb, 4, eIndexFormat16, index ); texture = ParticleResources().LoadTexture(param.texturePath); shaderEffect = EffectManager().LoadEffect("Assets/presetShader/ColorTexPrim.fx"); this->camera = &camera; this->random = &random; life = param.life; velocity = param.initVelocity; //初速度に乱数を加える。 velocity.x += (((float)random.GetRandDouble() - 0.5f) * 2.0f) * param.initVelocityVelocityRandomMargin.x; velocity.y += (((float)random.GetRandDouble() - 0.5f) * 2.0f) * param.initVelocityVelocityRandomMargin.y; velocity.z += (((float)random.GetRandDouble() - 0.5f) * 2.0f) * param.initVelocityVelocityRandomMargin.z; position = emitPosition; position.x += (((float)random.GetRandDouble() - 0.5f) * 2.0f) * param.initPositionRandomMargin.x; position.y += (((float)random.GetRandDouble() - 0.5f) * 2.0f) * param.initPositionRandomMargin.y; position.z += (((float)random.GetRandDouble() - 0.5f) * 2.0f) * param.initPositionRandomMargin.z; addVelocityRandomMargih = param.addVelocityRandomMargih; gravity = param.gravity; isFade = param.isFade; state = eStateRun; initAlpha = param.initAlpha; alpha = initAlpha; fadeTIme = param.fadeTime; isBillboard = param.isBillboard; brightness = param.brightness; alphaBlendMode = param.alphaBlendMode; mulColor = param.mulColor; rotateZ = CMath::PI * 2.0f * (float)random.GetRandDouble(); }