71 lines
1.4 KiB
C#
71 lines
1.4 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public struct BufferedInput
|
|
{
|
|
public BufferedInput( float bufferTime )
|
|
{
|
|
_bufferTime = bufferTime;
|
|
_value = false;
|
|
_timeSincePress = Mathf.Infinity;
|
|
_timeSinceRelease = Mathf.Infinity;
|
|
}
|
|
|
|
private float _bufferTime;
|
|
private bool _value;
|
|
private float _timeSinceRelease;
|
|
private float _timeSincePress;
|
|
|
|
public void Set( bool newValue )
|
|
{
|
|
if ( newValue && !_value )
|
|
{
|
|
_timeSincePress = 0f;
|
|
}
|
|
else if ( !newValue && _value )
|
|
{
|
|
_timeSinceRelease = 0f;
|
|
}
|
|
|
|
_value = newValue;
|
|
}
|
|
|
|
public void Update( float deltaTime )
|
|
{
|
|
_timeSincePress += deltaTime;
|
|
_timeSinceRelease += deltaTime;
|
|
}
|
|
|
|
public bool GetValue()
|
|
{
|
|
return _value || _timeSinceRelease <= _bufferTime;
|
|
}
|
|
|
|
public bool GetRawValue()
|
|
{
|
|
return _value;
|
|
}
|
|
|
|
public bool GetDown( bool consume = true )
|
|
{
|
|
bool value = _timeSincePress <= _bufferTime;
|
|
|
|
if ( consume && value )
|
|
_timeSincePress = Mathf.Infinity;
|
|
|
|
return value;
|
|
}
|
|
|
|
public bool GetRelease( bool consume = true )
|
|
{
|
|
bool value = _timeSinceRelease <= _bufferTime;
|
|
|
|
if ( consume && value )
|
|
_timeSinceRelease = Mathf.Infinity;
|
|
|
|
return value;
|
|
}
|
|
}
|