3 * Copyright (c) 2007-2010 SlimDX Group
\r
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
\r
6 * of this software and associated documentation files (the "Software"), to deal
\r
7 * in the Software without restriction, including without limitation the rights
\r
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
\r
9 * copies of the Software, and to permit persons to whom the Software is
\r
10 * furnished to do so, subject to the following conditions:
\r
12 * The above copyright notice and this permission notice shall be included in
\r
13 * all copies or substantial portions of the Software.
\r
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
\r
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
\r
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
\r
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
\r
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
\r
23 #include "Gamepad.h"
\r
25 #include "XInputException.h"
\r
31 Gamepad::Gamepad( const XINPUT_GAMEPAD &native )
\r
33 m_Buttons = static_cast<GamepadButtonFlags>( native.wButtons );
\r
34 leftTrigger = native.bLeftTrigger;
\r
35 rightTrigger = native.bRightTrigger;
\r
36 leftThumbX = native.sThumbLX;
\r
37 leftThumbY = native.sThumbLY;
\r
38 rightThumbX = native.sThumbRX;
\r
39 rightThumbY = native.sThumbRY;
\r
42 GamepadButtonFlags Gamepad::Buttons::get()
\r
47 bool Gamepad::operator == ( Gamepad left, Gamepad right )
\r
49 return Gamepad::Equals( left, right );
\r
52 bool Gamepad::operator != ( Gamepad left, Gamepad right )
\r
54 return !Gamepad::Equals( left, right );
\r
57 int Gamepad::GetHashCode()
\r
59 return m_Buttons.GetHashCode() + leftTrigger.GetHashCode() + rightTrigger.GetHashCode()
\r
60 + leftThumbX.GetHashCode() + leftThumbY.GetHashCode() + rightThumbX.GetHashCode()
\r
61 + rightThumbY.GetHashCode();
\r
64 bool Gamepad::Equals( Object^ value )
\r
66 if( value == nullptr )
\r
69 if( value->GetType() != GetType() )
\r
72 return Equals( safe_cast<Gamepad>( value ) );
\r
75 bool Gamepad::Equals( Gamepad value )
\r
77 return ( m_Buttons == value.m_Buttons && leftTrigger == value.leftTrigger && rightTrigger == value.rightTrigger
\r
78 && leftThumbX == value.leftThumbX && leftThumbY == value.leftThumbY && rightThumbX == value.rightThumbX
\r
79 && rightThumbY == value.rightThumbY );
\r
82 bool Gamepad::Equals( Gamepad% value1, Gamepad% value2 )
\r
84 return ( value1.m_Buttons == value2.m_Buttons && value1.leftTrigger == value2.leftTrigger && value1.rightTrigger == value2.rightTrigger
\r
85 && value1.leftThumbX == value2.leftThumbX && value1.leftThumbY == value2.leftThumbY && value1.rightThumbX == value2.rightThumbX
\r
86 && value1.rightThumbY == value2.rightThumbY );
\r