diff --git a/Implementations.meta b/Implementations.meta new file mode 100644 index 0000000..c14cbc9 --- /dev/null +++ b/Implementations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15528ebd51d27d54398c55826710f23e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/2D.meta b/Implementations/2D.meta similarity index 100% rename from 2D.meta rename to Implementations/2D.meta diff --git a/Implementations/2D/OneDirectional2DAirMovement.cs b/Implementations/2D/OneDirectional2DAirMovement.cs new file mode 100644 index 0000000..c066506 --- /dev/null +++ b/Implementations/2D/OneDirectional2DAirMovement.cs @@ -0,0 +1,40 @@ +using Syntriax.Modules.Movement.ColliderTrigger; +using UnityEngine; + +namespace Syntriax.Modules.Movement.Implementations.TwoDimensional +{ + public class OneDirectional2DAirMovement : OneDirectional2DMovementBase + { + protected override float moveValue { get; set; } = 0f; + protected IGroundTrigger groundTrigger = null; + + protected override void Start() + { + base.Start(); + groundTrigger = GetComponentInChildren(); + groundTrigger.OnTriggered.AddListener(OnGroundTrigger); + } + + private void OnGroundTrigger(bool isGrounded) + => CanTakeOver = !isGrounded; + + public override void ApplyMovement() + { + Vector2 velocity = rigid.velocity; + velocity.x += moveValue * Time.fixedDeltaTime; + + if (moveValue != 0f) + { + if (Mathf.Abs(velocity.x) > Mathf.Abs(moveValue)) + velocity.x = moveValue; + else if (Mathf.Abs(velocity.x - moveValue) > Mathf.Abs(moveValue)) + velocity.x += moveValue * Time.fixedDeltaTime; + } + + rigid.velocity = velocity; + } + + protected override void OnDeactivated() { } + protected override void OnActivated() { } + } +} diff --git a/2D/OneWay2DAirMovement.cs.meta b/Implementations/2D/OneDirectional2DAirMovement.cs.meta similarity index 100% rename from 2D/OneWay2DAirMovement.cs.meta rename to Implementations/2D/OneDirectional2DAirMovement.cs.meta diff --git a/Implementations/2D/OneDirectional2DGroundMovement.cs b/Implementations/2D/OneDirectional2DGroundMovement.cs new file mode 100644 index 0000000..3be80fd --- /dev/null +++ b/Implementations/2D/OneDirectional2DGroundMovement.cs @@ -0,0 +1,31 @@ +using Syntriax.Modules.Movement.ColliderTrigger; +using UnityEngine; + +namespace Syntriax.Modules.Movement.Implementations.TwoDimensional +{ + public class OneDirectional2DGroundMovement : OneDirectional2DMovementBase + { + protected override float moveValue { get; set; } = 0f; + protected IGroundTrigger groundTrigger = null; + + protected override void Start() + { + base.Start(); + groundTrigger = GetComponentInChildren(); + groundTrigger.OnTriggered.AddListener(OnGroundTrigger); + } + + private void OnGroundTrigger(bool isGrounded) + => CanTakeOver = isGrounded; + + public override void ApplyMovement() + { + Vector2 velocity = rigid.velocity; + velocity.x = moveValue; + rigid.velocity = velocity; + } + + protected override void OnDeactivated() { } + protected override void OnActivated() { } + } +} diff --git a/2D/OneWay2DGroundMovement.cs.meta b/Implementations/2D/OneDirectional2DGroundMovement.cs.meta similarity index 100% rename from 2D/OneWay2DGroundMovement.cs.meta rename to Implementations/2D/OneDirectional2DGroundMovement.cs.meta diff --git a/Implementations/2D/OneDirectional2DMovementBase.cs b/Implementations/2D/OneDirectional2DMovementBase.cs new file mode 100644 index 0000000..3af4d9a --- /dev/null +++ b/Implementations/2D/OneDirectional2DMovementBase.cs @@ -0,0 +1,10 @@ +namespace Syntriax.Modules.Movement.Implementations.TwoDimensional +{ + public abstract class OneDirectional2DMovementBase : TwoDimensionalMovementBase + { + protected abstract float moveValue { get; set; } + + public override void Move(float x = 0, float y = 0, float z = 0) + => moveValue = x * BaseSpeed * MovementMultiplier; + } +} diff --git a/2D/OneWay2DMovementBase.cs.meta b/Implementations/2D/OneDirectional2DMovementBase.cs.meta similarity index 100% rename from 2D/OneWay2DMovementBase.cs.meta rename to Implementations/2D/OneDirectional2DMovementBase.cs.meta diff --git a/2D/OneWay2DAirMovement.cs b/Implementations/2D/OneWay2DAirMovement.cs similarity index 94% rename from 2D/OneWay2DAirMovement.cs rename to Implementations/2D/OneWay2DAirMovement.cs index c25070c..463c2d8 100644 --- a/2D/OneWay2DAirMovement.cs +++ b/Implementations/2D/OneWay2DAirMovement.cs @@ -1,7 +1,7 @@ using Syntriax.Modules.Movement.ColliderTrigger; using UnityEngine; -namespace Syntriax.Modules.Movement.TwoDimensionalImplementations +namespace Syntriax.Modules.Movement.Implementations.TwoDimensional { public class OneWay2DAirMovement : OneWay2DMovementBase { diff --git a/Implementations/2D/OneWay2DAirMovement.cs.meta b/Implementations/2D/OneWay2DAirMovement.cs.meta new file mode 100644 index 0000000..a1d0e9a --- /dev/null +++ b/Implementations/2D/OneWay2DAirMovement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccd6df43b281de34fb8ea893de8ec4c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/2D/OneWay2DGroundMovement.cs b/Implementations/2D/OneWay2DGroundMovement.cs similarity index 92% rename from 2D/OneWay2DGroundMovement.cs rename to Implementations/2D/OneWay2DGroundMovement.cs index f0d7154..544888e 100644 --- a/2D/OneWay2DGroundMovement.cs +++ b/Implementations/2D/OneWay2DGroundMovement.cs @@ -1,7 +1,7 @@ using Syntriax.Modules.Movement.ColliderTrigger; using UnityEngine; -namespace Syntriax.Modules.Movement.TwoDimensionalImplementations +namespace Syntriax.Modules.Movement.Implementations.TwoDimensional { public class OneWay2DGroundMovement : OneWay2DMovementBase { diff --git a/Implementations/2D/OneWay2DGroundMovement.cs.meta b/Implementations/2D/OneWay2DGroundMovement.cs.meta new file mode 100644 index 0000000..b60062a --- /dev/null +++ b/Implementations/2D/OneWay2DGroundMovement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7b798018f7cc444c92f7f17b0501bc7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/2D/OneWay2DMovementBase.cs b/Implementations/2D/OneWay2DMovementBase.cs similarity index 81% rename from 2D/OneWay2DMovementBase.cs rename to Implementations/2D/OneWay2DMovementBase.cs index 2883eb7..7a19b3a 100644 --- a/2D/OneWay2DMovementBase.cs +++ b/Implementations/2D/OneWay2DMovementBase.cs @@ -1,4 +1,4 @@ -namespace Syntriax.Modules.Movement.TwoDimensionalImplementations +namespace Syntriax.Modules.Movement.Implementations.TwoDimensional { public abstract class OneWay2DMovementBase : TwoDimensionalMovementBase { diff --git a/Implementations/2D/OneWay2DMovementBase.cs.meta b/Implementations/2D/OneWay2DMovementBase.cs.meta new file mode 100644 index 0000000..c060f75 --- /dev/null +++ b/Implementations/2D/OneWay2DMovementBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 842775d6c36b58f40a18f3d930e04173 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/2D/TwoDimensionalMovementBase.cs b/Implementations/2D/TwoDimensionalMovementBase.cs similarity index 96% rename from 2D/TwoDimensionalMovementBase.cs rename to Implementations/2D/TwoDimensionalMovementBase.cs index dfa3d20..fa7c5ed 100644 --- a/2D/TwoDimensionalMovementBase.cs +++ b/Implementations/2D/TwoDimensionalMovementBase.cs @@ -2,7 +2,7 @@ using Syntriax.Modules.Movement.State; using UnityEngine; using UnityEngine.Events; -namespace Syntriax.Modules.Movement.TwoDimensionalImplementations +namespace Syntriax.Modules.Movement.Implementations.TwoDimensional { [RequireComponent(typeof(Rigidbody2D))] public abstract class TwoDimensionalMovementBase : MonoBehaviour, IMovement diff --git a/2D/TwoDimensionalMovementBase.cs.meta b/Implementations/2D/TwoDimensionalMovementBase.cs.meta similarity index 100% rename from 2D/TwoDimensionalMovementBase.cs.meta rename to Implementations/2D/TwoDimensionalMovementBase.cs.meta