Added Movements List to the IMovementController + Code Improvement
This commit is contained in:
@@ -3,17 +3,32 @@ using Syntriax.Modules.Movement.State;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
|
||||
namespace Syntriax.Modules.Movement
|
||||
{
|
||||
public class MovementController : MonoBehaviour, IMovementController
|
||||
{
|
||||
public IMovement ActiveMovement { get; protected set; } = null;
|
||||
public UnityEvent<IMovement> OnMovementChanged { get; protected set; } = new UnityEvent<IMovement>();
|
||||
public UnityEvent<IMovement> OnMovementChanged { get; protected set; } = null;
|
||||
private IMovement _activeMovement = null;
|
||||
public IMovement ActiveMovement
|
||||
{
|
||||
get => _activeMovement;
|
||||
protected set
|
||||
{
|
||||
_activeMovement = value;
|
||||
OnMovementChanged.Invoke(value);
|
||||
}
|
||||
}
|
||||
|
||||
public List<IMovement> Movements { get; protected set; } = null;
|
||||
|
||||
protected List<IMovement> movements = new List<IMovement>(32);
|
||||
protected IToggleState toggleState = null;
|
||||
|
||||
protected virtual void Awake()
|
||||
{
|
||||
OnMovementChanged = new UnityEvent<IMovement>();
|
||||
Movements = new List<IMovement>(32);
|
||||
}
|
||||
|
||||
protected virtual void Start()
|
||||
{
|
||||
toggleState = GetComponent<IToggleState>();
|
||||
@@ -30,14 +45,14 @@ namespace Syntriax.Modules.Movement
|
||||
|
||||
public virtual void RecacheMovements()
|
||||
{
|
||||
foreach (IMovement movement in movements)
|
||||
foreach (IMovement movement in Movements)
|
||||
movement.OnTakeOverStateChanged.RemoveListener(OnTakeOverListener);
|
||||
|
||||
movements.Clear();
|
||||
GetComponents<IMovement>(movements);
|
||||
Movements.Clear();
|
||||
GetComponents<IMovement>(Movements);
|
||||
UpdateActiveMovement();
|
||||
|
||||
foreach (IMovement movement in movements)
|
||||
foreach (IMovement movement in Movements)
|
||||
movement.OnTakeOverStateChanged.AddListener(OnTakeOverListener);
|
||||
|
||||
}
|
||||
@@ -46,16 +61,14 @@ namespace Syntriax.Modules.Movement
|
||||
|
||||
protected virtual void UpdateActiveMovement()
|
||||
{
|
||||
foreach (IMovement movement in movements)
|
||||
foreach (IMovement movement in Movements)
|
||||
if (movement.CanTakeOver)
|
||||
{
|
||||
ActiveMovement = movement;
|
||||
OnMovementChanged.Invoke(ActiveMovement);
|
||||
return;
|
||||
}
|
||||
|
||||
ActiveMovement = movements[movements.Count - 1];
|
||||
OnMovementChanged.Invoke(ActiveMovement);
|
||||
ActiveMovement = Movements[Movements.Count - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user