public Particle(OpenGL _openGL) { openGL = _openGL; particleData = new ParticleData(); int iPaticleCount = particleData.MaxParticles; particleData.ParticleInit = false; particles = new ParticleEngine[iPaticleCount]; SetTexture(particleData.Texture, particleData.CustomTexture); Random rndParticleStart = new Random(); for (int i = 0; i < iPaticleCount; i++) { int iMinStart = 0; int iMaxStart = 3; float fStart = rndParticleStart.Next(iMinStart, iMaxStart); ParticleEngine particleEngine = new ParticleEngine(_openGL); particles[i] = particleEngine; particles[i].ParticleMove(fStart, true); } }
public void SetColor(ParticleData _particleData) { startr = _particleData.ColorStartR; startg = _particleData.ColorStartG; startb = _particleData.ColorStartB; starta = _particleData.ColorStartA; finishr = _particleData.ColorFinishR; finishg = _particleData.ColorFinishG; finishb = _particleData.ColorFinishB; finisha = _particleData.ColorFinishA; }
public void Draw(ref ParticleData _particleData, Texture _texture) { m_particleData = _particleData; _texture.Bind(m_openGL); float fColorR = m_particleData.ColorStartR + m_ParticalColor.ModifyR; float fColorG = m_particleData.ColorStartG + m_ParticalColor.ModifyG; float fColorB = m_particleData.ColorStartB + m_ParticalColor.ModifyB; float fColorA = m_particleData.ColorStartA + m_ParticalColor.ModifyA; m_openGL.Color(fColorR, fColorG, fColorB, fColorA); m_openGL.TexCoord(1.0f, 0.0f); m_openGL.Vertex(m_particleLocation.UpX, m_particleLocation.UpY, 0); m_openGL.TexCoord(0.0f, 0.0f); m_openGL.Vertex(m_particleLocation.DownX, m_particleLocation.UpY, 0); m_openGL.TexCoord(0.0f, 1.0f); m_openGL.Vertex(m_particleLocation.DownX, m_particleLocation.DownY, 0); m_openGL.TexCoord(1.0f, 1.0f); m_openGL.Vertex(m_particleLocation.UpX, m_particleLocation.DownY, 0); }