/// <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) { }