rabidus-test/Assets/Scripts/DoubleTriggerAction.cs

62 lines
1.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
public class DoubleTriggerAction : MonoBehaviour
{
public InputActionReference LeftTrigger;
public InputActionReference RightTrigger;
private float _currentValue = 0;
private bool _visorActivated = false;
public UnityEvent OnActivated = new UnityEvent();
public UnityEvent<float> OnValueChanged = new UnityEvent<float>();
public bool AutoAction = false;
private void Start()
{
if (AutoAction)
{
ActivateVisor();
}
}
private void Update()
{
if (_visorActivated)
return;
if (RightTrigger.action.inProgress && LeftTrigger.action.inProgress)
{
_currentValue = Mathf.Clamp01(_currentValue + Time.deltaTime);
}
else
{
_currentValue = Mathf.Clamp01(_currentValue - Time.deltaTime);
}
UpdateVisorValue();
}
private void UpdateVisorValue()
{
OnValueChanged?.Invoke(_currentValue);
if (_currentValue == 1)
{
ActivateVisor();
}
}
[ContextMenu("Debug activate")]
private void ActivateVisor()
{
_visorActivated = true;
OnActivated?.Invoke();
}
}