public void Dispose() { _deathStartedAt = null; _killedBy = null; _owner.OnCollision -= collision; _owner = null; ; }
private void collision(object sender, CollisionEventArgs e) { if(!_deathStartedAt.HasValue) { _killedBy = e.CollidedWith; _deathStartedAt = GameTime.LastUpdated; // Last Updated is nearly equivalent to the current time } }
public void Update(GameTime gameTime) { var velocityZero = _owner.MovementController.Velocity.IsZero(); if (_deathStartedAt.HasValue && gameTime.Now - _deathStartedAt >= DEATH_AFTER && velocityZero) { // We've died _owner.Die(_killedBy); } else if (!velocityZero) { _deathStartedAt = null; _killedBy = null; } }
public CollisionEventArgs(Collidable collidedWith) { CollidedWith = collidedWith; }
private void setCollidableContractMembers(object[] result, Collidable collidable) { result[_collidableCompressionContract.ID] = collidable.ID; result[_collidableCompressionContract.Alive] = Convert.ToInt16(collidable.Alive); result[_collidableCompressionContract.Position_X] = Math.Round(collidable.MovementController.Position.x, 2); result[_collidableCompressionContract.Position_Y] = Math.Round(collidable.MovementController.Position.y, 2); result[_collidableCompressionContract.Position_Z] = Math.Round(collidable.MovementController.Position.z, 2); result[_collidableCompressionContract.Velocity_X] = Math.Round(collidable.MovementController.Velocity.x, 2); result[_collidableCompressionContract.Velocity_Y] = Math.Round(collidable.MovementController.Velocity.y, 2); result[_collidableCompressionContract.Velocity_Z] = Math.Round(collidable.MovementController.Velocity.z, 2); result[_collidableCompressionContract.Rotation] = Math.Round(collidable.MovementController.Rotation, 2); }
public virtual void HandleCollisionWith(Collidable obj) { Colliding = true; }
public DeathEventArgs(Collidable killedBy) { KilledBy = killedBy; }