internal bool Approach(Animal who, IWithMass to, TimeSpan elapsed) { float xMoveAmount = 0; float yMoveAmount = 0; var multiplier = (float)(who.MovementSpeed * elapsed.TotalSeconds); if (who.Mass.PosX <= to.Mass.PosX) { xMoveAmount = 1 * multiplier; } else { xMoveAmount = -1 * multiplier; } if (who.Mass.PosY <= to.Mass.PosY) { yMoveAmount = 1 * multiplier; } else { yMoveAmount = -1 * multiplier; } return(SetNewPosition(who, xMoveAmount, yMoveAmount)); }
internal float Distance(IWithMass a, IWithMass b) { return(Distance(a.Mass.PosX, a.Mass.PosY, b.Mass.PosX, b.Mass.PosY)); }
internal bool IsEnoughCloseToInteract(Animal who, IWithMass withWho) { return(who.Mass.Intersects(withWho.Mass)); }