You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
1.7 KiB
C#

using UnityEngine;
namespace CnControls
{
/// <summary>
/// Virtual button class
/// </summary>
public class VirtualButton
{
/// <summary>
/// Name of the button for which this virtual button has to be registered
/// </summary>
public string Name { get; set; }
/// <summary>
/// Is this button currently pressed?
/// </summary>
public bool IsPressed { get; private set; }
/// <summary>
/// The last frame this button was pressed
/// </summary>
private int _lastPressedFrame = -1;
/// <summary>
/// The last frame this butto was released
/// </summary>
private int _lastReleasedFrame = -1;
public VirtualButton(string name)
{
Name = name;
}
/// <summary>
/// Press logic sets the current state of the button to "IsPressed" untill the Release() method is called
/// </summary>
public void Press()
{
if (IsPressed)
{
return;
}
IsPressed = true;
_lastPressedFrame = Time.frameCount;
}
/// <summary>
/// Release logic frees the button from its "IsPressed" state
/// </summary>
public void Release()
{
IsPressed = false;
_lastReleasedFrame = Time.frameCount;
}
/// <summary>
/// Is this button currently pressed?
/// </summary>
public bool GetButton
{
get { return IsPressed; }
}
/// <summary>
/// Check whether this button has just been pressed
/// </summary>
public bool GetButtonDown
{
get
{
return _lastPressedFrame != -1 && _lastPressedFrame - Time.frameCount == -1;
}
}
/// <summary>
/// Check whether this button has just been released
/// </summary>
public bool GetButtonUp
{
get
{
return _lastReleasedFrame != -1 && _lastReleasedFrame == Time.frameCount - 1;
}
}
}
}