From f7e2c2ea7c8b19aac50a6c86c58e21b95d664a2c Mon Sep 17 00:00:00 2001 From: "Stefanos A." Date: Mon, 23 Dec 2013 20:30:58 +0100 Subject: [PATCH] Initial implementation of GamePadTriggers --- Source/OpenTK/Input/GamePadTriggers.cs | 102 +++++++++++++++++++++++++ Source/OpenTK/OpenTK.csproj | 1 + 2 files changed, 103 insertions(+) create mode 100644 Source/OpenTK/Input/GamePadTriggers.cs diff --git a/Source/OpenTK/Input/GamePadTriggers.cs b/Source/OpenTK/Input/GamePadTriggers.cs new file mode 100644 index 00000000..ecff49c7 --- /dev/null +++ b/Source/OpenTK/Input/GamePadTriggers.cs @@ -0,0 +1,102 @@ +// #region License +// +// GamePadTriggers.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; + +namespace OpenTK.Input +{ + public struct GamePadTriggers : IEquatable + { + const float ConversionFactor = 1.0f / short.MaxValue; + short left; + short right; + + internal GamePadTriggers(short left, short right) + { + this.left = left; + this.right = right; + } + + #region Public Members + + public float Left + { + get { return left * ConversionFactor; } + } + + public float Right + { + get { return right * ConversionFactor; } + } + + public static bool operator ==(GamePadTriggers left, GamePadTriggers right) + { + return left.Equals(right); + } + + public static bool operator !=(GamePadTriggers left, GamePadTriggers right) + { + return !left.Equals(right); + } + + public override string ToString() + { + return String.Format( + "{{Left: {0}; Right: {1}}}", + Left, Right); + } + + public override int GetHashCode() + { + return + left.GetHashCode() ^ right.GetHashCode(); + } + + public override bool Equals(object obj) + { + return + obj is GamePadTriggers && + Equals((GamePadTriggers)obj); + } + + #endregion + + #region IEquatable Members + + public bool Equals(GamePadTriggers other) + { + return + left == other.left && + right == other.right; + } + + #endregion + } +} diff --git a/Source/OpenTK/OpenTK.csproj b/Source/OpenTK/OpenTK.csproj index aa83bbee..629191e5 100644 --- a/Source/OpenTK/OpenTK.csproj +++ b/Source/OpenTK/OpenTK.csproj @@ -134,6 +134,7 @@ +