Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Input/actionInputDelaySystem.cs

94 lines
1.6 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class actionInputDelaySystem : MonoBehaviour
{
[Header ("Main Settings")]
[Space]
public bool checkInputEnabled = true;
public float actionDelay;
public bool useLowerDelay;
public pressType pressTypeCheck;
[Space]
[Header ("Debug")]
[Space]
public bool pressedDown;
public bool previousPressedDown;
public bool eventTriggered;
[Space]
[Header ("Event Settings")]
[Space]
public UnityEvent actionEvent;
public enum pressType
{
hold,
up
}
float lastTimePressedDown;
public void inputSetPressedDownState ()
{
if (!checkInputEnabled) {
return;
}
pressedDown = true;
if (previousPressedDown != pressedDown) {
previousPressedDown = pressedDown;
lastTimePressedDown = Time.time;
eventTriggered = false;
}
if (!eventTriggered && pressTypeCheck == pressType.hold && Time.time > lastTimePressedDown + actionDelay) {
actionEvent.Invoke ();
eventTriggered = true;
}
}
public void inpuSetPressedUpState ()
{
if (!checkInputEnabled) {
return;
}
pressedDown = false;
if (previousPressedDown != pressedDown) {
previousPressedDown = pressedDown;
eventTriggered = false;
}
if (!eventTriggered && pressTypeCheck == pressType.up) {
if (useLowerDelay) {
if (Time.time < lastTimePressedDown + actionDelay) {
actionEvent.Invoke ();
eventTriggered = true;
}
} else {
if (Time.time > lastTimePressedDown + actionDelay) {
actionEvent.Invoke ();
eventTriggered = true;
}
}
}
}
}