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#
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;
|
|
}
|
|
}
|
|
}
|
|
} |