49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class InputBuffer : MonoBehaviour
|
|
{
|
|
float bufferDuration = 0.4f; // Duration in seconds to keep inputs in the buffer
|
|
private Queue<InputData> inputBuffer = new Queue<InputData>();
|
|
|
|
public void AddInputToBuffer(string inputName)
|
|
{
|
|
if (!(inputBuffer.Count > 0))
|
|
{
|
|
InputData newInput = new InputData(inputName, Time.time);
|
|
inputBuffer.Enqueue(newInput);
|
|
Debug.Log($"Input {inputName} added to buffer at time {Time.time}");
|
|
}
|
|
}
|
|
|
|
public void CleanUpBuffer()
|
|
{
|
|
while (inputBuffer.Count > 0)//&& inputBuffer.Peek().time < Time.time - bufferDuration
|
|
{
|
|
InputData expiredInput = inputBuffer.Dequeue();
|
|
Debug.Log($"Input {expiredInput.inputName} removed from buffer (expired)");
|
|
}
|
|
}
|
|
|
|
public string GetLatestInput()
|
|
{
|
|
if (inputBuffer.Count > 0)
|
|
{
|
|
return inputBuffer.Peek().inputName;
|
|
}
|
|
return null; // Return null if no input is in the buffer
|
|
}
|
|
|
|
private class InputData
|
|
{
|
|
public string inputName;
|
|
public float time;
|
|
|
|
public InputData(string inputName, float time)
|
|
{
|
|
this.inputName = inputName;
|
|
this.time = time;
|
|
}
|
|
}
|
|
}
|