public void Update(float gameTime) { elapsedTime += gameTime;//sätter så at det räknas i millisekunder//(float)//.ElapsedGameTime.TotalMilliseconds life -= gameTime; if (elapsedTime > maxParticleLife / maxParticleCount)// om tiden är större än max livet delat på max partiklar så körs denna! { if (offset < maxParticleCount)// går in i denna om nu en partikels tid är ute { smoke[offset] = new Smoke(maxParticleLife); resetParticle(smoke[offset], camera, startPos);// kör om med samma partiklar från början offset++; elapsedTime = 0;// och startar om tiden för dessa! } } for (int i = 0; i < offset; i++) { smoke[i].Update(gameTime); if (smoke[i].age > maxParticleLife && life > 0) resetParticle(smoke[i], camera, startPos); } }
public void Update(float gameTime) { elapsedTime += gameTime;//sätter så at det räknas i millisekunder//(float)//.ElapsedGameTime.TotalMilliseconds life -= gameTime; if (elapsedTime > maxParticleLife / maxParticleCount) // om tiden är större än max livet delat på max partiklar så körs denna! { if (offset < maxParticleCount) // går in i denna om nu en partikels tid är ute { smoke[offset] = new Smoke(maxParticleLife); resetParticle(smoke[offset], camera, startPos);// kör om med samma partiklar från början offset++; elapsedTime = 0;// och startar om tiden för dessa! } } for (int i = 0; i < offset; i++) { smoke[i].Update(gameTime); if (smoke[i].age > maxParticleLife && life > 0) { resetParticle(smoke[i], camera, startPos); } } }
private void resetParticle(Smoke particle, Camera camera, Vector2 StartPosition) // denna kommer reseta allt { float speed = (float)r.NextDouble() * 7f; //farten på partiklarna Vector2 velocity = new Vector2((float)r.NextDouble() * 2f - 1f, (float)r.NextDouble() * 2f - 1f); startPosition = StartPosition; velocity.Normalize(); velocity = velocity * speed; float rotation = (float)r.NextDouble() * 2f * (float)Math.PI; //denna kommer rotera partiklarna lite float allTheRadians = 2f * (float)Math.PI; // gör så att partiklarna roterar runt mitten av spriten float rotationSpeed = ((float)r.NextDouble() * allTheRadians - allTheRadians / 2f) / 300f; particle.Reset(startPosition, velocity, rotation, rotationSpeed, 0.3f + (float)r.NextDouble() * 0.7f);// kommer ge allt sina värden när man ska skapa om dom!//startPos*500 }
// denna kommer reseta allt private void resetParticle(Smoke particle, Camera camera, Vector2 StartPosition) { float speed = (float)r.NextDouble() * 7f;//farten på partiklarna Vector2 velocity = new Vector2((float)r.NextDouble() * 2f - 1f, (float)r.NextDouble() * 2f - 1f); startPosition = StartPosition; velocity.Normalize(); velocity = velocity * speed; float rotation = (float)r.NextDouble() * 2f * (float)Math.PI;//denna kommer rotera partiklarna lite float allTheRadians = 2f * (float)Math.PI;// gör så att partiklarna roterar runt mitten av spriten float rotationSpeed = ((float)r.NextDouble() * allTheRadians - allTheRadians / 2f) / 300f; particle.Reset(startPosition, velocity, rotation, rotationSpeed, 0.3f + (float)r.NextDouble() * 0.7f);// kommer ge allt sina värden när man ska skapa om dom!//startPos*500 }