Added OnMovement Activated&Deactivated to the IMovementController
This commit is contained in:
parent
a991c05fad
commit
e35cdcb069
|
@ -33,5 +33,8 @@ namespace Syntriax.Modules.Movement
|
||||||
|
|
||||||
rigid.velocity = velocity;
|
rigid.velocity = velocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnDeactivated() { }
|
||||||
|
protected override void OnActivated() { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,5 +24,8 @@ namespace Syntriax.Modules.Movement
|
||||||
velocity.x = moveValue;
|
velocity.x = moveValue;
|
||||||
rigid.velocity = velocity;
|
rigid.velocity = velocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnDeactivated() { }
|
||||||
|
protected override void OnActivated() { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
protected Rigidbody2D rigid = null;
|
protected Rigidbody2D rigid = null;
|
||||||
protected IToggleState toggleState = null;
|
protected IToggleState toggleState = null;
|
||||||
|
protected IMovementController movementController = null;
|
||||||
private bool _canTakeOver = false;
|
private bool _canTakeOver = false;
|
||||||
|
|
||||||
public float BaseSpeed { get; set; } = 1f;
|
public float BaseSpeed { get; set; } = 1f;
|
||||||
|
@ -40,6 +41,26 @@ namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
rigid = GetComponent<Rigidbody2D>();
|
rigid = GetComponent<Rigidbody2D>();
|
||||||
toggleState = GetComponent<ToggleState>();
|
toggleState = GetComponent<ToggleState>();
|
||||||
|
movementController = GetComponent<IMovementController>();
|
||||||
|
|
||||||
|
movementController.OnMovementActivated.AddListener(OnActivated);
|
||||||
|
movementController.OnMovementDeactivated.AddListener(OnDeactivated);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void OnDeactivated();
|
||||||
|
private void OnDeactivated(IMovement movement)
|
||||||
|
{
|
||||||
|
if ((object)movement != this)
|
||||||
|
return;
|
||||||
|
OnDeactivated();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void OnActivated();
|
||||||
|
private void OnActivated(IMovement movement)
|
||||||
|
{
|
||||||
|
if ((object)movement != this)
|
||||||
|
return;
|
||||||
|
OnActivated();
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void Move(float x = 0, float y = 0, float z = 0);
|
public abstract void Move(float x = 0, float y = 0, float z = 0);
|
||||||
|
|
|
@ -7,7 +7,9 @@ namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
IMovement ActiveMovement { get; }
|
IMovement ActiveMovement { get; }
|
||||||
List<IMovement> Movements { get; }
|
List<IMovement> Movements { get; }
|
||||||
UnityEvent<IMovement> OnMovementChanged { get; }
|
|
||||||
|
UnityEvent<IMovement> OnMovementDeactivated { get; }
|
||||||
|
UnityEvent<IMovement> OnMovementActivated { get; }
|
||||||
|
|
||||||
void RecacheMovements();
|
void RecacheMovements();
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,25 +7,35 @@ namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
public class MovementController : MonoBehaviour, IMovementController
|
public class MovementController : MonoBehaviour, IMovementController
|
||||||
{
|
{
|
||||||
public UnityEvent<IMovement> OnMovementChanged { get; protected set; } = null;
|
public UnityEvent<IMovement> OnMovementDeactivated { get; protected set; } = null;
|
||||||
|
public UnityEvent<IMovement> OnMovementActivated { get; protected set; } = null;
|
||||||
|
|
||||||
private IMovement _activeMovement = null;
|
private IMovement _activeMovement = null;
|
||||||
public IMovement ActiveMovement
|
public IMovement ActiveMovement
|
||||||
{
|
{
|
||||||
get => _activeMovement;
|
get => _activeMovement;
|
||||||
protected set
|
protected set
|
||||||
{
|
{
|
||||||
|
if (_activeMovement == value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
IMovement oldMovement = _activeMovement;
|
||||||
|
|
||||||
_activeMovement = value;
|
_activeMovement = value;
|
||||||
OnMovementChanged.Invoke(value);
|
OnMovementDeactivated.Invoke(oldMovement);
|
||||||
|
OnMovementActivated.Invoke(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IMovement> Movements { get; protected set; } = null;
|
public List<IMovement> Movements { get; protected set; } = null;
|
||||||
|
|
||||||
|
|
||||||
protected IToggleState toggleState = null;
|
protected IToggleState toggleState = null;
|
||||||
|
|
||||||
protected virtual void Awake()
|
protected virtual void Awake()
|
||||||
{
|
{
|
||||||
OnMovementChanged = new UnityEvent<IMovement>();
|
OnMovementDeactivated = new UnityEvent<IMovement>();
|
||||||
|
OnMovementActivated = new UnityEvent<IMovement>();
|
||||||
Movements = new List<IMovement>(32);
|
Movements = new List<IMovement>(32);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: f9a57082945be29498d2785f8be6484d
|
guid: e5a74cc1b761aae448c854eb652fcc13
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
|
@ -40,7 +40,16 @@ namespace Syntriax.Modules.Movement.VariableMovement
|
||||||
protected virtual void Start()
|
protected virtual void Start()
|
||||||
{
|
{
|
||||||
movementController = GetComponent<IMovementController>();
|
movementController = GetComponent<IMovementController>();
|
||||||
movementController.OnMovementChanged.AddListener(SetMultiplierToActiveMovement);
|
movementController.OnMovementActivated.AddListener(SetMultiplierToActiveMovement);
|
||||||
|
movementController.OnMovementDeactivated.AddListener(ResetMultiplierToDefault);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ResetMultiplierToDefault(IMovement currentMovement)
|
||||||
|
{
|
||||||
|
if (!isSet)
|
||||||
|
return;
|
||||||
|
|
||||||
|
currentMovement.MovementMultiplier = defaultVariableMovement.Asset.Multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetMultiplierToActiveMovement(IMovement currentMovement)
|
protected void SetMultiplierToActiveMovement(IMovement currentMovement)
|
||||||
|
|
Loading…
Reference in New Issue