protected void SolveCollision(PhysicalObject o) { ActionWithObject <PhysicalObject> lAction; if (mCollisionBehavior.TryGetValue(o.GetType(), out lAction)) { lAction(o); } }
public void SolveIfCollision(PhysicalObject o) { var lIsValidCollision = IsValidCollision(o); if (lIsValidCollision) { SolveCollision(o); } }
private bool IsValidCollision(PhysicalObject o) { if (!IsDestroyed && mInvincibleSteps == 0) { return(IsCollision(o)); } else { return(false); } }
private bool IsCollision(PhysicalObject o) { bool lIsCollision = false; foreach (var lMyCollisionMask in CollisionMask) { foreach (var lOthersCollisionmask in o.CollisionMask) { if (lMyCollisionMask.IsCollision(lOthersCollisionmask)) { lIsCollision = true; break; } } if (lIsCollision) { break; } } return(lIsCollision); }
protected void DefaultCollisionSolve(PhysicalObject o) { Destroy(); DestroyEffect(); }
public double SquaredDistance(PhysicalObject aOther) { return((mPosition.X - aOther.Position.X) * (mPosition.X - aOther.Position.X) + (mPosition.Y - aOther.Position.Y) * (mPosition.Y - aOther.Position.Y)); }
public double Distance(PhysicalObject aOther) { return(Math.Sqrt(SquaredDistance(aOther))); }