/// <summary>
        /// Attempt to possess a MoveComponent.
        /// </summary>
        /// <param name="mover">The MoveComponent to possess.</param>
        public void PossessMover(MoveComponent mover)
        {
            if (mover != null && !_movers.Contains(mover))
            {
                _movers.Add(mover);

                if (mover.Controller != this)
                    mover.Possess(this);

                _possessedMover(mover);
            }
        }
        /// <summary>
        /// Unpossess the specified MoveComponent. Removes the specified MoveComponent from our list of controlled movers.
        /// </summary>
        /// <param name="mover">The MoveComponent to be unpossessed by this MoveController.</param>
        public void UnpossessMover(MoveComponent mover)
        {
            if (mover != null && _movers.Contains(mover))
            {
                _movers.Remove(mover);

                if (mover.Controller == this)
                    mover.Unpossess();

                _unpossessedMover(mover);
            }
        }
 /// <summary>
 /// Check if this MoveController is currently possessing the specified MoveComponent.
 /// </summary>
 /// <param name="mover">The MoveComponent to check for.</param>
 /// <returns>True if the specified MoveComponent is in our list of controlled movers.</returns>
 public bool IsPossessing(MoveComponent mover)
 {
     return _movers.Contains(mover);
 }
 /// <summary>
 /// Callback after a MoveComponent is successfully unpossessed by this MoveController.
 /// </summary>
 /// <param name="mover">The MoveComponent that was just unposessed.</param>
 protected virtual void _unpossessedMover(MoveComponent mover)
 {
 }