public void ForceMoveInto(CollisionMoveHit hit, float moveAmount)
        {
            ICollidable collidable      = CollidableHelpers.GetCollidable(hit.transform);
            float       collideDistance = hit.GetCollideDistance(moveAmount);

            collidable.OnPhysicsMoveInto(transform, collideDistance, hit.rayDirection, hit.point);
        }
        public float GetAllowedMoveInto(CollisionMoveHit hit, float wantToMove)
        {
            if (!hit.isTilemap && wantToMove <= hit.distanceToHit)
            {
                return(wantToMove);
            }
            ICollidable collidable = CollidableHelpers.GetCollidable(hit.transform);

            float collideDistance        = hit.GetCollideDistance(wantToMove);
            float allowedCollideDistance = collidable.GetAllowedMoveInto(transform, collideDistance, hit.rayDirection, hit.point);
            float allowedDistance        = allowedCollideDistance + hit.distanceToHit;

            return(Mathf.Clamp(allowedDistance, 0, wantToMove));
        }