implement ActionType with void actions
This commit is contained in:
parent
2bae0582f9
commit
b517bd6b87
2 changed files with 29 additions and 6 deletions
|
@ -15,6 +15,8 @@ namespace Goldenwere.GWSU.CTRL.CHAR.InputSystemModule
|
|||
public Action<InputAction.CallbackContext> started;
|
||||
}
|
||||
|
||||
public bool preferToggledInputs;
|
||||
|
||||
private Dictionary<Guid, Callbacks> registeredCallbacks;
|
||||
|
||||
private Dictionary<Guid, Callbacks> RegisteredCallbacks
|
||||
|
@ -33,16 +35,35 @@ namespace Goldenwere.GWSU.CTRL.CHAR.InputSystemModule
|
|||
{
|
||||
if (TryGetReference(_action.Emitter, out InputActionReference _reference))
|
||||
{
|
||||
Action<InputAction.CallbackContext> canceled = (InputAction.CallbackContext ctx) =>
|
||||
{
|
||||
switch (_action.Type)
|
||||
{
|
||||
case ModuleActionType.HeldOrPressed:
|
||||
if (!preferToggledInputs)
|
||||
{
|
||||
_action.Listener.Invoke();
|
||||
}
|
||||
break;
|
||||
case ModuleActionType.Held:
|
||||
_action.Listener.Invoke();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
Action<InputAction.CallbackContext> performed = (InputAction.CallbackContext ctx) =>
|
||||
{
|
||||
_action.Listener.Invoke();
|
||||
};
|
||||
|
||||
_reference.action.canceled += canceled;
|
||||
_reference.action.performed += performed;
|
||||
RegisteredCallbacks.Add
|
||||
(
|
||||
_action.GUID,
|
||||
new Callbacks
|
||||
{
|
||||
canceled = canceled,
|
||||
performed = performed,
|
||||
}
|
||||
);
|
||||
|
@ -102,7 +123,9 @@ namespace Goldenwere.GWSU.CTRL.CHAR.InputSystemModule
|
|||
{
|
||||
if (CheckForCallback(_id))
|
||||
{
|
||||
_reference.action.canceled -= RegisteredCallbacks[_id].canceled;
|
||||
_reference.action.performed -= RegisteredCallbacks[_id].performed;
|
||||
_reference.action.started -= RegisteredCallbacks[_id].started;
|
||||
RegisteredCallbacks.Remove(_id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,34 +10,34 @@ namespace Goldenwere.GWSU.CTRL.CHAR.InputSystemModule.SampleProject
|
|||
[SerializeField] private ScriptableObject emitterOnJump;
|
||||
[SerializeField] private ScriptableObject emitterOnMovement;
|
||||
|
||||
private BaseModuleAction<bool> actionOnCrouch;
|
||||
private BaseModuleAction actionOnCrouch;
|
||||
private BaseModuleAction actionOnJump;
|
||||
private BaseModuleAction<Vector2> actionOnMovement;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
actionOnCrouch = new BaseModuleAction<bool>(OnCrouch, emitterOnCrouch, ModuleActionType.HeldOrPressed);
|
||||
actionOnCrouch = new BaseModuleAction(OnCrouch, emitterOnCrouch, ModuleActionType.HeldOrPressed);
|
||||
actionOnJump = new BaseModuleAction(OnJump, emitterOnJump, ModuleActionType.Pressed);
|
||||
actionOnMovement = new BaseModuleAction<Vector2>(OnMovement, emitterOnJump, ModuleActionType.Held);
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
//module.RegisterModuleAction(actionOnCrouch);
|
||||
module.RegisterModuleAction(actionOnCrouch);
|
||||
module.RegisterModuleAction(actionOnJump);
|
||||
//module.RegisterModuleAction(actionOnMovement);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
//module.UnregisterModuleAction(actionOnCrouch);
|
||||
module.UnregisterModuleAction(actionOnCrouch);
|
||||
module.UnregisterModuleAction(actionOnJump);
|
||||
//module.UnregisterModuleAction(actionOnMovement);
|
||||
}
|
||||
|
||||
private void OnCrouch(bool pressed)
|
||||
private void OnCrouch()
|
||||
{
|
||||
Debug.Log($"Crouch was {(pressed ? "pressed" : "released")}");
|
||||
Debug.Log($"Crouched");
|
||||
}
|
||||
|
||||
private void OnJump()
|
||||
|
|
Loading…
Add table
Reference in a new issue