diff --git a/Editor/DefinitionCreatorEditor.cs b/Editor/DefinitionCreatorEditor.cs
index f1257a5..4e49da0 100644
--- a/Editor/DefinitionCreatorEditor.cs
+++ b/Editor/DefinitionCreatorEditor.cs
@@ -99,7 +99,7 @@ namespace Syntriax.Modules.Movement.Editor
movementDefinition.MonoBehaviours = new string[]
{
typeof(MovementController).FullName,
- typeof(ToggleState.ToggleStateMonoBehaviour).FullName
+ typeof(State.StateEnableMonoBehaviour).FullName
};
UpdateSerializedObject();
@@ -142,8 +142,9 @@ namespace Syntriax.Modules.Movement.Editor
string jsonText = JsonUtility.ToJson(definition, true);
string path = $"Assets/Resources/{MovementDefinitionFactory.ResourceDirectoryToDefinitions}{definition.Name}.json";
- if (!EditorUtility.DisplayDialog("Conflict", $"\"{path}\" already exists, do you want to overwrite?", "Overwrite", "Cancel"))
- return;
+ if (System.IO.File.Exists($"{Application.dataPath}/Resources/{MovementDefinitionFactory.ResourceDirectoryToDefinitions}{definition.Name}.json"))
+ if (!EditorUtility.DisplayDialog("Conflict", $"\"{path}\" already exists, do you want to overwrite?", "Overwrite", "Cancel"))
+ return;
System.IO.File.WriteAllText(path, jsonText);
AssetDatabase.Refresh();
diff --git a/README.md b/README.md
index a493a49..f524668 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Movement (Work In Progress)
## Dependencies
-1. [ToggleState Module](https://git.syntriax.com/Syntriax/ToggleState)
+1. [State Module](https://git.syntriax.com/Syntriax/State)
2. [Trigger Module](https://git.syntriax.com/Syntriax/Trigger)
3. [Factory Module](https://git.syntriax.com/Syntriax/Factory)
@@ -32,7 +32,7 @@ Make sure to separately clone these modules along with this one too.
#### Longer
1. Clone the module to a folder in your Assets folder
-2. Add `ToggleStateMonoBehaviour` component to your Player `GameObject`
+2. Add `StateEnableMonoBehaviour` component to your Player `GameObject`
3. Add `MovementController` component to your Player `GameObject`
4. Add `AirMovement1D` component to your Player `GameObject`
5. Add `GroundMovement1D` component to your Player `GameObject` (make sure it's bellow `AirMovement1D`)
@@ -42,7 +42,7 @@ Make sure to separately clone these modules along with this one too.
---
-This should give you a movement where you can disable the controller through the `IToggleState`, and you should be able to see a the movement changes when the character is not touching the ground.
+This should give you a movement where you can disable the controller through the `IStateEnable`, and you should be able to see a the movement changes when the character is not touching the ground.
You can add your own movement implementations with bases under the `Bases` folder, or straight up from the `IMovement` interface.
diff --git a/Runtime/Bases/MovementBase.cs b/Runtime/Bases/MovementBase.cs
index 6b88214..3419f9a 100644
--- a/Runtime/Bases/MovementBase.cs
+++ b/Runtime/Bases/MovementBase.cs
@@ -1,12 +1,12 @@
using System;
-using Syntriax.Modules.ToggleState;
+using Syntriax.Modules.State;
using UnityEngine;
namespace Syntriax.Modules.Movement
{
public abstract class MovementBase : MonoBehaviour, IMovement
{
- protected IToggleState toggleState = null;
+ protected IStateEnable stateEnable = null;
protected IMovementController movementController = null;
public float BaseSpeed { get; set; } = 1f;
@@ -27,8 +27,6 @@ namespace Syntriax.Modules.Movement
}
}
- public IToggleState ToggleState { get; protected set; } = null;
-
///
public abstract void ApplyMovement();
@@ -46,7 +44,7 @@ namespace Syntriax.Modules.Movement
protected virtual void Start()
{
- toggleState = GetComponent();
+ stateEnable = GetComponent();
movementController = GetComponent();
movementController.OnMovementActivated += OnActivated;
diff --git a/Runtime/IMovementController.cs b/Runtime/IMovementController.cs
index d72295b..c01a1d6 100644
--- a/Runtime/IMovementController.cs
+++ b/Runtime/IMovementController.cs
@@ -1,15 +1,15 @@
using System;
using System.Collections.Generic;
-using Syntriax.Modules.ToggleState;
+using Syntriax.Modules.State;
namespace Syntriax.Modules.Movement
{
public interface IMovementController
{
///
- /// Member to switch on or off
+ /// to control the state of the is on or off
///
- IToggleState ToggleStateMember { get; }
+ IStateEnable StateEnable { get; }
///
/// Currently active
diff --git a/Runtime/MovementController.cs b/Runtime/MovementController.cs
index 729247e..cc9dfe2 100644
--- a/Runtime/MovementController.cs
+++ b/Runtime/MovementController.cs
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
-using Syntriax.Modules.ToggleState;
+using Syntriax.Modules.State;
using UnityEngine;
namespace Syntriax.Modules.Movement
@@ -31,13 +31,17 @@ namespace Syntriax.Modules.Movement
}
}
- private bool areBothToggleStatesToggled => ToggleStateMember.IsToggledNullChecked() && toggleStateOnGameObject.IsToggledNullChecked();
-
public List Movements { get; protected set; } = new List(32);
- public IToggleState ToggleStateMember { get; protected set; } = new ToggleStateMember(true);
-
- protected IToggleState toggleStateOnGameObject = null;
+ private IStateEnable _stateEnable = null;
+ public IStateEnable StateEnable
+ {
+ get
+ {
+ _stateEnable = _stateEnable ?? GetComponent() ?? gameObject.AddComponent();
+ return _stateEnable;
+ }
+ }
protected virtual void Start()
{
@@ -45,15 +49,14 @@ namespace Syntriax.Modules.Movement
gameObject.AddComponent();
RecacheMovements();
- toggleStateOnGameObject = GetComponent();
- toggleStateOnGameObject.OnToggleStateChanged += (_) => InvokeOnMoveAction();
- ToggleStateMember.OnToggleStateChanged += (_) => InvokeOnMoveAction();
+ StateEnable.OnEnabledChanged += (_) => InvokeOnMoveAction();
+ OnMovementActivated += (newMovement) => newMovement.Move(lastMove);
}
protected virtual void FixedUpdate()
{
- if (!areBothToggleStatesToggled)
+ if (!StateEnable.IsEnabledNullChecked())
return;
ActiveMovement?.ApplyMovement();
@@ -85,6 +88,7 @@ namespace Syntriax.Modules.Movement
}
private Vector3 lastMove = Vector3.zero;
+
public void Move(float x = 0, float y = 0, float z = 0)
{
ActiveMovement?.Move(x, y, z);
@@ -95,7 +99,7 @@ namespace Syntriax.Modules.Movement
private void InvokeOnMoveAction()
{
- if (!areBothToggleStatesToggled)
+ if (!StateEnable.IsEnabledNullChecked())
return;
OnMoveCalled?.Invoke(lastMove.x, lastMove.y, lastMove.z);
diff --git a/Samples/AirMovement1D.cs b/Samples/AirMovement1D.cs
index b7345b1..f1bf410 100644
--- a/Samples/AirMovement1D.cs
+++ b/Samples/AirMovement1D.cs
@@ -14,7 +14,7 @@ namespace Syntriax.Modules.Movement.Samples
{
base.Start();
- rigid = GetComponent();
+ rigid = GetComponentInParent();
groundTrigger = GetComponentInChildren();
if (groundTrigger != null)
diff --git a/Samples/GroundMovement1D.cs b/Samples/GroundMovement1D.cs
index 6f29b2b..cbb4d38 100644
--- a/Samples/GroundMovement1D.cs
+++ b/Samples/GroundMovement1D.cs
@@ -16,7 +16,7 @@ namespace Syntriax.Modules.Movement.Samples
{
base.Start();
- rigid = GetComponent();
+ rigid = GetComponentInParent();
groundTrigger = GetComponentInChildren();
if (groundTrigger != null)
diff --git a/package.json b/package.json
index a78c986..e8a5606 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
"name": "com.syntriax.movement",
- "version": "0.1.4",
+ "version": "0.2.0",
"displayName": "Movement Module",
- "description": "Dependends On:\nhttps://git.syntriax.com/Syntriax/ToggleState.git\nhttps://git.syntriax.com/Syntriax/Trigger.git\nhttps://git.syntriax.com/Syntriax/Factory.git",
+ "description": "Dependends On:\nhttps://git.syntriax.com/Syntriax/State.git\nhttps://git.syntriax.com/Syntriax/Trigger.git\nhttps://git.syntriax.com/Syntriax/Factory.git",
"unity": "2019.1",
"documentationUrl": "https://git.syntriax.com/Syntriax/Movement.git",
"dependencies": {