bool TextureWave::Init() { if (!D3DApp::Init()) { return false; } isLimitFrame = false; BuildGeometries(); BuildShaders(); BuildInputLayout(); LoadTexture(); BuildParamaters(); BuildBlendState(); return true; }
void FireBallParticles::Init(FXMVECTOR initialPos, float fireballRadius, LPCWSTR texFilename, ID3D11Device* device, FireBallParticlesProperties p) { SetProperties(p); mFireBallEffect = new ParticleEffect(); mFireBallEffect->LoadEffect(L"FX/ParticleEffect.fx", device); Vertex::InitParticleVertLayout(device, mFireBallEffect->GetTech()); BuildFireBallParticleVB(device); XMVECTOR vel; XMFLOAT3 fVel3; for (int i = 0; i < mProperties.numParticles; ++i) { FireBallParticle newParticle; vel = XMVector3Normalize(XMVectorSet(MathHelper::RandF(-1.0f, 1.0f), MathHelper::RandF(-1.0f, 1.0f), MathHelper::RandF(-1.0f, 1.0f), 0.0f)) * fireballRadius; XMStoreFloat3(&newParticle.pos, initialPos + vel); fVel3 = GetVelocity(); vel = XMVector3Normalize(XMVectorSet(fVel3.x, fVel3.y, fVel3.z, 0.0f)) * fireballRadius; XMStoreFloat3(&newParticle.vel, vel * GetSpeedMultiplier()); float pSize = GetSize(); newParticle.size.x = pSize; newParticle.size.y = pSize; newParticle.age = 0.0f; newParticle.lifetime = GetLifetime(); newParticle.tweenSegment = 0; mFireBallParticles.push_back(newParticle); } mParticlesShown = mProperties.numParticles; D3DX11CreateShaderResourceViewFromFile(device, texFilename, 0, 0, &mFBTexture, 0); BuildBlendState(device); BuildDSState(device); }