public bool ActorIsAboutToWalkInto(IMoveable movingObject) { var distance = movingObject.Position.Center.GetDistanceInDirection(Position.GetSidePoint(movingObject.Direction.Opposite()), movingObject.Direction); if (distance <= movingObject.Position.Width) { return(true); } var distancePerFrame = movingObject.Motion.FrameVelocity.X.Abs(); var framesUntilHit = (int)distance / distancePerFrame; return(framesUntilHit <= 30); }