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); } }