Added IJoystickDevice2 interface

This commit is contained in:
Stefanos A. 2013-12-24 03:16:32 +01:00
parent 78078d0742
commit 5215891a4f
26 changed files with 503 additions and 120 deletions

View file

@ -34,11 +34,6 @@ namespace OpenTK.Input
public struct GamePadCapabilities : IEquatable<GamePadCapabilities> public struct GamePadCapabilities : IEquatable<GamePadCapabilities>
{ {
byte axis_count;
byte button_count;
byte dpad_count;
byte trackball_count;
Buttons buttons; Buttons buttons;
byte gamepad_type; byte gamepad_type;
bool is_connected; bool is_connected;
@ -221,34 +216,6 @@ namespace OpenTK.Input
#endregion #endregion
#region Internal Members
internal int AxisCount
{
get { return axis_count; }
set { axis_count = (byte)value; }
}
internal int ButtonCount
{
get { return button_count; }
set { button_count = (byte)value; }
}
internal int DPadCount
{
get { return dpad_count; }
set { dpad_count = (byte)value; }
}
internal int TrackballCount
{
get { return trackball_count; }
set { trackball_count = (byte)value; }
}
#endregion
#region IEquatable<GamePadCapabilities> Members #region IEquatable<GamePadCapabilities> Members
public bool Equals(GamePadCapabilities other) public bool Equals(GamePadCapabilities other)

View file

@ -1,4 +1,4 @@
// #region License #region License
// //
// GamePadType.cs // GamePadType.cs
// //
@ -25,7 +25,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE. // THE SOFTWARE.
// //
// #endregion #endregion
namespace OpenTK.Input namespace OpenTK.Input
{ {

View file

@ -37,5 +37,6 @@ namespace OpenTK.Input
IMouseDriver2 MouseDriver { get; } IMouseDriver2 MouseDriver { get; }
IKeyboardDriver2 KeyboardDriver { get; } IKeyboardDriver2 KeyboardDriver { get; }
IGamePadDriver GamePadDriver { get; } IGamePadDriver GamePadDriver { get; }
IJoystickDriver2 JoystickDriver { get; }
} }
} }

View file

@ -0,0 +1,41 @@
#region License
//
// IJoystickDriver2.cs
//
// Author:
// Stefanos A. <stapostol@gmail.com>
//
// Copyright (c) 2006-2013 Stefanos Apostolopoulos
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenTK.Input
{
interface IJoystickDriver2
{
JoystickState GetState(int index);
JoystickCapabilities GetCapabilities(int index);
}
}

View file

@ -0,0 +1,51 @@
#region License
//
// Joystick.cs
//
// Author:
// Stefanos A. <stapostol@gmail.com>
//
// Copyright (c) 2006-2013 Stefanos Apostolopoulos
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenTK.Input
{
public class Joystick
{
static readonly IJoystickDriver2 implementation =
Platform.Factory.Default.CreateJoystickDriver();
public static JoystickCapabilities GetCapabilities(int index)
{
return implementation.GetCapabilities(index);
}
public static JoystickState GetState(int index)
{
return implementation.GetState(index);
}
}
}

View file

@ -0,0 +1,62 @@
#region License
//
// JoystickAxis.cs
//
// Author:
// Stefanos A. <stapostol@gmail.com>
//
// Copyright (c) 2006-2013 Stefanos Apostolopoulos
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenTK.Input
{
/// <summary>
/// Defines available JoystickDevice axes.
/// </summary>
public enum JoystickAxis
{
/// <summary>The first axis of the JoystickDevice.</summary>
Axis0 = 0,
/// <summary>The second axis of the JoystickDevice.</summary>
Axis1,
/// <summary>The third axis of the JoystickDevice.</summary>
Axis2,
/// <summary>The fourth axis of the JoystickDevice.</summary>
Axis3,
/// <summary>The fifth axis of the JoystickDevice.</summary>
Axis4,
/// <summary>The sixth axis of the JoystickDevice.</summary>
Axis5,
/// <summary>The seventh axis of the JoystickDevice.</summary>
Axis6,
/// <summary>The eighth axis of the JoystickDevice.</summary>
Axis7,
/// <summary>The ninth axis of the JoystickDevice.</summary>
Axis8,
/// <summary>The tenth axis of the JoystickDevice.</summary>
Axis9,
}
}

View file

@ -0,0 +1,78 @@
#region License
//
// JoystickButton.cs
//
// Author:
// Stefanos A. <stapostol@gmail.com>
//
// Copyright (c) 2006-2013 Stefanos Apostolopoulos
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenTK.Input
{
#region JoystickButton
/// <summary>
/// Defines available JoystickDevice buttons.
/// </summary>
public enum JoystickButton
{
/// <summary>The first button of the JoystickDevice.</summary>
Button0 = 0,
/// <summary>The second button of the JoystickDevice.</summary>
Button1,
/// <summary>The third button of the JoystickDevice.</summary>
Button2,
/// <summary>The fourth button of the JoystickDevice.</summary>
Button3,
/// <summary>The fifth button of the JoystickDevice.</summary>
Button4,
/// <summary>The sixth button of the JoystickDevice.</summary>
Button5,
/// <summary>The seventh button of the JoystickDevice.</summary>
Button6,
/// <summary>The eighth button of the JoystickDevice.</summary>
Button7,
/// <summary>The ninth button of the JoystickDevice.</summary>
Button8,
/// <summary>The tenth button of the JoystickDevice.</summary>
Button9,
/// <summary>The eleventh button of the JoystickDevice.</summary>
Button10,
/// <summary>The twelfth button of the JoystickDevice.</summary>
Button11,
/// <summary>The thirteenth button of the JoystickDevice.</summary>
Button12,
/// <summary>The fourteenth button of the JoystickDevice.</summary>
Button13,
/// <summary>The fifteenth button of the JoystickDevice.</summary>
Button14,
/// <summary>The sixteenth button of the JoystickDevice.</summary>
Button15,
}
#endregion
}

View file

@ -0,0 +1,75 @@
#region License
//
// JoystickCapabilities.cs
//
// Author:
// Stefanos A. <stapostol@gmail.com>
//
// Copyright (c) 2006-2013 Stefanos Apostolopoulos
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenTK.Input
{
public struct JoystickCapabilities
{
byte axis_count;
byte button_count;
byte dpad_count;
byte trackball_count;
#region Public Members
public int AxisCount
{
get { return axis_count; }
set { axis_count = (byte)value; }
}
public int ButtonCount
{
get { return button_count; }
set { button_count = (byte)value; }
}
#endregion
#region Private Members
int DPadCount
{
get { return dpad_count; }
set { dpad_count = (byte)value; }
}
int TrackballCount
{
get { return trackball_count; }
set { trackball_count = (byte)value; }
}
#endregion
}
}

View file

@ -271,49 +271,6 @@ namespace OpenTK.Input
#endregion #endregion
#region JoystickButton
/// <summary>
/// Defines available JoystickDevice buttons.
/// </summary>
public enum JoystickButton
{
/// <summary>The first button of the JoystickDevice.</summary>
Button0 = 0,
/// <summary>The second button of the JoystickDevice.</summary>
Button1,
/// <summary>The third button of the JoystickDevice.</summary>
Button2,
/// <summary>The fourth button of the JoystickDevice.</summary>
Button3,
/// <summary>The fifth button of the JoystickDevice.</summary>
Button4,
/// <summary>The sixth button of the JoystickDevice.</summary>
Button5,
/// <summary>The seventh button of the JoystickDevice.</summary>
Button6,
/// <summary>The eighth button of the JoystickDevice.</summary>
Button7,
/// <summary>The ninth button of the JoystickDevice.</summary>
Button8,
/// <summary>The tenth button of the JoystickDevice.</summary>
Button9,
/// <summary>The eleventh button of the JoystickDevice.</summary>
Button10,
/// <summary>The twelfth button of the JoystickDevice.</summary>
Button11,
/// <summary>The thirteenth button of the JoystickDevice.</summary>
Button12,
/// <summary>The fourteenth button of the JoystickDevice.</summary>
Button13,
/// <summary>The fifteenth button of the JoystickDevice.</summary>
Button14,
/// <summary>The sixteenth button of the JoystickDevice.</summary>
Button15,
}
#endregion
#region JoystickButtonCollection #region JoystickButtonCollection
/// <summary> /// <summary>
@ -376,37 +333,6 @@ namespace OpenTK.Input
#endregion #endregion
#region JoystickAxis
/// <summary>
/// Defines available JoystickDevice axes.
/// </summary>
public enum JoystickAxis
{
/// <summary>The first axis of the JoystickDevice.</summary>
Axis0 = 0,
/// <summary>The second axis of the JoystickDevice.</summary>
Axis1,
/// <summary>The third axis of the JoystickDevice.</summary>
Axis2,
/// <summary>The fourth axis of the JoystickDevice.</summary>
Axis3,
/// <summary>The fifth axis of the JoystickDevice.</summary>
Axis4,
/// <summary>The sixth axis of the JoystickDevice.</summary>
Axis5,
/// <summary>The seventh axis of the JoystickDevice.</summary>
Axis6,
/// <summary>The eighth axis of the JoystickDevice.</summary>
Axis7,
/// <summary>The ninth axis of the JoystickDevice.</summary>
Axis8,
/// <summary>The tenth axis of the JoystickDevice.</summary>
Axis9,
}
#endregion
#region JoystickAxisCollection #region JoystickAxisCollection
/// <summary> /// <summary>

View file

@ -0,0 +1,79 @@
#region License
//
// JoystickState.cs
//
// Author:
// Stefanos A. <stapostol@gmail.com>
//
// Copyright (c) 2006-2013 Stefanos Apostolopoulos
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
namespace OpenTK.Input
{
public struct JoystickState
{
const int MaxAxes = 10; // JoystickAxis defines 10 axes
const float ConversionFactor = 1.0f / short.MaxValue;
unsafe fixed short axes[MaxAxes];
JoystickButton buttons;
public float GetAxis(JoystickAxis axis)
{
return GetAxis((int)axis);
}
public float GetAxis(int axis)
{
float value = 0.0f;
if (axis >= 0 && axis < MaxAxes)
{
unsafe
{
fixed (short* paxis = axes)
{
value = *(paxis + axis) * ConversionFactor;
}
}
}
else
{
Debug.Print("[Joystick] Invalid axis {0}", axis);
}
return value;
}
public bool IsButtonDown(JoystickButton button)
{
return (buttons & button) != 0;
}
public bool IsButtonUp(JoystickButton button)
{
return (buttons & button) == 0;
}
}
}

View file

@ -138,8 +138,14 @@
<Compile Include="Input\GamePadType.cs" /> <Compile Include="Input\GamePadType.cs" />
<Compile Include="Input\IGamePadDriver.cs" /> <Compile Include="Input\IGamePadDriver.cs" />
<Compile Include="Input\IInputDriver2.cs" /> <Compile Include="Input\IInputDriver2.cs" />
<Compile Include="Input\IJoystickDriver2.cs" />
<Compile Include="Input\IKeyboardDriver2.cs" /> <Compile Include="Input\IKeyboardDriver2.cs" />
<Compile Include="Input\IMouseDriver2.cs" /> <Compile Include="Input\IMouseDriver2.cs" />
<Compile Include="Input\Joystick.cs" />
<Compile Include="Input\JoystickAxis.cs" />
<Compile Include="Input\JoystickButton.cs" />
<Compile Include="Input\JoystickCapabilities.cs" />
<Compile Include="Input\JoystickState.cs" />
<Compile Include="InteropHelper.cs" /> <Compile Include="InteropHelper.cs" />
<Compile Include="Math\Matrix2.cs" /> <Compile Include="Math\Matrix2.cs" />
<Compile Include="Math\Matrix2d.cs" /> <Compile Include="Math\Matrix2d.cs" />

View file

@ -149,6 +149,11 @@ namespace OpenTK.Platform
return default_implementation.CreateGamePadDriver(); return default_implementation.CreateGamePadDriver();
} }
public Input.IJoystickDriver2 CreateJoystickDriver()
{
return default_implementation.CreateJoystickDriver();
}
class UnsupportedPlatform : IPlatformFactory class UnsupportedPlatform : IPlatformFactory
{ {
#region Fields #region Fields
@ -210,6 +215,11 @@ namespace OpenTK.Platform
throw new PlatformNotSupportedException(error_string); throw new PlatformNotSupportedException(error_string);
} }
public Input.IJoystickDriver2 CreateJoystickDriver()
{
throw new PlatformNotSupportedException(error_string);
}
#endregion #endregion
#region IDisposable Members #region IDisposable Members

View file

@ -52,5 +52,7 @@ namespace OpenTK.Platform
OpenTK.Input.IMouseDriver2 CreateMouseDriver(); OpenTK.Input.IMouseDriver2 CreateMouseDriver();
OpenTK.Input.IGamePadDriver CreateGamePadDriver(); OpenTK.Input.IGamePadDriver CreateGamePadDriver();
Input.IJoystickDriver2 CreateJoystickDriver();
} }
} }

View file

@ -113,5 +113,10 @@ namespace OpenTK.Platform.MacOS
throw new NotImplementedException(); throw new NotImplementedException();
} }
} }
public IJoystickDriver2 JoystickDriver
{
get { throw new NotImplementedException(); }
}
} }
} }

View file

@ -50,7 +50,7 @@ namespace OpenTK.Platform.MacOS
// Requires Mac OS X 10.5 or higher. // Requires Mac OS X 10.5 or higher.
// Todo: create a driver for older installations. Maybe use CGGetLastMouseDelta for that? // Todo: create a driver for older installations. Maybe use CGGetLastMouseDelta for that?
class HIDInput : IInputDriver2, IMouseDriver2, IKeyboardDriver2, IGamePadDriver class HIDInput : IInputDriver2, IMouseDriver2, IKeyboardDriver2, IGamePadDriver, IJoystickDriver2
{ {
#region Fields #region Fields
@ -292,6 +292,8 @@ namespace OpenTK.Platform.MacOS
public IMouseDriver2 MouseDriver { get { return this; } } public IMouseDriver2 MouseDriver { get { return this; } }
public IKeyboardDriver2 KeyboardDriver { get { return this; } } public IKeyboardDriver2 KeyboardDriver { get { return this; } }
public IGamePadDriver GamePadDriver { get { return this; } } public IGamePadDriver GamePadDriver { get { return this; } }
public IJoystickDriver2 JoystickDriver { get { return this; } }
#endregion #endregion
@ -385,6 +387,20 @@ namespace OpenTK.Platform.MacOS
#endregion #endregion
#region IJoystickDriver2 Members
JoystickState IJoystickDriver2.GetState(int index)
{
throw new NotImplementedException();
}
JoystickCapabilities IJoystickDriver2.GetCapabilities(int index)
{
throw new NotImplementedException();
}
#endregion
#region NativeMethods #region NativeMethods
class NativeMethods class NativeMethods

View file

@ -94,6 +94,11 @@ namespace OpenTK.Platform.MacOS
return InputDriver.GamePadDriver; return InputDriver.GamePadDriver;
} }
public IJoystickDriver2 CreateJoystickDriver()
{
return InputDriver.JoystickDriver;
}
#endregion #endregion
#region IDisposable Members #region IDisposable Members

View file

@ -104,6 +104,11 @@ namespace OpenTK.Platform.SDL2
return InputDriver.GamePadDriver; return InputDriver.GamePadDriver;
} }
public IJoystickDriver2 CreateJoystickDriver()
{
return InputDriver.JoystickDriver;
}
#endregion #endregion
#region IDisposable Members #region IDisposable Members

View file

@ -220,6 +220,14 @@ namespace OpenTK.Platform.SDL2
} }
} }
public IJoystickDriver2 JoystickDriver
{
get
{
return joystick_driver;
}
}
#endregion #endregion
#region IDisposable Members #region IDisposable Members

View file

@ -32,7 +32,7 @@ using OpenTK.Input;
namespace OpenTK.Platform.SDL2 namespace OpenTK.Platform.SDL2
{ {
class Sdl2JoystickDriver : IJoystickDriver, IGamePadDriver, IDisposable class Sdl2JoystickDriver : IJoystickDriver, IJoystickDriver2, IGamePadDriver, IDisposable
{ {
const float RangeMultiplier = 1.0f / 32768.0f; const float RangeMultiplier = 1.0f / 32768.0f;
@ -322,6 +322,20 @@ namespace OpenTK.Platform.SDL2
#endregion #endregion
#region IJoystickDriver2 Members
JoystickState IJoystickDriver2.GetState(int index)
{
throw new NotImplementedException();
}
JoystickCapabilities IJoystickDriver2.GetCapabilities(int index)
{
throw new NotImplementedException();
}
#endregion
#region IDisposable Members #region IDisposable Members
void Dispose(bool manual) void Dispose(bool manual)

View file

@ -131,6 +131,11 @@ namespace OpenTK.Platform.Windows
return InputDriver.GamePadDriver; return InputDriver.GamePadDriver;
} }
public IJoystickDriver2 CreateJoystickDriver()
{
return InputDriver.JoystickDriver;
}
#endregion #endregion
IInputDriver2 InputDriver IInputDriver2 InputDriver

View file

@ -164,6 +164,8 @@ namespace OpenTK.Platform.Windows
public abstract IKeyboardDriver2 KeyboardDriver { get; } public abstract IKeyboardDriver2 KeyboardDriver { get; }
public abstract IGamePadDriver GamePadDriver { get; } public abstract IGamePadDriver GamePadDriver { get; }
public abstract IJoystickDriver2 JoystickDriver { get; }
#endregion #endregion
#region IDisposable Members #region IDisposable Members

View file

@ -445,10 +445,10 @@ namespace OpenTK.Platform.Windows
JoystickError result = UnsafeNativeMethods.joyGetDevCaps(index, out caps, JoyCaps.SizeInBytes); JoystickError result = UnsafeNativeMethods.joyGetDevCaps(index, out caps, JoyCaps.SizeInBytes);
if (result == JoystickError.NoError) if (result == JoystickError.NoError)
{ {
gpcaps.AxisCount = caps.NumAxes; //gpcaps.AxisCount = caps.NumAxes;
gpcaps.ButtonCount = caps.NumButtons; //gpcaps.ButtonCount = caps.NumButtons;
if ((caps.Capabilities & JoystCapsFlags.HasPov) != 0) //if ((caps.Capabilities & JoystCapsFlags.HasPov) != 0)
gpcaps.DPadCount++; // gpcaps.DPadCount++;
} }
} }
else else

View file

@ -190,6 +190,11 @@ namespace OpenTK.Platform.Windows
get { return joystick_driver; } get { return joystick_driver; }
} }
public override IJoystickDriver2 JoystickDriver
{
get { throw new NotImplementedException(); }
}
#endregion #endregion
} }
} }

View file

@ -1,4 +1,4 @@
// #region License #region License
// //
// XInputJoystick.cs // XInputJoystick.cs
// //
@ -25,7 +25,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE. // THE SOFTWARE.
// //
// #endregion #endregion
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;

View file

@ -98,6 +98,12 @@ namespace OpenTK.Platform.X11
return new X11Joystick(); return new X11Joystick();
} }
public virtual OpenTK.Input.IJoystickDriver2 CreateJoystickDriver()
{
return new X11Joystick();
}
#endregion #endregion
#region IDisposable Members #region IDisposable Members

View file

@ -36,7 +36,7 @@ namespace OpenTK.Platform.X11
{ {
struct X11JoyDetails { } struct X11JoyDetails { }
sealed class X11Joystick : IJoystickDriver, IGamePadDriver sealed class X11Joystick : IJoystickDriver, IJoystickDriver2, IGamePadDriver
{ {
#region Fields #region Fields
@ -277,5 +277,19 @@ namespace OpenTK.Platform.X11
} }
#endregion #endregion
#region IJoystickDriver2 Members
JoystickState IJoystickDriver2.GetState(int index)
{
throw new NotImplementedException();
}
JoystickCapabilities IJoystickDriver2.GetCapabilities(int index)
{
throw new NotImplementedException();
}
#endregion
} }
} }