Mercurial > sdl-ios-xcode
annotate src/haptic/win32/SDL_syshaptic.c @ 2620:4d91a53c6f8a gsoc2008_force_feedback
Forgot a return.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Wed, 06 Aug 2008 09:24:08 +0000 |
parents | fb71df34124f |
children | 83659de20bf2 |
rev | line source |
---|---|
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
3 Copyright (C) 2008 Edgar Simo |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
4 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
9 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
14 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
18 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
19 Sam Lantinga |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
20 slouken@libsdl.org |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
21 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
22 #include "SDL_config.h" |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
23 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
24 #ifdef SDL_HAPTIC_DINPUT |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
25 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
26 #include "SDL_haptic.h" |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
27 #include "../SDL_syshaptic.h" |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
28 #include "SDL_joystick.h" |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
29 #include "../../joystick/SDL_sysjoystick.h" /* For the real SDL_Joystick */ |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
30 #include "../../joystick/win32/SDL_dxjoystick_c.h" /* For joystick hwdata */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
31 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
32 #define WIN32_LEAN_AND_MEAN |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
33 #include <windows.h> |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
34 |
2570
53bb7d21928d
Another patch for windows haptic.
Edgar Simo <bobbens@gmail.com>
parents:
2569
diff
changeset
|
35 #define DIRECTINPUT_VERSION 0x0700 /* Need at least DirectX 7 for dwStartDelay */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
36 #include <dinput.h> |
2578
72c4ac55f73c
Attempt to fix windows haptic port compilation errors.
Edgar Simo <bobbens@gmail.com>
parents:
2575
diff
changeset
|
37 #include <dxerr.h> |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
38 #ifdef _MSC_VER |
2580
64fa227c01ce
Added the concept of the HelperWindow to help with DirectInput.
Edgar Simo <bobbens@gmail.com>
parents:
2578
diff
changeset
|
39 # pragma comment (lib, "dinput8.lib") |
64fa227c01ce
Added the concept of the HelperWindow to help with DirectInput.
Edgar Simo <bobbens@gmail.com>
parents:
2578
diff
changeset
|
40 # pragma comment (lib, "dxguid.lib") |
64fa227c01ce
Added the concept of the HelperWindow to help with DirectInput.
Edgar Simo <bobbens@gmail.com>
parents:
2578
diff
changeset
|
41 # pragma comment (lib, "dxerr.lib") |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
42 #endif /* _MSC_VER */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
43 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
44 /* an ISO hack for VisualC++ */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
45 #ifdef _MSC_VER |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
46 #define snprintf _snprintf |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
47 #endif /* _MSC_VER */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
48 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
49 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
50 #define MAX_HAPTICS 32 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
51 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
52 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
53 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
54 * List of available haptic devices. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
55 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
56 static struct |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
57 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
58 DIDEVICEINSTANCE instance; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
59 SDL_Haptic *haptic; |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
60 DIDEVCAPS capabilities; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
61 } SDL_hapticlist[MAX_HAPTICS]; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
62 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
63 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
64 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
65 * Haptic system hardware data. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
66 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
67 struct haptic_hwdata |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
68 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
69 LPDIRECTINPUTDEVICE2 device; |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
70 DWORD axes[3]; /* Axes to use. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
71 int is_joystick; /* Device is loaded as joystick. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
72 }; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
73 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
74 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
75 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
76 * Haptic system effect data. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
77 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
78 struct haptic_hweffect |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
79 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
80 DIEFFECT effect; |
2573
40b89e3d7ab5
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2572
diff
changeset
|
81 LPDIRECTINPUTEFFECT ref; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
82 }; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
83 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
84 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
85 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
86 * Internal stuff. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
87 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
88 static LPDIRECTINPUT dinput = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
89 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
90 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
91 /* |
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
92 * External stuff. |
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
93 */ |
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
94 extern HINSTANCE SDL_Instance; |
2580
64fa227c01ce
Added the concept of the HelperWindow to help with DirectInput.
Edgar Simo <bobbens@gmail.com>
parents:
2578
diff
changeset
|
95 extern HWND SDL_HelperWindow; |
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
96 |
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
97 |
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
98 /* |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
99 * Prototypes. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
100 */ |
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
101 static void DI_SetError(const char *str, HRESULT err); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
102 static int DI_GUIDIsSame(const GUID * a, const GUID * b); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
103 static int SDL_SYS_HapticOpenFromInstance(SDL_Haptic * haptic, DIDEVICEINSTANCE instance); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
104 static int SDL_SYS_HapticOpenFromDevice2(SDL_Haptic * haptic, LPDIRECTINPUTDEVICE2 device2); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
105 static DWORD DIGetTriggerButton( Uint16 button ); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
106 static int SDL_SYS_SetDirection( DIEFFECT * effect, SDL_HapticDirection *dir, int naxes ); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
107 static int SDL_SYS_ToDIEFFECT( SDL_Haptic * haptic, DIEFFECT * dest, SDL_HapticEffect * src ); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
108 static void SDL_SYS_HapticFreeDIEFFECT( DIEFFECT * effect, int type ); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
109 static REFGUID SDL_SYS_HapticEffectType(SDL_HapticEffect * effect); |
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
110 /* Callbacks. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
111 static BOOL CALLBACK EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext); |
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
112 static BOOL CALLBACK DI_EffectCallback(LPCDIEFFECTINFO pei, LPVOID pv); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
113 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
114 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
115 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
116 * Like SDL_SetError but for DX error codes. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
117 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
118 static void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
119 DI_SetError(const char *str, HRESULT err) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
120 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
121 SDL_SetError( "Haptic: %s - %s: %s", str, |
2578
72c4ac55f73c
Attempt to fix windows haptic port compilation errors.
Edgar Simo <bobbens@gmail.com>
parents:
2575
diff
changeset
|
122 DXGetErrorString(err), |
72c4ac55f73c
Attempt to fix windows haptic port compilation errors.
Edgar Simo <bobbens@gmail.com>
parents:
2575
diff
changeset
|
123 DXGetErrorDescription(err)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
124 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
125 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
126 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
127 /* |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
128 * Checks to see if two GUID are the same. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
129 */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
130 static int |
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
131 DI_GUIDIsSame(const GUID * a, const GUID * b) |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
132 { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
133 if (((a)->Data1 == (b)->Data1) && |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
134 ((a)->Data2 == (b)->Data2) && |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
135 ((a)->Data3 == (b)->Data3) && |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
136 (SDL_strcmp((a)->Data4, (b)->Data4)==0)) |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
137 return 1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
138 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
139 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
140 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
141 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
142 /* |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
143 * Initializes the haptic subsystem. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
144 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
145 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
146 SDL_SYS_HapticInit(void) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
147 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
148 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
149 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
150 if (dinput != NULL) { /* Already open. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
151 SDL_SetError("Haptic: SubSystem already open."); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
152 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
153 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
154 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
155 /* Clear all the memory. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
156 SDL_memset(SDL_hapticlist, 0, sizeof(SDL_hapticlist)); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
157 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
158 SDL_numhaptics = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
159 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
160 ret = CoInitialize(NULL); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
161 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
162 DI_SetError("Coinitialize",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
163 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
164 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
165 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
166 ret = CoCreateInstance(&CLSID_DirectInput, NULL, CLSCTX_INPROC_SERVER, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
167 &IID_IDirectInput, &dinput); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
168 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
169 DI_SetError("CoCreateInstance",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
170 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
171 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
172 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
173 /* Because we used CoCreateInstance, we need to Initialize it, first. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
174 ret = IDirectInput_Initialize(dinput, SDL_Instance, DIRECTINPUT_VERSION); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
175 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
176 DI_SetError("Initializing DirectInput device",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
177 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
178 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
179 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
180 /* Look for haptic devices. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
181 ret = IDirectInput_EnumDevices( dinput, |
2607
e0ca521516f6
Undocumented hack to get all force feedback devices.
Edgar Simo <bobbens@gmail.com>
parents:
2606
diff
changeset
|
182 0, /* Not sure if this is legal, but gets all devices. */ |
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
183 EnumHapticsCallback, |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
184 NULL, DIEDFL_FORCEFEEDBACK | DIEDFL_ATTACHEDONLY); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
185 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
186 DI_SetError("Enumerating DirectInput devices",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
187 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
188 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
189 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
190 return SDL_numhaptics; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
191 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
192 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
193 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
194 * Callback to find the haptic devices. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
195 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
196 static BOOL CALLBACK |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
197 EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
198 { |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
199 HRESULT ret; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
200 LPDIRECTINPUTDEVICE device; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
201 |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
202 /* Copy the instance over, useful for creating devices. */ |
2575
57ea8810b5f0
Fixed some stray memcpy and free.
Edgar Simo <bobbens@gmail.com>
parents:
2574
diff
changeset
|
203 SDL_memcpy(&SDL_hapticlist[SDL_numhaptics].instance, pdidInstance, |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
204 sizeof(DIDEVICEINSTANCE)); |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
205 |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
206 /* Open the device */ |
2614 | 207 ret = IDirectInput_CreateDevice( dinput, &pdidInstance->guidInstance, |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
208 &device, NULL ); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
209 if (FAILED(ret)) { |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
210 /* DI_SetError("Creating DirectInput device",ret); */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
211 return DIENUM_CONTINUE; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
212 } |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
213 |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
214 /* Get capabilities. */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
215 SDL_hapticlist[SDL_numhaptics].capabilities.dwSize = sizeof(DIDEVCAPS); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
216 ret = IDirectInputDevice_GetCapabilities( device, |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
217 &SDL_hapticlist[SDL_numhaptics].capabilities ); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
218 if (FAILED(ret)) { |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
219 /* DI_SetError("Getting device capabilities",ret); */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
220 IDirectInputDevice_Release(device); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
221 return DIENUM_CONTINUE; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
222 } |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
223 |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
224 /* Close up device and count it. */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
225 IDirectInputDevice_Release(device); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
226 SDL_numhaptics++; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
227 |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
228 /* Watch out for hard limit. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
229 if (SDL_numhaptics >= MAX_HAPTICS) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
230 return DIENUM_STOP; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
231 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
232 return DIENUM_CONTINUE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
233 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
234 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
235 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
236 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
237 * Return the name of a haptic device, does not need to be opened. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
238 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
239 const char * |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
240 SDL_SYS_HapticName(int index) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
241 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
242 return SDL_hapticlist[index].instance.tszProductName; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
243 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
244 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
245 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
246 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
247 * Callback to get all supported effects. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
248 */ |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
249 #define EFFECT_TEST(e,s) \ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
250 if (DI_GUIDIsSame(&pei->guid, &(e))) \ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
251 haptic->supported |= (s) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
252 static BOOL CALLBACK |
2571 | 253 DI_EffectCallback(LPCDIEFFECTINFO pei, LPVOID pv) |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
254 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
255 /* Prepare the haptic device. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
256 SDL_Haptic *haptic = (SDL_Haptic*) pv; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
257 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
258 /* Get supported. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
259 EFFECT_TEST(GUID_Spring, SDL_HAPTIC_SPRING); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
260 EFFECT_TEST(GUID_Damper, SDL_HAPTIC_DAMPER); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
261 EFFECT_TEST(GUID_Inertia, SDL_HAPTIC_INERTIA); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
262 EFFECT_TEST(GUID_Friction, SDL_HAPTIC_FRICTION); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
263 EFFECT_TEST(GUID_ConstantForce, SDL_HAPTIC_CONSTANT); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
264 EFFECT_TEST(GUID_CustomForce, SDL_HAPTIC_CUSTOM); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
265 EFFECT_TEST(GUID_Sine, SDL_HAPTIC_SINE); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
266 EFFECT_TEST(GUID_Square, SDL_HAPTIC_SQUARE); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
267 EFFECT_TEST(GUID_Triangle, SDL_HAPTIC_TRIANGLE); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
268 EFFECT_TEST(GUID_SawtoothUp, SDL_HAPTIC_SAWTOOTHUP); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
269 EFFECT_TEST(GUID_SawtoothDown, SDL_HAPTIC_SAWTOOTHDOWN); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
270 EFFECT_TEST(GUID_RampForce, SDL_HAPTIC_RAMP); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
271 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
272 /* Check for more. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
273 return DIENUM_CONTINUE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
274 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
275 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
276 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
277 /* |
2601 | 278 * Callback to get supported axes. |
279 */ | |
280 static BOOL CALLBACK | |
281 DI_DeviceObjectCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID pvRef) | |
282 { | |
2602 | 283 SDL_Haptic *haptic = (SDL_Haptic *) pvRef; |
2601 | 284 |
2605
0ea3be6e81a7
Make sure axes have force feedback actuators.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
285 if ((dev->dwType & DIDFT_AXIS) && (dev->dwFlags & DIDOI_FFACTUATOR)) { |
2601 | 286 |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
287 haptic->hwdata->axes[haptic->naxes] = dev->dwOfs; |
2601 | 288 haptic->naxes++; |
289 | |
290 /* Currently using the artificial limit of 3 axes. */ | |
291 if (haptic->naxes >= 3) { | |
292 return DIENUM_STOP; | |
293 } | |
294 } | |
295 | |
296 return DIENUM_CONTINUE; | |
297 } | |
298 | |
299 | |
300 /* | |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
301 * Opens the haptic device from the file descriptor. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
302 * |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
303 * Steps: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
304 * - Open temporary DirectInputDevice interface. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
305 * - Create DirectInputDevice2 interface. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
306 * - Release DirectInputDevice interface. |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
307 * - Call SDL_SYS_HapticOpenFromDevice2 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
308 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
309 static int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
310 SDL_SYS_HapticOpenFromInstance(SDL_Haptic * haptic, DIDEVICEINSTANCE instance) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
311 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
312 HRESULT ret; |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
313 int ret2; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
314 LPDIRECTINPUTDEVICE device; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
315 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
316 /* Allocate the hwdata */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
317 haptic->hwdata = (struct haptic_hwdata *) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
318 SDL_malloc(sizeof(*haptic->hwdata)); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
319 if (haptic->hwdata == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
320 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
321 goto creat_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
322 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
323 SDL_memset(haptic->hwdata, 0, sizeof(*haptic->hwdata)); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
324 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
325 /* Open the device */ |
2569
806919b319d4
Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2568
diff
changeset
|
326 ret = IDirectInput_CreateDevice( dinput, &instance.guidInstance, |
806919b319d4
Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2568
diff
changeset
|
327 &device, NULL ); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
328 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
329 DI_SetError("Creating DirectInput device",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
330 goto creat_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
331 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
332 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
333 /* Now get the IDirectInputDevice2 interface, instead. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
334 ret = IDirectInputDevice_QueryInterface( device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
335 &IID_IDirectInputDevice2, |
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
336 (LPVOID *) &haptic->hwdata->device ); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
337 /* Done with the temporary one now. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
338 IDirectInputDevice_Release(device); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
339 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
340 DI_SetError("Querying DirectInput interface",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
341 goto creat_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
342 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
343 |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
344 ret2 = SDL_SYS_HapticOpenFromDevice2( haptic, haptic->hwdata->device ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
345 if (ret2 < 0) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
346 goto query_err; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
347 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
348 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
349 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
350 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
351 query_err: |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
352 IDirectInputDevice2_Release(haptic->hwdata->device); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
353 creat_err: |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
354 if (haptic->hwdata != NULL) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
355 SDL_free(haptic->hwdata); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
356 haptic->hwdata = NULL; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
357 } |
2620 | 358 return -1; |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
359 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
360 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
361 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
362 /* |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
363 * Opens the haptic device from the file descriptor. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
364 * |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
365 * Steps: |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
366 * - Set cooperative level. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
367 * - Set data format. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
368 * - Acquire exclusiveness. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
369 * - Reset actuators. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
370 * - Get supported featuers. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
371 */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
372 static int |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
373 SDL_SYS_HapticOpenFromDevice2(SDL_Haptic * haptic, LPDIRECTINPUTDEVICE2 device2) |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
374 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
375 { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
376 HRESULT ret; |
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset
|
377 DIPROPDWORD dipdw; |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
378 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
379 /* We'll use the device2 from now on. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
380 haptic->hwdata->device = device2; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
381 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
382 /* Grab it exclusively to use force feedback stuff. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
383 ret =IDirectInputDevice2_SetCooperativeLevel( haptic->hwdata->device, |
2580
64fa227c01ce
Added the concept of the HelperWindow to help with DirectInput.
Edgar Simo <bobbens@gmail.com>
parents:
2578
diff
changeset
|
384 SDL_HelperWindow, |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
385 DISCL_EXCLUSIVE | DISCL_BACKGROUND ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
386 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
387 DI_SetError("Setting cooperative level to exclusive",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
388 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
389 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
390 |
2588
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
391 /* Set data format. */ |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
392 ret = IDirectInputDevice2_SetDataFormat( haptic->hwdata->device, |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
393 &c_dfDIJoystick2 ); |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
394 if (FAILED(ret)) { |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
395 DI_SetError("Setting data format",ret); |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
396 goto acquire_err; |
2588
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
397 } |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
398 |
2601 | 399 /* Get number of axes. */ |
400 ret = IDirectInputDevice2_EnumObjects( haptic->hwdata->device, | |
401 DI_DeviceObjectCallback, | |
402 haptic, DIDFT_AXIS ); | |
403 if (FAILED(ret)) { | |
404 DI_SetError("Getting device axes",ret); | |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
405 goto acquire_err; |
2601 | 406 } |
407 | |
2587
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
408 /* Acquire the device. */ |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
409 ret = IDirectInputDevice2_Acquire(haptic->hwdata->device); |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
410 if (FAILED(ret)) { |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
411 DI_SetError("Acquiring DirectInput device",ret); |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
412 goto acquire_err; |
2587
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
413 } |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
414 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
415 /* Reset all actuators - just in case. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
416 ret = IDirectInputDevice2_SendForceFeedbackCommand( haptic->hwdata->device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
417 DISFFC_RESET ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
418 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
419 DI_SetError("Resetting device",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
420 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
421 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
422 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
423 /* Enabling actuators. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
424 ret = IDirectInputDevice2_SendForceFeedbackCommand( haptic->hwdata->device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
425 DISFFC_SETACTUATORSON ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
426 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
427 DI_SetError("Enabling actuators",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
428 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
429 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
430 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
431 /* Get supported effects. */ |
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
432 ret = IDirectInputDevice2_EnumEffects( haptic->hwdata->device, |
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
433 DI_EffectCallback, haptic, DIEFT_ALL ); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
434 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
435 DI_SetError("Enumerating supported effects",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
436 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
437 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
438 if (haptic->supported == 0) { /* Error since device supports nothing. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
439 SDL_SetError("Haptic: Internal error on finding supported effects."); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
440 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
441 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
442 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
443 /* Check autogain and autocenter. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
444 dipdw.diph.dwSize = sizeof(DIPROPDWORD); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
445 dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
446 dipdw.diph.dwObj = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
447 dipdw.diph.dwHow = DIPH_DEVICE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
448 dipdw.dwData = 10000; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
449 ret = IDirectInputDevice2_SetProperty( haptic->hwdata->device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
450 DIPROP_FFGAIN, &dipdw.diph ); |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
451 if (!FAILED(ret)) { /* Gain is supported. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
452 haptic->supported |= SDL_HAPTIC_GAIN; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
453 } |
2601 | 454 dipdw.diph.dwObj = 0; |
455 dipdw.diph.dwHow = DIPH_DEVICE; | |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
456 dipdw.dwData = DIPROPAUTOCENTER_OFF; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
457 ret = IDirectInputDevice2_SetProperty( haptic->hwdata->device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
458 DIPROP_AUTOCENTER, &dipdw.diph ); |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
459 if (!FAILED(ret)) { /* Autocenter is supported. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
460 haptic->supported |= SDL_HAPTIC_AUTOCENTER; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
461 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
462 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
463 /* Check maximum effects. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
464 haptic->neffects = 128; /* TODO actually figure this out. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
465 haptic->nplaying = 128; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
466 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
467 /* Prepare effects memory. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
468 haptic->effects = (struct haptic_effect *) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
469 SDL_malloc(sizeof(struct haptic_effect) * haptic->neffects); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
470 if (haptic->effects == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
471 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
472 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
473 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
474 /* Clear the memory */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
475 SDL_memset(haptic->effects, 0, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
476 sizeof(struct haptic_effect) * haptic->neffects); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
477 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
478 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
479 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
480 /* Error handling */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
481 acquire_err: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
482 IDirectInputDevice2_Unacquire(haptic->hwdata->device); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
483 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
484 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
485 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
486 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
487 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
488 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
489 * Opens a haptic device for usage. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
490 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
491 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
492 SDL_SYS_HapticOpen(SDL_Haptic * haptic) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
493 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
494 return SDL_SYS_HapticOpenFromInstance( haptic, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
495 SDL_hapticlist[haptic->index].instance ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
496 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
497 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
498 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
499 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
500 * Opens a haptic device from first mouse it finds for usage. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
501 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
502 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
503 SDL_SYS_HapticMouse(void) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
504 { |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
505 int i; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
506 |
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
507 /* Grab the first mouse haptic device we find. */ |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
508 for (i=0; i<SDL_numhaptics; i++) { |
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
509 if (SDL_hapticlist[i].capabilities.dwDevType == DIDEVTYPE_MOUSE ) { |
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
510 return i; |
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
511 } |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
512 } |
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
513 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
514 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
515 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
516 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
517 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
518 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
519 * Checks to see if a joystick has haptic features. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
520 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
521 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
522 SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
523 { |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
524 if (joystick->hwdata->Capabilities.dwFlags & DIDC_FORCEFEEDBACK) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
525 return SDL_TRUE; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
526 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
527 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
528 return SDL_FALSE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
529 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
530 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
531 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
532 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
533 * Checks to see if the haptic device and joystick and in reality the same. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
534 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
535 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
536 SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
537 { |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
538 HRESULT ret; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
539 DIDEVICEINSTANCE hap_instance, joy_instance; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
540 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
541 /* Get the device instances. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
542 ret = IDirectInputDevice2_GetDeviceInfo( haptic->hwdata->device, |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
543 &hap_instance ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
544 if (FAILED(ret)) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
545 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
546 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
547 ret = IDirectInputDevice2_GetDeviceInfo( joystick->hwdata->InputDevice, |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
548 &joy_instance ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
549 if (FAILED(ret)) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
550 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
551 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
552 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
553 if (DI_GUIDIsSame(&hap_instance.guidInstance, &joy_instance.guidInstance)) |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
554 return 1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
555 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
556 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
557 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
558 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
559 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
560 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
561 * Opens a SDL_Haptic from a SDL_Joystick. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
562 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
563 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
564 SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
565 { |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
566 int ret; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
567 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
568 ret = SDL_SYS_HapticOpenFromDevice2( haptic, joystick->hwdata->InputDevice ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
569 if (ret < 0) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
570 return -1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
571 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
572 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
573 /* It's using the joystick device. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
574 haptic->hwdata->is_joystick = 1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
575 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
576 return 0; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
577 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
578 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
579 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
580 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
581 * Closes the haptic device. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
582 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
583 void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
584 SDL_SYS_HapticClose(SDL_Haptic * haptic) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
585 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
586 if (haptic->hwdata) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
587 |
2561
3696b9ce8a37
Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c.
Edgar Simo <bobbens@gmail.com>
parents:
2551
diff
changeset
|
588 /* Free effects. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
589 SDL_free(haptic->effects); |
2561
3696b9ce8a37
Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c.
Edgar Simo <bobbens@gmail.com>
parents:
2551
diff
changeset
|
590 haptic->effects = NULL; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
591 haptic->neffects = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
592 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
593 /* Clean up */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
594 IDirectInputDevice2_Unacquire(haptic->hwdata->device); |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
595 /* Only release if isn't grabbed by a joystick. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
596 if (haptic->hwdata->is_joystick == 0) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
597 IDirectInputDevice2_Release(haptic->hwdata->device); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
598 } |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
599 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
600 /* Free */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
601 SDL_free(haptic->hwdata); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
602 haptic->hwdata = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
603 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
604 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
605 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
606 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
607 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
608 * Clean up after system specific haptic stuff |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
609 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
610 void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
611 SDL_SYS_HapticQuit(void) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
612 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
613 IDirectInput_Release(dinput); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
614 dinput = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
615 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
616 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
617 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
618 /* |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
619 * Converts an SDL trigger button to an DIEFFECT trigger button. |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
620 */ |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
621 static DWORD |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
622 DIGetTriggerButton( Uint16 button ) |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
623 { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
624 DWORD dwTriggerButton; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
625 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
626 dwTriggerButton = DIEB_NOTRIGGER; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
627 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
628 if (button != 0) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
629 dwTriggerButton = DIJOFS_BUTTON(button - 1); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
630 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
631 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
632 return dwTriggerButton; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
633 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
634 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
635 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
636 /* |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
637 * Sets the direction. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
638 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
639 static int |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
640 SDL_SYS_SetDirection( DIEFFECT * effect, SDL_HapticDirection *dir, int naxes ) |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
641 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
642 LONG *rglDir; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
643 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
644 /* Handle no axes a part. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
645 if (naxes == 0) { |
2599
e9641d2250e5
With no axes use spherical direction by default.
Edgar Simo <bobbens@gmail.com>
parents:
2598
diff
changeset
|
646 effect->dwFlags |= DIEFF_SPHERICAL; /* Set as default. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
647 effect->rglDirection = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
648 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
649 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
650 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
651 /* Has axes. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
652 rglDir = SDL_malloc( sizeof(LONG) * naxes ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
653 if (rglDir == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
654 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
655 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
656 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
657 SDL_memset( rglDir, 0, sizeof(LONG) * naxes ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
658 effect->rglDirection = rglDir; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
659 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
660 switch (dir->type) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
661 case SDL_HAPTIC_POLAR: |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
662 effect->dwFlags |= DIEFF_POLAR; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
663 rglDir[0] = dir->dir[0]; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
664 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
665 case SDL_HAPTIC_CARTESIAN: |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
666 effect->dwFlags |= DIEFF_CARTESIAN; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
667 rglDir[0] = dir->dir[0]; |
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
668 if (naxes > 1) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
669 rglDir[1] = dir->dir[1]; |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
670 if (naxes > 2) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
671 rglDir[2] = dir->dir[2]; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
672 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
673 case SDL_HAPTIC_SPHERICAL: |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
674 effect->dwFlags |= DIEFF_SPHERICAL; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
675 rglDir[0] = dir->dir[0]; |
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
676 if (naxes > 1) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
677 rglDir[1] = dir->dir[1]; |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
678 if (naxes > 2) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
679 rglDir[2] = dir->dir[2]; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
680 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
681 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
682 default: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
683 SDL_SetError("Haptic: Unknown direction type."); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
684 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
685 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
686 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
687 |
2609
eec0c81ede06
CONVERT now checks for overflows.
Edgar Simo <bobbens@gmail.com>
parents:
2607
diff
changeset
|
688 #define CONVERT(x) (((x) > 0x7FFF) ? 10000 : ((x)*10000) / 0x7FFF) |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
689 /* |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
690 * Creates the DIEFFECT from a SDL_HapticEffect. |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
691 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
692 static int |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
693 SDL_SYS_ToDIEFFECT( SDL_Haptic * haptic, DIEFFECT * dest, SDL_HapticEffect * src ) |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
694 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
695 int i; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
696 DICONSTANTFORCE *constant; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
697 DIPERIODIC *periodic; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
698 DICONDITION *condition; /* Actually an array of conditions - one per axis. */ |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
699 DIRAMPFORCE *ramp; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
700 DICUSTOMFORCE *custom; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
701 DIENVELOPE *envelope; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
702 SDL_HapticConstant *hap_constant; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
703 SDL_HapticPeriodic *hap_periodic; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
704 SDL_HapticCondition *hap_condition; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
705 SDL_HapticRamp *hap_ramp; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
706 SDL_HapticCustom *hap_custom; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
707 DWORD *axes; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
708 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
709 /* Set global stuff. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
710 SDL_memset(dest, 0, sizeof(DIEFFECT)); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
711 dest->dwSize = sizeof(DIEFFECT); /* Set the structure size. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
712 dest->dwSamplePeriod = 0; /* Not used by us. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
713 dest->dwGain = 10000; /* Gain is set globally, not locally. */ |
2600
d1140f0ebedf
Using DIEFF_OBJECTOFFSETS now that seems obligatory.
Edgar Simo <bobbens@gmail.com>
parents:
2599
diff
changeset
|
714 dest->dwFlags = DIEFF_OBJECTOFFSETS; /* Seems obligatory. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
715 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
716 /* Envelope. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
717 envelope = SDL_malloc( sizeof(DIENVELOPE) ); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
718 if (envelope == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
719 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
720 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
721 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
722 SDL_memset(envelope, 0, sizeof(DIENVELOPE)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
723 dest->lpEnvelope = envelope; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
724 envelope->dwSize = sizeof(DIENVELOPE); /* Always should be this. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
725 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
726 /* Axes. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
727 dest->cAxes = haptic->naxes; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
728 if (dest->cAxes > 0) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
729 axes = SDL_malloc(sizeof(DWORD) * dest->cAxes); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
730 if (axes == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
731 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
732 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
733 } |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
734 axes[0] = haptic->hwdata->axes[0]; /* Always at least one axis. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
735 if (dest->cAxes > 1) { |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
736 axes[1] = haptic->hwdata->axes[1]; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
737 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
738 if (dest->cAxes > 2) { |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
739 axes[2] = haptic->hwdata->axes[2]; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
740 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
741 dest->rgdwAxes = axes; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
742 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
743 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
744 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
745 /* The big type handling switch, even bigger then linux's version. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
746 switch (src->type) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
747 case SDL_HAPTIC_CONSTANT: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
748 hap_constant = &src->constant; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
749 constant = SDL_malloc( sizeof(DICONSTANTFORCE) ); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
750 if (constant == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
751 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
752 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
753 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
754 SDL_memset(constant, 0, sizeof(DICONSTANTFORCE)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
755 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
756 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
757 constant->lMagnitude = CONVERT(hap_constant->level); |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
758 dest->cbTypeSpecificParams = sizeof(DICONSTANTFORCE); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
759 dest->lpvTypeSpecificParams = constant; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
760 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
761 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
762 dest->dwDuration = hap_constant->length * 1000; /* In microseconds. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
763 dest->dwTriggerButton = DIGetTriggerButton(hap_constant->button); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
764 dest->dwTriggerRepeatInterval = hap_constant->interval; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
765 dest->dwStartDelay = hap_constant->delay * 1000; /* In microseconds. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
766 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
767 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
768 if (SDL_SYS_SetDirection(dest, &hap_constant->direction, dest->cAxes) < 0) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
769 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
770 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
771 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
772 /* Envelope */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
773 if ((hap_constant->attack_length==0) && (hap_constant->fade_length==0)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
774 SDL_free(dest->lpEnvelope); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
775 dest->lpEnvelope = NULL; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
776 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
777 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
778 envelope->dwAttackLevel = CONVERT(hap_constant->attack_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
779 envelope->dwAttackTime = hap_constant->attack_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
780 envelope->dwFadeLevel = CONVERT(hap_constant->fade_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
781 envelope->dwFadeTime = hap_constant->fade_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
782 } |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
783 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
784 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
785 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
786 case SDL_HAPTIC_SINE: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
787 case SDL_HAPTIC_SQUARE: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
788 case SDL_HAPTIC_TRIANGLE: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
789 case SDL_HAPTIC_SAWTOOTHUP: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
790 case SDL_HAPTIC_SAWTOOTHDOWN: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
791 hap_periodic = &src->periodic; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
792 periodic = SDL_malloc(sizeof(DIPERIODIC)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
793 if (periodic == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
794 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
795 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
796 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
797 SDL_memset(periodic, 0, sizeof(DIPERIODIC)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
798 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
799 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
800 periodic->dwMagnitude = CONVERT(hap_periodic->magnitude); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
801 periodic->lOffset = CONVERT(hap_periodic->offset); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
802 periodic->dwPhase = hap_periodic->phase; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
803 periodic->dwPeriod = hap_periodic->period * 1000; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
804 dest->cbTypeSpecificParams = sizeof(DIPERIODIC); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
805 dest->lpvTypeSpecificParams = periodic; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
806 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
807 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
808 dest->dwDuration = hap_periodic->length * 1000; /* In microseconds. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
809 dest->dwTriggerButton = DIGetTriggerButton(hap_periodic->button); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
810 dest->dwTriggerRepeatInterval = hap_periodic->interval; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
811 dest->dwStartDelay = hap_periodic->delay * 1000; /* In microseconds. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
812 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
813 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
814 if (SDL_SYS_SetDirection(dest, &hap_periodic->direction, dest->cAxes) < 0) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
815 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
816 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
817 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
818 /* Envelope */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
819 if ((hap_periodic->attack_length==0) && (hap_periodic->fade_length==0)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
820 SDL_free(dest->lpEnvelope); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
821 dest->lpEnvelope = NULL; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
822 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
823 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
824 envelope->dwAttackLevel = CONVERT(hap_periodic->attack_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
825 envelope->dwAttackTime = hap_periodic->attack_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
826 envelope->dwFadeLevel = CONVERT(hap_periodic->fade_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
827 envelope->dwFadeTime = hap_periodic->fade_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
828 } |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
829 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
830 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
831 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
832 case SDL_HAPTIC_SPRING: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
833 case SDL_HAPTIC_DAMPER: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
834 case SDL_HAPTIC_INERTIA: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
835 case SDL_HAPTIC_FRICTION: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
836 hap_condition = &src->condition; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
837 condition = SDL_malloc(sizeof(DICONDITION) * dest->cAxes); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
838 if (condition == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
839 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
840 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
841 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
842 SDL_memset(condition, 0, sizeof(DICONDITION)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
843 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
844 /* Specifics */ |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
845 for (i=0; i<(int)dest->cAxes; i++) { |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
846 condition[i].lOffset = CONVERT(hap_condition->center[i]); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
847 condition[i].lPositiveCoefficient = CONVERT(hap_condition->right_coeff[i]); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
848 condition[i].lNegativeCoefficient = CONVERT(hap_condition->left_coeff[i]); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
849 condition[i].dwPositiveSaturation = CONVERT(hap_condition->right_sat[i]); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
850 condition[i].dwNegativeSaturation = CONVERT(hap_condition->left_sat[i]); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
851 condition[i].lDeadBand = CONVERT(hap_condition->deadband[i]); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
852 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
853 dest->cbTypeSpecificParams = sizeof(DICONDITION) * dest->cAxes; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
854 dest->lpvTypeSpecificParams = condition; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
855 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
856 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
857 dest->dwDuration = hap_condition->length * 1000; /* In microseconds. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
858 dest->dwTriggerButton = DIGetTriggerButton(hap_condition->button); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
859 dest->dwTriggerRepeatInterval = hap_condition->interval; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
860 dest->dwStartDelay = hap_condition->delay * 1000; /* In microseconds. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
861 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
862 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
863 if (SDL_SYS_SetDirection(dest, &hap_condition->direction, dest->cAxes) < 0) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
864 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
865 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
866 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
867 /* Envelope */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
868 /* TODO Check is envelope actually used. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
869 envelope->dwAttackLevel = CONVERT(hap_condition->attack_level); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
870 envelope->dwAttackTime = hap_condition->attack_length * 1000; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
871 envelope->dwFadeLevel = CONVERT(hap_condition->fade_level); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
872 envelope->dwFadeTime = hap_condition->fade_length * 1000; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
873 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
874 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
875 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
876 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
877 case SDL_HAPTIC_RAMP: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
878 hap_ramp = &src->ramp; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
879 ramp = SDL_malloc(sizeof(DIRAMPFORCE)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
880 if (ramp == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
881 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
882 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
883 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
884 SDL_memset(ramp, 0, sizeof(DIRAMPFORCE)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
885 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
886 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
887 ramp->lStart = CONVERT(hap_ramp->start); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
888 ramp->lEnd = CONVERT(hap_ramp->end); |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
889 dest->cbTypeSpecificParams = sizeof(DIRAMPFORCE); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
890 dest->lpvTypeSpecificParams = ramp; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
891 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
892 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
893 dest->dwDuration = hap_ramp->length * 1000; /* In microseconds. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
894 dest->dwTriggerButton = DIGetTriggerButton(hap_ramp->button); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
895 dest->dwTriggerRepeatInterval = hap_ramp->interval; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
896 dest->dwStartDelay = hap_ramp->delay * 1000; /* In microseconds. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
897 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
898 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
899 if (SDL_SYS_SetDirection(dest, &hap_ramp->direction, dest->cAxes) < 0) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
900 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
901 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
902 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
903 /* Envelope */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
904 if ((hap_ramp->attack_length==0) && (hap_ramp->fade_length==0)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
905 SDL_free(dest->lpEnvelope); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
906 dest->lpEnvelope = NULL; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
907 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
908 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
909 envelope->dwAttackLevel = CONVERT(hap_ramp->attack_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
910 envelope->dwAttackTime = hap_ramp->attack_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
911 envelope->dwFadeLevel = CONVERT(hap_ramp->fade_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
912 envelope->dwFadeTime = hap_ramp->fade_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
913 } |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
914 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
915 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
916 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
917 case SDL_HAPTIC_CUSTOM: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
918 hap_custom = &src->custom; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
919 custom = SDL_malloc(sizeof(DICUSTOMFORCE)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
920 if (custom == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
921 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
922 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
923 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
924 SDL_memset(custom, 0, sizeof(DICUSTOMFORCE)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
925 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
926 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
927 custom->cChannels = hap_custom->channels; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
928 custom->dwSamplePeriod = hap_custom->period * 1000; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
929 custom->cSamples = hap_custom->samples; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
930 custom->rglForceData = SDL_malloc(sizeof(LONG)*custom->cSamples*custom->cChannels); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
931 for (i=0; i<hap_custom->samples*hap_custom->channels; i++) { /* Copy data. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
932 custom->rglForceData[i] = CONVERT(hap_custom->data[i]); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
933 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
934 dest->cbTypeSpecificParams = sizeof(DICUSTOMFORCE); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
935 dest->lpvTypeSpecificParams = custom; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
936 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
937 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
938 dest->dwDuration = hap_custom->length * 1000; /* In microseconds. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
939 dest->dwTriggerButton = DIGetTriggerButton(hap_custom->button); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
940 dest->dwTriggerRepeatInterval = hap_custom->interval; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
941 dest->dwStartDelay = hap_custom->delay * 1000; /* In microseconds. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
942 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
943 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
944 if (SDL_SYS_SetDirection(dest, &hap_custom->direction, dest->cAxes) < 0) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
945 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
946 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
947 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
948 /* Envelope */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
949 if ((hap_custom->attack_length==0) && (hap_custom->fade_length==0)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
950 SDL_free(dest->lpEnvelope); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
951 dest->lpEnvelope = NULL; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
952 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
953 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
954 envelope->dwAttackLevel = CONVERT(hap_custom->attack_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
955 envelope->dwAttackTime = hap_custom->attack_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
956 envelope->dwFadeLevel = CONVERT(hap_custom->fade_level); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
957 envelope->dwFadeTime = hap_custom->fade_length * 1000; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
958 } |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
959 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
960 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
961 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
962 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
963 default: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
964 SDL_SetError("Haptic: Unknown effect type."); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
965 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
966 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
967 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
968 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
969 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
970 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
971 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
972 /* |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
973 * Frees an DIEFFECT allocated by SDL_SYS_ToDIEFFECT. |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
974 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
975 static void |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
976 SDL_SYS_HapticFreeDIEFFECT( DIEFFECT * effect, int type ) |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
977 { |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
978 DICUSTOMFORCE *custom; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
979 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
980 if (effect->lpEnvelope != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
981 SDL_free(effect->lpEnvelope); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
982 effect->lpEnvelope = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
983 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
984 if (effect->rgdwAxes != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
985 SDL_free(effect->rgdwAxes); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
986 effect->rgdwAxes = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
987 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
988 if (effect->lpvTypeSpecificParams != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
989 if (type == SDL_HAPTIC_CUSTOM) { /* Must free the custom data. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
990 custom = (DICUSTOMFORCE*) effect->lpvTypeSpecificParams; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
991 SDL_free(custom->rglForceData); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
992 custom->rglForceData = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
993 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
994 SDL_free(effect->lpvTypeSpecificParams); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
995 effect->lpvTypeSpecificParams = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
996 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
997 if (effect->rglDirection != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
998 SDL_free(effect->rglDirection); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
999 effect->rglDirection = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1000 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1001 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1002 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1003 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1004 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1005 * Gets the effect type from the generic SDL haptic effect wrapper. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1006 */ |
2598 | 1007 static REFGUID |
1008 SDL_SYS_HapticEffectType(SDL_HapticEffect * effect) | |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1009 { |
2598 | 1010 switch (effect->type) { |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1011 case SDL_HAPTIC_CONSTANT: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1012 return &GUID_ConstantForce; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1013 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1014 case SDL_HAPTIC_RAMP: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1015 return &GUID_RampForce; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1016 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1017 case SDL_HAPTIC_SQUARE: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1018 return &GUID_Square; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1019 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1020 case SDL_HAPTIC_SINE: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1021 return &GUID_Sine; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1022 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1023 case SDL_HAPTIC_TRIANGLE: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1024 return &GUID_Triangle; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1025 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1026 case SDL_HAPTIC_SAWTOOTHUP: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1027 return &GUID_SawtoothUp; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1028 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1029 case SDL_HAPTIC_SAWTOOTHDOWN: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1030 return &GUID_SawtoothDown; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1031 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1032 case SDL_HAPTIC_SPRING: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1033 return &GUID_Spring; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1034 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1035 case SDL_HAPTIC_DAMPER: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1036 return &GUID_Damper; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1037 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1038 case SDL_HAPTIC_INERTIA: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1039 return &GUID_Inertia; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1040 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1041 case SDL_HAPTIC_FRICTION: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1042 return &GUID_Friction; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1043 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1044 case SDL_HAPTIC_CUSTOM: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1045 return &GUID_CustomForce; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1046 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1047 default: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1048 SDL_SetError("Haptic: Unknown effect type."); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1049 return NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1050 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1051 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1052 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1053 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1054 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1055 * Creates a new haptic effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1056 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1057 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1058 SDL_SYS_HapticNewEffect(SDL_Haptic * haptic, struct haptic_effect * effect, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1059 SDL_HapticEffect * base) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1060 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1061 HRESULT ret; |
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1062 |
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1063 /* Get the type. */ |
2598 | 1064 REFGUID type = SDL_SYS_HapticEffectType(base); |
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1065 if (type == NULL) { |
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1066 goto err_hweffect; |
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1067 } |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1068 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1069 /* Alloc the effect. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1070 effect->hweffect = (struct haptic_hweffect *) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1071 SDL_malloc(sizeof(struct haptic_hweffect)); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1072 if (effect->hweffect == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1073 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1074 goto err_hweffect; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1075 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1076 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1077 /* Get the effect. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1078 if (SDL_SYS_ToDIEFFECT(haptic, &effect->hweffect->effect, base) < 0) { |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1079 goto err_effectdone; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1080 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1081 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1082 /* Create the actual effect. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1083 ret = IDirectInputDevice2_CreateEffect(haptic->hwdata->device, type, |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1084 &effect->hweffect->effect, &effect->hweffect->ref, NULL); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1085 if (FAILED(ret)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1086 DI_SetError("Unable to create effect",ret); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1087 goto err_effectdone; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1088 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1089 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1090 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1091 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1092 err_effectdone: |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1093 SDL_SYS_HapticFreeDIEFFECT(&effect->hweffect->effect, base->type); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1094 err_hweffect: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1095 if (effect->hweffect != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1096 SDL_free(effect->hweffect); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1097 effect->hweffect = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1098 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1099 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1100 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1101 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1102 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1103 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1104 * Updates an effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1105 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1106 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1107 SDL_SYS_HapticUpdateEffect(SDL_Haptic * haptic, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1108 struct haptic_effect * effect, SDL_HapticEffect * data) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1109 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1110 HRESULT ret; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1111 DWORD flags; |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1112 DIEFFECT temp; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1113 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1114 /* Get the effect. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1115 SDL_memset(&temp, 0, sizeof(DIEFFECT)); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1116 if (SDL_SYS_ToDIEFFECT(haptic, &temp, data) < 0) { |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1117 goto err_update; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1118 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1119 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1120 /* Set the flags. Might be worthwhile to diff temp with loaded effect and |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1121 * only change those parameters. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1122 flags = DIEP_DIRECTION | |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1123 DIEP_DURATION | |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1124 DIEP_ENVELOPE | |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1125 DIEP_STARTDELAY | |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1126 DIEP_TRIGGERBUTTON | |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1127 DIEP_TRIGGERREPEATINTERVAL | |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1128 DIEP_TYPESPECIFICPARAMS; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1129 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1130 /* Create the actual effect. */ |
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1131 ret = IDirectInputEffect_SetParameters(effect->hweffect->ref, &temp, flags); |
2573
40b89e3d7ab5
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2572
diff
changeset
|
1132 if (FAILED(ret)) { |
40b89e3d7ab5
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2572
diff
changeset
|
1133 DI_SetError("Unable to update effect",ret); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1134 goto err_update; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1135 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1136 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1137 /* Copy it over. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1138 SDL_SYS_HapticFreeDIEFFECT(&effect->hweffect->effect, data->type); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1139 SDL_memcpy(&effect->hweffect->effect, &temp, sizeof(DIEFFECT)); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1140 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1141 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1142 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1143 err_update: |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1144 SDL_SYS_HapticFreeDIEFFECT(&temp, data->type); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1145 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1146 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1147 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1148 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1149 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1150 * Runs an effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1151 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1152 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1153 SDL_SYS_HapticRunEffect(SDL_Haptic * haptic, struct haptic_effect * effect, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1154 Uint32 iterations) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1155 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1156 HRESULT ret; |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1157 DWORD iter; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1158 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1159 /* Check if it's infinite. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1160 if (iterations == SDL_HAPTIC_INFINITY) { |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1161 iter = INFINITE; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1162 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1163 else |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1164 iter = iterations; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1165 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1166 /* Run the effect. */ |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1167 ret = IDirectInputEffect_Start( effect->hweffect->ref, iter, 0 ); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1168 if (FAILED(ret)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1169 DI_SetError("Running the effect",ret); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1170 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1171 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1172 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1173 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1174 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1175 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1176 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1177 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1178 * Stops an effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1179 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1180 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1181 SDL_SYS_HapticStopEffect(SDL_Haptic * haptic, struct haptic_effect * effect) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1182 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1183 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1184 |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1185 ret = IDirectInputEffect_Stop(effect->hweffect->ref); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1186 if (FAILED(ret)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1187 DI_SetError("Unable to stop effect",ret); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1188 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1189 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1190 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1191 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1192 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1193 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1194 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1195 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1196 * Frees the effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1197 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1198 void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1199 SDL_SYS_HapticDestroyEffect(SDL_Haptic * haptic, struct haptic_effect * effect) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1200 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1201 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1202 |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1203 ret = IDirectInputEffect_Unload(effect->hweffect->ref); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1204 if (FAILED(ret)) { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1205 DI_SetError("Removing effect from the device",ret); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1206 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1207 SDL_SYS_HapticFreeDIEFFECT(&effect->hweffect->effect, effect->effect.type); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1208 SDL_free(effect->hweffect); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1209 effect->hweffect = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1210 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1211 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1212 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1213 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1214 * Gets the status of a haptic effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1215 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1216 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1217 SDL_SYS_HapticGetEffectStatus(SDL_Haptic * haptic, struct haptic_effect * effect) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1218 { |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1219 SDL_SetError("Haptic: Status not supported."); |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1220 return -1; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1221 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1222 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1223 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1224 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1225 * Sets the gain. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1226 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1227 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1228 SDL_SYS_HapticSetGain(SDL_Haptic * haptic, int gain) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1229 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1230 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1231 DIPROPDWORD dipdw; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1232 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1233 /* Create the weird structure thingy. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1234 dipdw.diph.dwSize = sizeof(DIPROPDWORD); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1235 dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1236 dipdw.diph.dwObj = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1237 dipdw.diph.dwHow = DIPH_DEVICE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1238 dipdw.dwData = gain * 100; /* 0 to 10,000 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1239 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1240 /* Try to set the autocenter. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1241 ret = IDirectInputDevice2_SetProperty( haptic->hwdata->device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1242 DIPROP_FFGAIN, &dipdw.diph ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1243 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1244 DI_SetError("Setting gain",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1245 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1246 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1247 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1248 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1249 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1250 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1251 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1252 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1253 * Sets the autocentering. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1254 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1255 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1256 SDL_SYS_HapticSetAutocenter(SDL_Haptic * haptic, int autocenter) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1257 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1258 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1259 DIPROPDWORD dipdw; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1260 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1261 /* Create the weird structure thingy. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1262 dipdw.diph.dwSize = sizeof(DIPROPDWORD); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1263 dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1264 dipdw.diph.dwObj = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1265 dipdw.diph.dwHow = DIPH_DEVICE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1266 dipdw.dwData = (autocenter == 0) ? DIPROPAUTOCENTER_OFF : |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1267 DIPROPAUTOCENTER_ON; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1268 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1269 /* Try to set the autocenter. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1270 ret = IDirectInputDevice2_SetProperty( haptic->hwdata->device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1271 DIPROP_AUTOCENTER, &dipdw.diph ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1272 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1273 DI_SetError("Setting autocenter",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1274 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1275 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1276 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1277 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1278 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1279 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1280 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1281 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1282 #endif /* SDL_HAPTIC_DINPUT */ |