forked from MoonsideGames/MoonWorks
keyboard uses Button instead of ButtonState
parent
80c34c6b16
commit
9f4b69e6aa
|
@ -7,7 +7,7 @@ namespace MoonWorks.Input
|
|||
{
|
||||
public class Keyboard
|
||||
{
|
||||
private ButtonState[] Keys { get; }
|
||||
private Button[] Keys { get; }
|
||||
private int numKeys;
|
||||
|
||||
private static readonly char[] TextInputCharacters = new char[]
|
||||
|
@ -36,10 +36,10 @@ namespace MoonWorks.Input
|
|||
{
|
||||
SDL.SDL_GetKeyboardState(out numKeys);
|
||||
|
||||
Keys = new ButtonState[numKeys];
|
||||
Keys = new Button[numKeys];
|
||||
foreach (KeyCode keycode in Enum.GetValues(typeof(KeyCode)))
|
||||
{
|
||||
Keys[(int) keycode] = new ButtonState();
|
||||
Keys[(int) keycode] = new Button();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ namespace MoonWorks.Input
|
|||
foreach (int keycode in Enum.GetValues(typeof(KeyCode)))
|
||||
{
|
||||
var keyDown = Marshal.ReadByte(keyboardState, keycode);
|
||||
Keys[keycode] = Keys[keycode].Update(Conversions.ByteToBool(keyDown));
|
||||
Keys[keycode].Update(Conversions.ByteToBool(keyDown));
|
||||
|
||||
if (Conversions.ByteToBool(keyDown))
|
||||
{
|
||||
|
@ -86,9 +86,14 @@ namespace MoonWorks.Input
|
|||
return Keys[(int) keycode].IsReleased;
|
||||
}
|
||||
|
||||
public ButtonState ButtonState(KeyCode keycode)
|
||||
public Button Button(KeyCode keycode)
|
||||
{
|
||||
return Keys[(int) keycode];
|
||||
}
|
||||
|
||||
public ButtonState ButtonState(KeyCode keycode)
|
||||
{
|
||||
return Keys[(int) keycode].State;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -331,16 +331,36 @@ namespace MoonWorks.Math
|
|||
return angle;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rescales a value within a given range to a new range.
|
||||
/// </summary>
|
||||
public static float Normalize(float value, short min, short max, short newMin, short newMax)
|
||||
{
|
||||
return ((value - min) * (newMax - newMin)) / (max - min) + newMin;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rescales a value within a given range to a new range.
|
||||
/// </summary>
|
||||
public static float Normalize(float value, float min, float max, float newMin, float newMax)
|
||||
{
|
||||
return ((value - min) * (newMax - newMin)) / (max - min) + newMin;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Step from start towards end by change.
|
||||
/// </summary>
|
||||
/// <param name="start">Start value.</param>
|
||||
/// <param name="end">End value.</param>
|
||||
/// <param name="change">Change value.</param>
|
||||
/// <returns>The final delta.</returns>
|
||||
public static float Approach(float start, float end, float change)
|
||||
{
|
||||
return (start < end ?
|
||||
System.Math.Min(start + change, end) :
|
||||
System.Math.Max(start - change, end)) - start;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internal Static Methods
|
||||
|
|
Loading…
Reference in New Issue