0.2.0
This commit is contained in:
commit
9544046ce7
|
@ -1,6 +1,6 @@
|
||||||
# Action
|
# Action
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
1. [ToggleState Module](https://git.syntriax.com/Syntriax/ToggleState)
|
1. [State Module](https://git.syntriax.com/Syntriax/State)
|
||||||
|
|
||||||
Make sure to separately clone these modules along with this one too.
|
Make sure to separately clone these modules along with this one too.
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
using System;
|
||||||
|
using Syntriax.Modules.State;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Syntriax.Modules.Action
|
||||||
|
{
|
||||||
|
public class Action : MonoBehaviour, IAction
|
||||||
|
{
|
||||||
|
private IStateEnable _stateEnable = null;
|
||||||
|
public IStateEnable StateEnable
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
_stateEnable = _stateEnable ?? GetComponent<State.IStateEnable>() ?? gameObject.AddComponent<State.StateEnableMonoBehaviour>();
|
||||||
|
return _stateEnable;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Action<IAction> OnActivated { get; set; } = null;
|
||||||
|
|
||||||
|
public void Activate()
|
||||||
|
{
|
||||||
|
if (!StateEnable.IsEnabledNullChecked())
|
||||||
|
return;
|
||||||
|
|
||||||
|
OnActivated?.Invoke(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: d07cd6f6a7a635c41add4964a6aba382
|
guid: f0778370286865d42a8453967944ab67
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
|
@ -1,33 +0,0 @@
|
||||||
using System;
|
|
||||||
using Syntriax.Modules.ToggleState;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace Syntriax.Modules.Action
|
|
||||||
{
|
|
||||||
public abstract class ActionBase : MonoBehaviour, IAction
|
|
||||||
{
|
|
||||||
public IToggleState MemberToggleState { get; protected set; } = null;
|
|
||||||
public Action<IAction> OnActivated { get; set; } = null;
|
|
||||||
|
|
||||||
protected IToggleState toggleState = null;
|
|
||||||
|
|
||||||
protected virtual void Awake()
|
|
||||||
{
|
|
||||||
toggleState = GetComponent<IToggleState>();
|
|
||||||
MemberToggleState = new ToggleStateMember(true);
|
|
||||||
OnActivated += (_) => OnActionActivated();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Called when the current <see cref="ActionBase"/> gets activated
|
|
||||||
/// </summary>
|
|
||||||
protected abstract void OnActionActivated();
|
|
||||||
public virtual void Activate()
|
|
||||||
{
|
|
||||||
if (!MemberToggleState.IsToggledNullChecked() || !toggleState.IsToggledNullChecked())
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnActivated?.Invoke(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
using System;
|
|
||||||
using Syntriax.Modules.ToggleState;
|
|
||||||
|
|
||||||
namespace Syntriax.Modules.Action
|
|
||||||
{
|
|
||||||
public abstract class ActionBaseWithDeactivation : ActionBase, IActionWithDeactivation
|
|
||||||
{
|
|
||||||
public Action<IAction> OnDeactivated { get; set; } = null;
|
|
||||||
|
|
||||||
protected override void Awake()
|
|
||||||
{
|
|
||||||
base.Awake();
|
|
||||||
OnDeactivated += (_) => OnActionDeactivated();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Called when the current <see cref="ActionBase"/> gets deactivated
|
|
||||||
/// </summary>
|
|
||||||
protected abstract void OnActionDeactivated();
|
|
||||||
public virtual void Deactivate()
|
|
||||||
{
|
|
||||||
if (!MemberToggleState.IsToggledNullChecked() || !toggleState.IsToggledNullChecked())
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnDeactivated?.Invoke(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System;
|
||||||
|
using Syntriax.Modules.State;
|
||||||
|
|
||||||
|
namespace Syntriax.Modules.Action
|
||||||
|
{
|
||||||
|
public class ActionWithDeactivation : Action, IActionWithDeactivation
|
||||||
|
{
|
||||||
|
public Action<IAction> OnDeactivated { get; set; } = null;
|
||||||
|
|
||||||
|
public void Deactivate()
|
||||||
|
{
|
||||||
|
if (!StateEnable.IsEnabledNullChecked())
|
||||||
|
return;
|
||||||
|
|
||||||
|
OnDeactivated?.Invoke(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 7bce8bd8b35a51f4785a3933e3526ddf
|
guid: c41fb1050f19d6c479295ba680295261
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
|
@ -1,14 +1,14 @@
|
||||||
using System;
|
using System;
|
||||||
using Syntriax.Modules.ToggleState;
|
using Syntriax.Modules.State;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Action
|
namespace Syntriax.Modules.Action
|
||||||
{
|
{
|
||||||
public interface IAction
|
public interface IAction
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The member <see cref="IToggleState"/> the Action uses to check if it's active or not
|
/// The member <see cref="IStateEnable"/> the Action uses to check if it's active or not
|
||||||
/// </summary>
|
/// </summary>
|
||||||
IToggleState MemberToggleState { get; }
|
IStateEnable StateEnable { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when the <see cref="IAction"/> is Activated
|
/// Called when the <see cref="IAction"/> is Activated
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using Syntriax.Modules.ToggleState;
|
using Syntriax.Modules.State;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Action.Samples
|
namespace Syntriax.Modules.Action.Samples
|
||||||
{
|
{
|
||||||
[RequireComponent(typeof(Rigidbody2D))]
|
[RequireComponent(typeof(Rigidbody2D))]
|
||||||
public class PlatformerJump : ActionBaseWithDeactivation
|
public class PlatformerJump : ActionWithDeactivation
|
||||||
{
|
{
|
||||||
[SerializeField] private float jumpSpeed = 10f;
|
[SerializeField] private float jumpSpeed = 10f;
|
||||||
public float JumpSpeed { get => jumpSpeed; set => jumpSpeed = value; }
|
public float JumpSpeed { get => jumpSpeed; set => jumpSpeed = value; }
|
||||||
|
@ -25,22 +25,25 @@ namespace Syntriax.Modules.Action.Samples
|
||||||
set => suspensionMultiplier = value * Time.fixedDeltaTime;
|
set => suspensionMultiplier = value * Time.fixedDeltaTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected IToggleState gameObjectToggleState = null;
|
protected IStateEnable gameObjectStateEnable = null;
|
||||||
protected bool airSuspension = false;
|
protected bool airSuspension = false;
|
||||||
protected Rigidbody2D rigid = null;
|
protected Rigidbody2D rigid = null;
|
||||||
|
|
||||||
protected virtual void Start()
|
protected virtual void Start()
|
||||||
{
|
{
|
||||||
rigid = GetComponent<Rigidbody2D>();
|
rigid = GetComponent<Rigidbody2D>();
|
||||||
gameObjectToggleState = GetComponent<IToggleState>();
|
gameObjectStateEnable = GetComponent<IStateEnable>();
|
||||||
|
|
||||||
FallMultiplier = fallMultiplier;
|
FallMultiplier = fallMultiplier;
|
||||||
SuspensionMultiplier = suspensionMultiplier;
|
SuspensionMultiplier = suspensionMultiplier;
|
||||||
|
|
||||||
|
OnActivated += _ => OnActionDeactivated();
|
||||||
|
OnDeactivated += _ => OnActionActivated();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void FixedUpdate()
|
protected virtual void FixedUpdate()
|
||||||
{
|
{
|
||||||
if (!MemberToggleState.IsToggledNullChecked() || !gameObjectToggleState.IsToggledNullChecked())
|
if (!StateEnable.IsEnabledNullChecked() || !gameObjectStateEnable.IsEnabledNullChecked())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (rigid.velocity.y < FallThreshold)
|
if (rigid.velocity.y < FallThreshold)
|
||||||
|
@ -59,17 +62,17 @@ namespace Syntriax.Modules.Action.Samples
|
||||||
rigid.velocity = velocity;
|
rigid.velocity = velocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnActionDeactivated()
|
protected void OnActionDeactivated()
|
||||||
{
|
{
|
||||||
if (!gameObjectToggleState.IsToggledNullChecked())
|
if (!gameObjectStateEnable.IsEnabledNullChecked())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
airSuspension = false;
|
airSuspension = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnActionActivated()
|
protected void OnActionActivated()
|
||||||
{
|
{
|
||||||
if (!gameObjectToggleState.IsToggledNullChecked())
|
if (!gameObjectStateEnable.IsEnabledNullChecked())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Jump();
|
Jump();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "com.syntriax.action",
|
"name": "com.syntriax.action",
|
||||||
"version": "0.1.0",
|
"version": "0.2.0",
|
||||||
"displayName": "Action Module",
|
"displayName": "Action Module",
|
||||||
"unity": "2019.1",
|
"unity": "2019.1",
|
||||||
"documentationUrl": "https://git.syntriax.com/Syntriax/Action.git",
|
"documentationUrl": "https://git.syntriax.com/Syntriax/Action.git",
|
||||||
|
|
Loading…
Reference in New Issue