Movement/IMovementController.cs

41 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
namespace Syntriax.Modules.Movement
{
public interface IMovementController
{
/// <summary>
/// Currently active <see cref="IMovement"/>
/// </summary>
IMovement ActiveMovement { get; }
/// <summary>
/// List of all <see cref="IMovement"/>s controlled by this controller, can be updated by calling <see cref="RecacheMovements"/> method
/// </summary>
List<IMovement> Movements { get; }
/// <summary>
/// Called when a <see cref="IMovement"/> is deactivated when another <see cref="IMovement"/> takes over it's place
/// </summary>
/// <value>Deactived <see cref="IMovement"/></value>
Action<IMovement> OnMovementDeactivated { get; set; }
/// <summary>
/// Called when a new <see cref="IMovement"/> takes over by the controller
/// </summary>
/// <value>Actived <see cref="IMovement"/></value>
Action<IMovement> OnMovementActivated { get; set; }
/// <summary>
/// Updates the <see cref="Movements"/> list
/// </summary>
void RecacheMovements();
/// <summary>
/// Apply the movement data that <see cref="IMovement"/>s will use
/// </summary>
void Move(float x = 0, float y = 0, float z = 0);
}
}