public void AddScoreParticle( string pName, SpriteTileCrystallonEntity pParent, Vector4 pColor) { if (ActiveScoreParticles >= ScoreParticles.Count) { #if DEBUG System.Console.WriteLine("Hit Max Particle Count(" + ScoreParticles.Count.ToString() + "! Particle not created."); #endif return; } if( pName == null) { return; } Particle p = ScoreParticles[ActiveScoreParticles]; p.variant = (float)EnumHelper.FromString<Icons>(pName); p.parent = pParent; p.position = pParent.getNode().LocalToWorld(pParent.getNode().Pivot) + p.offset; p.color = pColor; p.time = 0.0f; p.lifetime = 2.0f; p.size = new Vector2(64.0f, 64.0f); p.offset = new Vector2( p.size.X * 0.5f, pParent.Height * 0.5f); // p.size_delta = Vector2.Zero; p.velocity = -0.3f * p.lifetime * gravity + Vector2.UnitX * GameScene.Random.NextSign()*(50.0f + 50.0f * GameScene.Random.NextFloat()); p.type = (int)ParticleType.SCORE; ActiveScoreParticles++; }
// public void AddParticlesBurst(int count, Vector2 position, Vector2 velocity, Vector4 color, float jitter = 0.0f, float scale_multiplier = 1.0f) // { // for (int i = 0; i < count; ++i) // { // Vector2 p = position + Game.Instance.Random.NextVector2() * jitter; // Vector2 v = velocity + Game.Instance.Random.NextVector2() * jitter; // AddParticle(p, v, color, scale_multiplier); // } // } // // public void AddParticlesCone(int count, Vector2 position, Vector2 velocity, Vector4 color, float spread, float scale_multiplier = 1.0f) // { // for (int i = 0; i < count; ++i) // { // Vector2 p = position + velocity * Game.Instance.Random.NextFloat(); // Vector2 v = velocity + velocity.Rotate(Game.Instance.Random.NextSignedFloat() * spread + spread * 0.5f); // AddParticle(p, v, color, scale_multiplier); // } // } public void AddParticle( int pVariant, SpriteTileCrystallonEntity pParent, Vector4 color, float scale_multiplier) { if (ActiveQualityParticles >= QualityParticles.Count) { #if DEBUG System.Console.WriteLine("Hit Max Particle Count(" + QualityParticles.Count.ToString() + "! Particle not created."); #endif return; } Particle p = QualityParticles[ActiveQualityParticles]; p.variant = pVariant; p.parent = pParent; p.offset = new Vector2( GameScene.Random.NextSignedFloat() * pParent.Width*0.25f + 15.0f, GameScene.Random.NextSignedFloat() * pParent.Height*0.35f + 15.0f); p.position = pParent.getNode().LocalToWorld(new Vector2(pParent.Width/2.0f, pParent.Height/2.0f)) + p.offset; // p.velocity = GameScene.Random.NextVector2(); p.color = color; p.time = 0.0f; p.lifetime = 0.3f; p.size = new Vector2( scale_multiplier, scale_multiplier); p.velocity = Vector2.Zero; p.size_delta = new Vector2(1.5f); p.type = (int)ParticleType.QUALITY; // p.gravity = 0.75f; ActiveQualityParticles++; }