get { return GetButton(Buttons.Start); }
}
+ /// <summary>
+ /// Gets a value indicating whether any button is pressed.
+ /// </summary>
+ /// <value><c>true</c> if any button is pressed; otherwise, <c>false</c>.</value>
+ public bool IsAnyButtonPressed
+ {
+ get
+ {
+ // If any bit is set then a button is down.
+ return buttons != 0;
+ }
+ }
+
/// <param name="left">A <see cref="GamePadButtons"/> instance to test for equality.</param>
/// <param name="right">A <see cref="GamePadButtons"/> instance to test for equality.</param>
public static bool operator ==(GamePadButtons left, GamePadButtons right)
}
/// <summary>
+ /// Gets a value indicating whether any button is down.
+ /// </summary>
+ /// <value><c>true</c> if any button is down; otherwise, <c>false</c>.</value>
+ public bool IsAnyButtonDown
+ {
+ get
+ {
+ // If any bit is set then a button is down.
+ return buttons != 0;
+ }
+ }
+
+ /// <summary>
/// Gets a value indicating whether this instance is connected.
/// </summary>
/// <value><c>true</c> if this instance is connected; otherwise, <c>false</c>.</value>
#region Fields
// Allocate enough ints to store all keyboard keys
- const int IntSize = sizeof(int);
+ const int IntSize = sizeof(int) * 8;
const int NumInts = ((int)Key.LastKey + IntSize - 1) / IntSize;
// The following line triggers bogus CS0214 in gmcs 2.0.1, sigh...
unsafe fixed int Keys[NumInts];
}
/// <summary>
+ /// Gets a value indicating whether any key is down.
+ /// </summary>
+ /// <value><c>true</c> if any key is down; otherwise, <c>false</c>.</value>
+ public bool IsAnyKeyDown
+ {
+ get
+ {
+ // If any bit is set then a key is down.
+ unsafe
+ {
+ fixed (int* k = Keys)
+ {
+ for(int i = 0; i < NumInts; ++i)
+ {
+ if (k[i] != 0)
+ {
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+ }
+
+ /// <summary>
/// Gets a <see cref="System.Boolean"/> indicating whether this keyboard
/// is connected.
/// </summary>
{
ValidateOffset(offset);
- int int_offset = offset / 32;
- int bit_offset = offset % 32;
+ int int_offset = offset / IntSize;
+ int bit_offset = offset % IntSize;
unsafe
{
fixed (int* k = Keys) { return (*(k + int_offset) & (1 << bit_offset)) != 0u; }
{
ValidateOffset(offset);
- int int_offset = offset / 32;
- int bit_offset = offset % 32;
+ int int_offset = offset / IntSize;
+ int bit_offset = offset % IntSize;
unsafe
{
fixed (int* k = Keys) { *(k + int_offset) |= 1 << bit_offset; }
{
ValidateOffset(offset);
- int int_offset = offset / 32;
- int bit_offset = offset % 32;
+ int int_offset = offset / IntSize;
+ int bit_offset = offset % IntSize;
unsafe
{
fixed (int* k = Keys) { *(k + int_offset) &= ~(1 << bit_offset); }
}
/// <summary>
+ /// Gets a value indicating whether any button is down.
+ /// </summary>
+ /// <value><c>true</c> if any button is down; otherwise, <c>false</c>.</value>
+ public bool IsAnyButtonDown
+ {
+ get
+ {
+ // If any bit is set then a button is down.
+ return buttons != 0;
+ }
+ }
+
+ /// <summary>
/// Gets the absolute wheel position in integer units. This property is intended for XNA compatibility.
/// To support high-precision mice, it is recommended to use <see cref="WheelPrecise"/> instead.
/// </summary>