Ballz.GameSession.World.Shot.Explode C# (CSharp) Метод

Explode() публичный Метод

public Explode ( ) : void
Результат void
        public void Explode()
        {
            if (ExplosionRadius <= 0.0f)
                return;

            Ballz.The().Match.World.StaticGeometry.SubtractCircle(Position.X, Position.Y, ExplosionRadius);

            Ballz.The().Match.World.GraphicsEvents.Add(new CameraShakeEffect { Intensity = 2f, Duration = 0.2f, Start = Ballz.The().Match.GameTime });
            Ballz.The().Match.World.GraphicsEvents.Add(SpriteGraphicsEffect.CreateExplosion(Ballz.The().Match.GameTime, Position, 0));

            // TODO: damage to all players within explosion radius
            foreach (var p in Ballz.The().Match.Players) {
                foreach (var b in p.OwnedBalls) {
                    if (Vector2.Distance(b.Position, this.Position) < ExplosionRadius) {

                        if (!Ballz.The().GameSettings.FriendlyFire.Value && b.Player.TeamName == Team )
                            break;

                        b.ChangeHealth ( -this.HealthDecreaseFromExplosionImpact * Vector2.Distance(b.Position, this.Position)/ExplosionRadius );

                        b.PhysicsBody.ApplyLinearImpulse(HealthDecreaseFromExplosionImpact *
                            Vector2.Distance(b.Position, this.Position) / ExplosionRadius *
                            Vector2.Normalize(b.Position - this.Position)
                        );

                    }
                }
            }

            if( ShotType == ShotType_T.Generating)
                Ballz.The ().Match.World.Water.AddParticles(this.Position, 20);

            // Remove projectile
            Dispose();
        }