public void ProcessCollision(IGameObject self, Scene world, Collision collision)
        {
            var victim = collision.Subject;

            if (victim.ID == (uint)ObjectID.Friendly)
            {
                Explode(victim, world);
            }

            if (victim.ID == (uint)ObjectID.Turret && shooter != ObjectID.Turret)
            {
                var turretScript = victim.ActionScripts.FirstOrDefault() as TurretScript;
                if (turretScript.Health-- == 0)
                {
                    Explode(victim, world);
                }
            }

            if (victim.ID == (uint)ObjectID.Player && shooter != ObjectID.Player)
            {
                world.Camera.Body.Position += new Vector2f(
                    rand.Next(-cameraShakeRatio, cameraShakeRatio),
                    rand.Next(-cameraShakeRatio, cameraShakeRatio)
                    );
            }

            if (victim.ID != (uint)ObjectID.Laser && victim.ID != (uint)shooter &&
                victim.ID != (uint)ObjectID.Camera)
            {
                world.Remove(self);
                var sparks = new Sparks(self.Body.Position);
                world.Particles.SpawnEmitter(sparks.Emitter, sparks.Timeout);
            }
        }
 public void ProcessCollision(IGameObject self, Scene world, Collision collision)
 {
     velocity = collision.Velocity;
     if (collision.Subject.Body.IsSolid)
     {
         var sparks = new Sparks(collision.ContactPoint);
         world.Particles.SpawnEmitter(sparks.Emitter, sparks.Timeout);
     }
 }