diff --git a/Source/OpenTK/OpenTK.csproj b/Source/OpenTK/OpenTK.csproj index be7ac936..a378e483 100644 --- a/Source/OpenTK/OpenTK.csproj +++ b/Source/OpenTK/OpenTK.csproj @@ -164,6 +164,7 @@ + diff --git a/Source/OpenTK/Platform/MappedGamePadDriver.cs b/Source/OpenTK/Platform/MappedGamePadDriver.cs new file mode 100644 index 00000000..346be196 --- /dev/null +++ b/Source/OpenTK/Platform/MappedGamePadDriver.cs @@ -0,0 +1,83 @@ +#region License +// +// MappedGamePadDriver.cs +// +// Author: +// Stefanos A. +// +// 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; +using OpenTK.Input; + +namespace OpenTK.Platform +{ + /// \internal + /// + /// Implements IGamePadDriver using OpenTK.Input.Joystick + /// and a gamepad-specific axis/button mapping. + /// + /// + /// + /// This class supports OpenTK and is not meant to be accessed by user code. + /// + /// + /// To support gamepads on platforms that do not offer a gamepad-optimized API, + /// we need to use the generic OpenTK.Input.Joystick and implement a custom + /// mapping scheme to provide a stable mapping to OpenTK.Input.GamePad. This + /// class implements this mapping scheme. + /// + /// + class MappedGamePadDriver : IGamePadDriver + { + public GamePadState GetState(int index) + { + JoystickState joy = Joystick.GetState(index); + GamePadState pad = new GamePadState(); + if (joy.IsConnected) + { + GamePadMapping mapping = new GamePadMapping();//GamePadMapping.Lookup() + // Todo: implement mapping + } + return pad; + } + + public GamePadCapabilities GetCapabilities(int index) + { + JoystickCapabilities joy = Joystick.GetCapabilities(index); + GamePadCapabilities pad = new GamePadCapabilities(); + if (joy.IsConnected) + { + // Todo: implement mapping + } + return pad; + } + + public string GetName(int index) + { + throw new NotImplementedException(); + } + } +}