Controller Improvements
This commit is contained in:
		@@ -1,10 +1,16 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using Syntriax.Modules.ToggleState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Syntriax.Modules.Movement
 | 
					namespace Syntriax.Modules.Movement
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IMovementController
 | 
					    public interface IMovementController
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Member Toggle State
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        IToggleState ToggleState { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// Currently active <see cref="IMovement"/>
 | 
					        /// Currently active <see cref="IMovement"/>
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
@@ -27,6 +33,12 @@ namespace Syntriax.Modules.Movement
 | 
				
			|||||||
        /// <value>Actived <see cref="IMovement"/></value>
 | 
					        /// <value>Actived <see cref="IMovement"/></value>
 | 
				
			||||||
        Action<IMovement> OnMovementActivated { get; set; }
 | 
					        Action<IMovement> OnMovementActivated { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Called when <see cref="Move"/> is called
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <value>The x, y, z values of <see cref="Move"/></value>
 | 
				
			||||||
 | 
					        Action<float, float, float> OnMoveCalled { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// Updates the <see cref="Movements"/> list  
 | 
					        /// Updates the <see cref="Movements"/> list  
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,12 +8,12 @@ namespace Syntriax.Modules.Movement
 | 
				
			|||||||
        /// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector2"/>'s values accordingly, leaving the z parameter 0
 | 
					        /// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector2"/>'s values accordingly, leaving the z parameter 0
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        public static void Move(this IMovementController movementController, Vector2 moveVector)
 | 
					        public static void Move(this IMovementController movementController, Vector2 moveVector)
 | 
				
			||||||
            => movementController.ActiveMovement?.Move(moveVector.x, moveVector.y, 0f);
 | 
					            => movementController.Move(moveVector.x, moveVector.y, 0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector3"/>'s values accordingly
 | 
					        /// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector3"/>'s values accordingly
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        public static void Move(this IMovementController movementController, Vector3 moveVector)
 | 
					        public static void Move(this IMovementController movementController, Vector3 moveVector)
 | 
				
			||||||
            => movementController.ActiveMovement?.Move(moveVector.x, moveVector.y, moveVector.z);
 | 
					            => movementController.Move(moveVector.x, moveVector.y, moveVector.z);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,8 @@ namespace Syntriax.Modules.Movement
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public class MovementController : MonoBehaviour, IMovementController
 | 
					    public class MovementController : MonoBehaviour, IMovementController
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        public Action<float, float, float> OnMoveCalled { get; set; } = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Action<IMovement> OnMovementDeactivated { get; set; } = null;
 | 
					        public Action<IMovement> OnMovementDeactivated { get; set; } = null;
 | 
				
			||||||
        public Action<IMovement> OnMovementActivated { get; set; } = null;
 | 
					        public Action<IMovement> OnMovementActivated { get; set; } = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,12 +31,11 @@ namespace Syntriax.Modules.Movement
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public List<IMovement> Movements { get; protected set; } = null;
 | 
					        public List<IMovement> Movements { get; protected set; } = new List<IMovement>(32);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected IToggleState toggleState = null;
 | 
					        public IToggleState ToggleState { get; protected set; } = new ToggleStateMember(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected virtual void Awake()
 | 
					        protected IToggleState toggleStateOnGameObject = null;
 | 
				
			||||||
            => Movements = new List<IMovement>(32);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected virtual void Start()
 | 
					        protected virtual void Start()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -42,12 +43,12 @@ namespace Syntriax.Modules.Movement
 | 
				
			|||||||
                gameObject.AddComponent<Implementations.DefaultMovement>();
 | 
					                gameObject.AddComponent<Implementations.DefaultMovement>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            RecacheMovements();
 | 
					            RecacheMovements();
 | 
				
			||||||
            toggleState = GetComponent<IToggleState>();
 | 
					            toggleStateOnGameObject = GetComponent<IToggleState>();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected virtual void FixedUpdate()
 | 
					        protected virtual void FixedUpdate()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!toggleState.IsToggledNullChecked())
 | 
					            if (!ToggleState.IsToggledNullChecked() || !toggleStateOnGameObject.IsToggledNullChecked())
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ActiveMovement?.ApplyMovement();
 | 
					            ActiveMovement?.ApplyMovement();
 | 
				
			||||||
@@ -79,6 +80,9 @@ namespace Syntriax.Modules.Movement
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Move(float x = 0, float y = 0, float z = 0)
 | 
					        public void Move(float x = 0, float y = 0, float z = 0)
 | 
				
			||||||
            => ActiveMovement?.Move(x, y, z);
 | 
					        {
 | 
				
			||||||
 | 
					            ActiveMovement?.Move(x, y, z);
 | 
				
			||||||
 | 
					            OnMoveCalled?.Invoke(x, y, z);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user