/// <summary> /// Create Particles /// </summary> /// <param name="startPosition">Position in Relation to World Coordinates</param> /// <param name="size">2 = 4x4 square; 10 = 20x20 square</param> /// <param name="timeToLive">Time to Live in Milliseconds</param> internal void createParticles(Vector2 velocity, Vector2 acceleration, Vector2 startPosition, float size, int timeToLive) { if (numOfActiveParticles < maxNumOfParticles) { //create particle vertices particleVertices[numOfActiveParticles * 4] = new ParticleVertexFormat(new Vector2(startPosition.X - size, startPosition.Y - size), velocity, acceleration, new HalfVector2(0, 0), (int)This.gameTime.TotalGameTime.TotalMilliseconds, timeToLive); particleVertices[numOfActiveParticles * 4 + 1] = new ParticleVertexFormat(new Vector2(startPosition.X + size, startPosition.Y - size), velocity, acceleration, new HalfVector2(1, 0), (int)This.gameTime.TotalGameTime.TotalMilliseconds, timeToLive); particleVertices[numOfActiveParticles * 4 + 2] = new ParticleVertexFormat(new Vector2(startPosition.X + size, startPosition.Y + size), velocity, acceleration, new HalfVector2(1, 1), (int)This.gameTime.TotalGameTime.TotalMilliseconds, timeToLive); particleVertices[numOfActiveParticles * 4 + 3] = new ParticleVertexFormat(new Vector2(startPosition.X - size, startPosition.Y + size), velocity, acceleration, new HalfVector2(0, 1), (int)This.gameTime.TotalGameTime.TotalMilliseconds, timeToLive); //set time to live expirationTime[numOfActiveParticles] = timeToLive + (int)This.gameTime.TotalGameTime.TotalMilliseconds; moveParticleToGPU(numOfActiveParticles); //increment number of particles numOfActiveParticles++; } }