Mercurial > sdl-ios-xcode
annotate src/haptic/win32/SDL_syshaptic.c @ 2617:a168397d6549 gsoc2008_force_feedback
Finished implementing the haptic<->joystick functions.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Wed, 06 Aug 2008 09:06:41 +0000 |
parents | 088907e9a2bb |
children | fb71df34124f |
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 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
101 static BOOL CALLBACK 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
|
102 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
103 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
104 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
105 * 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
|
106 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
107 static void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
108 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
|
109 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
110 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
|
111 DXGetErrorString(err), |
72c4ac55f73c
Attempt to fix windows haptic port compilation errors.
Edgar Simo <bobbens@gmail.com>
parents:
2575
diff
changeset
|
112 DXGetErrorDescription(err)); |
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 /* |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
117 * 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
|
118 */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
119 static int |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
120 DI_GUIDIsSame(GUID * a, GUID * b) |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
121 { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
122 if (((a)->Data1 == (b)->Data1) && |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
123 ((a)->Data2 == (b)->Data2) && |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
124 ((a)->Data3 == (b)->Data3) && |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
125 (SDL_strcmp((a)->Data4, (b)->Data4)==0)) |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
126 return 1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
127 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
128 } |
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 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
131 /* |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
132 * Initializes the haptic subsystem. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
133 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
134 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
135 SDL_SYS_HapticInit(void) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
136 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
137 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
138 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
139 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
|
140 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
|
141 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
142 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
143 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
144 /* Clear all the memory. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
145 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
|
146 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
147 SDL_numhaptics = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
148 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
149 ret = CoInitialize(NULL); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
150 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
151 DI_SetError("Coinitialize",ret); |
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 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
|
156 &IID_IDirectInput, &dinput); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
157 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
158 DI_SetError("CoCreateInstance",ret); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
159 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
160 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
161 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
162 /* 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
|
163 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
|
164 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
165 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
|
166 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
167 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
168 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
169 /* Look for haptic devices. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
170 ret = IDirectInput_EnumDevices( dinput, |
2607
e0ca521516f6
Undocumented hack to get all force feedback devices.
Edgar Simo <bobbens@gmail.com>
parents:
2606
diff
changeset
|
171 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
|
172 EnumHapticsCallback, |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
173 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
|
174 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
175 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
|
176 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
177 } |
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 return SDL_numhaptics; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
180 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
181 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
182 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
183 * 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
|
184 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
185 static BOOL CALLBACK |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
186 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
|
187 { |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
188 HRESULT ret; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
189 LPDIRECTINPUTDEVICE device; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
190 |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
191 /* 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
|
192 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
|
193 sizeof(DIDEVICEINSTANCE)); |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
194 |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
195 /* Open the device */ |
2614 | 196 ret = IDirectInput_CreateDevice( dinput, &pdidInstance->guidInstance, |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
197 &device, NULL ); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
198 if (FAILED(ret)) { |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
199 /* DI_SetError("Creating DirectInput device",ret); */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
200 return DIENUM_CONTINUE; |
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 |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
203 /* Get capabilities. */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
204 SDL_hapticlist[SDL_numhaptics].capabilities.dwSize = sizeof(DIDEVCAPS); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
205 ret = IDirectInputDevice_GetCapabilities( device, |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
206 &SDL_hapticlist[SDL_numhaptics].capabilities ); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
207 if (FAILED(ret)) { |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
208 /* DI_SetError("Getting device capabilities",ret); */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
209 IDirectInputDevice_Release(device); |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
210 return DIENUM_CONTINUE; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
211 } |
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 /* Close up device and count it. */ |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
214 IDirectInputDevice_Release(device); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
215 SDL_numhaptics++; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
216 |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
217 /* 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
|
218 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
|
219 return DIENUM_STOP; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
220 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
221 return DIENUM_CONTINUE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
222 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
223 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
224 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
225 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
226 * 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
|
227 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
228 const char * |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
229 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
|
230 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
231 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
|
232 } |
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 * 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
|
237 */ |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
238 #define EFFECT_TEST(e,s) \ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
239 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
|
240 haptic->supported |= (s) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
241 static BOOL CALLBACK |
2571 | 242 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
|
243 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
244 /* Prepare the haptic device. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
245 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
|
246 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
247 /* Get supported. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
248 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
|
249 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
|
250 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
|
251 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
|
252 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
|
253 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
|
254 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
|
255 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
|
256 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
|
257 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
|
258 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
|
259 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
|
260 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
261 /* Check for more. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
262 return DIENUM_CONTINUE; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
263 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
264 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
265 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
266 /* |
2601 | 267 * Callback to get supported axes. |
268 */ | |
269 static BOOL CALLBACK | |
270 DI_DeviceObjectCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID pvRef) | |
271 { | |
2602 | 272 SDL_Haptic *haptic = (SDL_Haptic *) pvRef; |
2601 | 273 |
2605
0ea3be6e81a7
Make sure axes have force feedback actuators.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset
|
274 if ((dev->dwType & DIDFT_AXIS) && (dev->dwFlags & DIDOI_FFACTUATOR)) { |
2601 | 275 |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
276 haptic->hwdata->axes[haptic->naxes] = dev->dwOfs; |
2601 | 277 haptic->naxes++; |
278 | |
279 /* Currently using the artificial limit of 3 axes. */ | |
280 if (haptic->naxes >= 3) { | |
281 return DIENUM_STOP; | |
282 } | |
283 } | |
284 | |
285 return DIENUM_CONTINUE; | |
286 } | |
287 | |
288 | |
289 /* | |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
290 * 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
|
291 * |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
292 * Steps: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
293 * - Open temporary DirectInputDevice interface. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
294 * - Create DirectInputDevice2 interface. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
295 * - Release DirectInputDevice interface. |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
296 * - 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
|
297 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
298 static int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
299 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
|
300 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
301 HRESULT ret; |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
302 int ret2; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
303 LPDIRECTINPUTDEVICE device; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
304 DIPROPDWORD dipdw; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
305 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
306 /* Allocate the hwdata */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
307 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
|
308 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
|
309 if (haptic->hwdata == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
310 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
311 goto creat_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
312 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
313 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
|
314 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
315 /* 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
|
316 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
|
317 &device, NULL ); |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
318 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
319 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
|
320 goto creat_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
321 } |
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 /* 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
|
324 ret = IDirectInputDevice_QueryInterface( device, |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
325 &IID_IDirectInputDevice2, |
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
326 (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
|
327 /* 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
|
328 IDirectInputDevice_Release(device); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
329 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
330 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
|
331 goto creat_err; |
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 |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
334 ret2 = SDL_SYS_HapticOpenFromDevice2( haptic, haptic->hwdata->device ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
335 if (ret2 < 0) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
336 goto query_err; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
337 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
338 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
339 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
340 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
341 query_err: |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
342 IDirectInputDevice2_Release(haptic->hwdata->device); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
343 creat_err: |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
344 if (haptic->hwdata != NULL) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
345 SDL_free(haptic->hwdata); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
346 haptic->hwdata = NULL; |
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 |
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 /* |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
352 * Opens the haptic device from the file descriptor. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
353 * |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
354 * Steps: |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
355 * - Set cooperative level. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
356 * - Set data format. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
357 * - Acquire exclusiveness. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
358 * - Reset actuators. |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
359 * - Get supported featuers. |
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 static int |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
362 SDL_SYS_HapticOpenFromDevice2(SDL_Haptic * haptic, LPDIRECTINPUTDEVICE2 device2) |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
363 |
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 HRESULT ret; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
366 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
367 /* We'll use the device2 from now on. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
368 haptic->hwdata->device = device2; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
369 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
370 /* 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
|
371 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
|
372 SDL_HelperWindow, |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
373 DISCL_EXCLUSIVE | DISCL_BACKGROUND ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
374 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
375 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
|
376 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
377 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
378 |
2588
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
379 /* Set data format. */ |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
380 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
|
381 &c_dfDIJoystick2 ); |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
382 if (FAILED(ret)) { |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
383 DI_SetError("Setting data format",ret); |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
384 goto acquire_err; |
2588
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
385 } |
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset
|
386 |
2601 | 387 /* Get number of axes. */ |
388 ret = IDirectInputDevice2_EnumObjects( haptic->hwdata->device, | |
389 DI_DeviceObjectCallback, | |
390 haptic, DIDFT_AXIS ); | |
391 if (FAILED(ret)) { | |
392 DI_SetError("Getting device axes",ret); | |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
393 goto acquire_err; |
2601 | 394 } |
395 | |
2587
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
396 /* Acquire the device. */ |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
397 ret = IDirectInputDevice2_Acquire(haptic->hwdata->device); |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
398 if (FAILED(ret)) { |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
399 DI_SetError("Acquiring DirectInput device",ret); |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
400 goto acquire_err; |
2587
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
401 } |
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset
|
402 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
403 /* 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
|
404 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
|
405 DISFFC_RESET ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
406 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
407 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
|
408 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
409 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
410 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
411 /* Enabling actuators. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
412 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
|
413 DISFFC_SETACTUATORSON ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
414 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
415 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
|
416 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
417 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
418 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
419 /* Get supported effects. */ |
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
420 ret = IDirectInputDevice2_EnumEffects( haptic->hwdata->device, |
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset
|
421 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
|
422 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
423 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
|
424 goto acquire_err; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
425 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
426 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
|
427 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
|
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 /* Check autogain and autocenter. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
432 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
|
433 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
|
434 dipdw.diph.dwObj = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
435 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
|
436 dipdw.dwData = 10000; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
437 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
|
438 DIPROP_FFGAIN, &dipdw.diph ); |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
439 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
|
440 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
|
441 } |
2601 | 442 dipdw.diph.dwObj = 0; |
443 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
|
444 dipdw.dwData = DIPROPAUTOCENTER_OFF; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
445 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
|
446 DIPROP_AUTOCENTER, &dipdw.diph ); |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
447 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
|
448 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
|
449 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
450 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
451 /* Check maximum effects. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
452 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
|
453 haptic->nplaying = 128; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
454 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
455 /* Prepare effects memory. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
456 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
|
457 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
|
458 if (haptic->effects == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
459 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
460 goto acquire_err; |
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 /* Clear the memory */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
463 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
|
464 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
|
465 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
466 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
467 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
468 /* Error handling */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
469 acquire_err: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
470 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
|
471 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
472 |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
475 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
476 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
477 * 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
|
478 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
479 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
480 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
|
481 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
482 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
|
483 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
|
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 * 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
|
489 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
490 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
491 SDL_SYS_HapticMouse(void) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
492 { |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
493 int i; |
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
494 |
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
495 /* Grab the first mouse haptic device we find. */ |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
496 for (i=0; i<SDL_numhaptics; i++) { |
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
497 if (SDL_hapticlist[i].capabilities.dwDevType == DIDEVTYPE_MOUSE ) { |
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
498 return i; |
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
499 } |
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset
|
500 } |
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset
|
501 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
502 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
503 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
504 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
505 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
506 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
507 * 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
|
508 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
509 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
510 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
|
511 { |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
512 if (joystick->hwdata->Capabilities.dwFlags & DIDC_FORCEFEEDBACK) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
513 return SDL_TRUE; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
514 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
515 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
516 return SDL_FALSE; |
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 |
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 * 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
|
522 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
523 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
524 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
|
525 { |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
526 HRESULT ret; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
527 DIDEVICEINSTANCE hap_instance, joy_instance; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
528 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
529 /* Get the device instances. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
530 ret = IDirectInputDevice2_GetDeviceInfo( haptic->hwdata->device, |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
531 &hap_instance ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
532 if (FAILED(ret)) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
533 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
534 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
535 ret = IDirectInputDevice2_GetDeviceInfo( joystick->hwdata->InputDevice, |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
536 &joy_instance ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
537 if (FAILED(ret)) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
538 return 0; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
539 } |
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 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
|
542 return 1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
543 |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
544 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
545 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
546 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
547 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
548 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
549 * 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
|
550 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
551 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
552 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
|
553 { |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
554 int ret; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
555 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
556 ret = SDL_SYS_HapticOpenFromDevice2( haptic, joystick->hwdata->InputDevice ); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
557 if (ret < 0) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
558 return -1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
559 } |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
560 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
561 /* It's using the joystick device. */ |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
562 haptic->hwdata->is_joystick = 1; |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
563 |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
564 return 0; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
565 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
566 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
567 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
568 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
569 * Closes the haptic device. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
570 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
571 void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
572 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
|
573 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
574 if (haptic->hwdata) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
575 |
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
|
576 /* Free effects. */ |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
577 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
|
578 haptic->effects = NULL; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
579 haptic->neffects = 0; |
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 /* Clean up */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
582 IDirectInputDevice2_Unacquire(haptic->hwdata->device); |
2617
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
583 /* 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
|
584 if (haptic->hwdata->is_joystick == 0) { |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
585 IDirectInputDevice2_Release(haptic->hwdata->device); |
a168397d6549
Finished implementing the haptic<->joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset
|
586 } |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
587 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
588 /* Free */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
589 SDL_free(haptic->hwdata); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
590 haptic->hwdata = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
591 } |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
594 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
595 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
596 * 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
|
597 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
598 void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
599 SDL_SYS_HapticQuit(void) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
600 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
601 IDirectInput_Release(dinput); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
602 dinput = 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 /* |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
607 * 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
|
608 */ |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
609 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
|
610 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
|
611 { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
612 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
|
613 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
614 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
|
615 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
616 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
|
617 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
|
618 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
619 |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
620 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
|
621 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
622 |
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 /* |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
625 * Sets the direction. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
626 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
627 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
|
628 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
|
629 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
630 LONG *rglDir; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
631 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
632 /* 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
|
633 if (naxes == 0) { |
2599
e9641d2250e5
With no axes use spherical direction by default.
Edgar Simo <bobbens@gmail.com>
parents:
2598
diff
changeset
|
634 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
|
635 effect->rglDirection = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
636 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
637 } |
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 /* Has axes. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
640 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
|
641 if (rglDir == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
642 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
643 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
644 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
645 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
|
646 effect->rglDirection = rglDir; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
647 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
648 switch (dir->type) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
649 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
|
650 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
|
651 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
|
652 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
653 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
|
654 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
|
655 rglDir[0] = dir->dir[0]; |
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
656 if (naxes > 1) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
657 rglDir[1] = dir->dir[1]; |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
658 if (naxes > 2) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
659 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
|
660 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
661 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
|
662 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
|
663 rglDir[0] = dir->dir[0]; |
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
664 if (naxes > 1) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
665 rglDir[1] = dir->dir[1]; |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
666 if (naxes > 2) |
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset
|
667 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
|
668 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
669 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
670 default: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
671 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
|
672 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
673 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
674 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
675 |
2609
eec0c81ede06
CONVERT now checks for overflows.
Edgar Simo <bobbens@gmail.com>
parents:
2607
diff
changeset
|
676 #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
|
677 /* |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
678 * 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
|
679 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
680 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
|
681 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
|
682 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
683 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
|
684 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
|
685 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
|
686 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
|
687 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
|
688 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
|
689 DIENVELOPE *envelope; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
690 SDL_HapticConstant *hap_constant; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
691 SDL_HapticPeriodic *hap_periodic; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
692 SDL_HapticCondition *hap_condition; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
693 SDL_HapticRamp *hap_ramp; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
694 SDL_HapticCustom *hap_custom; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
695 DWORD *axes; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
696 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
697 /* 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
|
698 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
|
699 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
|
700 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
|
701 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
|
702 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
|
703 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
704 /* 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
|
705 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
|
706 if (envelope == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
707 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
708 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
709 } |
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(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
|
711 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
|
712 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
|
713 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
714 /* Axes. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
715 dest->cAxes = haptic->naxes; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
716 if (dest->cAxes > 0) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
717 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
|
718 if (axes == 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 } |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
722 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
|
723 if (dest->cAxes > 1) { |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
724 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
|
725 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
726 if (dest->cAxes > 2) { |
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset
|
727 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
|
728 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
729 dest->rgdwAxes = axes; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
730 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
731 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
732 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
733 /* 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
|
734 switch (src->type) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
735 case SDL_HAPTIC_CONSTANT: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
736 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
|
737 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
|
738 if (constant == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
739 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
740 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
741 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
742 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
|
743 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
744 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
745 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
|
746 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
|
747 dest->lpvTypeSpecificParams = constant; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
748 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
749 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
750 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
|
751 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
|
752 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
|
753 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
|
754 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
755 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
756 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
|
757 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
758 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
759 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
760 /* 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
|
761 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
|
762 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
|
763 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
|
764 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
765 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
766 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
|
767 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
|
768 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
|
769 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
|
770 } |
2551
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 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
773 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
774 case SDL_HAPTIC_SINE: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
775 case SDL_HAPTIC_SQUARE: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
776 case SDL_HAPTIC_TRIANGLE: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
777 case SDL_HAPTIC_SAWTOOTHUP: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
778 case SDL_HAPTIC_SAWTOOTHDOWN: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
779 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
|
780 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
|
781 if (periodic == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
782 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
783 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
784 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
785 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
|
786 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
787 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
788 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
|
789 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
|
790 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
|
791 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
|
792 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
|
793 dest->lpvTypeSpecificParams = periodic; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
794 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
795 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
796 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
|
797 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
|
798 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
|
799 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
|
800 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
801 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
802 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
|
803 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
804 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
805 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
806 /* 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
|
807 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
|
808 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
|
809 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
|
810 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
811 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
812 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
|
813 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
|
814 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
|
815 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
|
816 } |
2551
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 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
819 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
820 case SDL_HAPTIC_SPRING: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
821 case SDL_HAPTIC_DAMPER: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
822 case SDL_HAPTIC_INERTIA: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
823 case SDL_HAPTIC_FRICTION: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
824 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
|
825 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
|
826 if (condition == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
827 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
828 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
829 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
830 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
|
831 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
832 /* Specifics */ |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
833 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
|
834 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
|
835 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
|
836 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
|
837 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
|
838 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
|
839 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
|
840 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
841 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
|
842 dest->lpvTypeSpecificParams = condition; |
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 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
845 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
|
846 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
|
847 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
|
848 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
|
849 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
850 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
851 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
|
852 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
853 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
854 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
855 /* Envelope */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
856 /* 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
|
857 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
|
858 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
|
859 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
|
860 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
|
861 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
862 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
863 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
864 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
865 case SDL_HAPTIC_RAMP: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
866 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
|
867 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
|
868 if (ramp == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
869 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
870 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
871 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
872 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
|
873 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
874 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
875 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
|
876 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
|
877 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
|
878 dest->lpvTypeSpecificParams = ramp; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
879 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
880 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
881 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
|
882 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
|
883 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
|
884 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
|
885 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
886 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
887 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
|
888 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
889 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
890 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
891 /* 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
|
892 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
|
893 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
|
894 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
|
895 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
896 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
897 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
|
898 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
|
899 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
|
900 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
|
901 } |
2551
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 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
904 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
905 case SDL_HAPTIC_CUSTOM: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
906 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
|
907 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
|
908 if (custom == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
909 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
910 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
911 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
912 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
|
913 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
914 /* Specifics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
915 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
|
916 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
|
917 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
|
918 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
|
919 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
|
920 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
|
921 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
922 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
|
923 dest->lpvTypeSpecificParams = custom; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
924 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
925 /* Generics */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
926 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
|
927 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
|
928 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
|
929 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
|
930 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
931 /* Direction. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
932 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
|
933 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
934 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
935 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
936 /* 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
|
937 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
|
938 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
|
939 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
|
940 } |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
941 else { |
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
942 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
|
943 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
|
944 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
|
945 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
|
946 } |
2551
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 break; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
949 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
950 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
951 default: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
952 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
|
953 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
954 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
955 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
956 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
957 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
958 |
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 /* |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
961 * 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
|
962 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
963 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
|
964 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
|
965 { |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
966 DICUSTOMFORCE *custom; |
2551
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 if (effect->lpEnvelope != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
969 SDL_free(effect->lpEnvelope); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
970 effect->lpEnvelope = NULL; |
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 if (effect->rgdwAxes != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
973 SDL_free(effect->rgdwAxes); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
974 effect->rgdwAxes = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
975 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
976 if (effect->lpvTypeSpecificParams != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
977 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
|
978 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
|
979 SDL_free(custom->rglForceData); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
980 custom->rglForceData = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
981 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
982 SDL_free(effect->lpvTypeSpecificParams); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
983 effect->lpvTypeSpecificParams = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
984 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
985 if (effect->rglDirection != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
986 SDL_free(effect->rglDirection); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
987 effect->rglDirection = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
988 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
989 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
990 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
991 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
992 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
993 * 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
|
994 */ |
2598 | 995 static REFGUID |
996 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
|
997 { |
2598 | 998 switch (effect->type) { |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
999 case SDL_HAPTIC_CONSTANT: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1000 return &GUID_ConstantForce; |
2551
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 case SDL_HAPTIC_RAMP: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1003 return &GUID_RampForce; |
2551
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 case SDL_HAPTIC_SQUARE: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1006 return &GUID_Square; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1007 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1008 case SDL_HAPTIC_SINE: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1009 return &GUID_Sine; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1010 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1011 case SDL_HAPTIC_TRIANGLE: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1012 return &GUID_Triangle; |
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_SAWTOOTHUP: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1015 return &GUID_SawtoothUp; |
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_SAWTOOTHDOWN: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1018 return &GUID_SawtoothDown; |
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_SPRING: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1021 return &GUID_Spring; |
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_DAMPER: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1024 return &GUID_Damper; |
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_INERTIA: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1027 return &GUID_Inertia; |
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_FRICTION: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1030 return &GUID_Friction; |
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_CUSTOM: |
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset
|
1033 return &GUID_CustomForce; |
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 default: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1036 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
|
1037 return NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1038 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1039 } |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1042 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1043 * 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
|
1044 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1045 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1046 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
|
1047 SDL_HapticEffect * base) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1048 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1049 HRESULT ret; |
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1050 |
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1051 /* Get the type. */ |
2598 | 1052 REFGUID type = SDL_SYS_HapticEffectType(base); |
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1053 if (type == NULL) { |
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1054 goto err_hweffect; |
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1055 } |
2551
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 /* Alloc the effect. */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1058 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
|
1059 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
|
1060 if (effect->hweffect == NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1061 SDL_OutOfMemory(); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1062 goto err_hweffect; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1063 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1064 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1065 /* 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
|
1066 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
|
1067 goto err_effectdone; |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1070 /* 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
|
1071 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
|
1072 &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
|
1073 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
|
1074 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
|
1075 goto err_effectdone; |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1078 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1079 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1080 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
|
1081 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
|
1082 err_hweffect: |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1083 if (effect->hweffect != NULL) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1084 SDL_free(effect->hweffect); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1085 effect->hweffect = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1086 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1087 return -1; |
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 |
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 * Updates an effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1093 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1094 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1095 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
|
1096 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
|
1097 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1098 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
|
1099 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
|
1100 DIEFFECT temp; |
2551
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 /* 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
|
1103 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
|
1104 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
|
1105 goto err_update; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1106 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1107 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1108 /* 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
|
1109 * 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
|
1110 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
|
1111 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
|
1112 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
|
1113 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
|
1114 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
|
1115 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
|
1116 DIEP_TYPESPECIFICPARAMS; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1117 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1118 /* Create the actual effect. */ |
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset
|
1119 ret = IDirectInputEffect_SetParameters(effect->hweffect->ref, &temp, flags); |
2573
40b89e3d7ab5
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2572
diff
changeset
|
1120 if (FAILED(ret)) { |
40b89e3d7ab5
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2572
diff
changeset
|
1121 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
|
1122 goto err_update; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1123 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1124 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1125 /* 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
|
1126 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
|
1127 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
|
1128 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1129 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1130 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1131 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
|
1132 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
|
1133 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1134 } |
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 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1138 * Runs an effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1139 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1140 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1141 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
|
1142 Uint32 iterations) |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1143 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1144 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
|
1145 DWORD iter; |
2551
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 /* 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
|
1148 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
|
1149 iter = INFINITE; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1150 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1151 else |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1152 iter = iterations; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1153 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1154 /* 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
|
1155 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
|
1156 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
|
1157 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
|
1158 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1159 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1160 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1161 return 0; |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1164 |
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 * Stops an effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1167 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1168 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1169 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
|
1170 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1171 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1172 |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1173 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
|
1174 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
|
1175 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
|
1176 return -1; |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1179 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1180 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1181 |
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 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1184 * Frees the effect. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1185 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1186 void |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1187 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
|
1188 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1189 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1190 |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1191 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
|
1192 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
|
1193 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
|
1194 } |
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset
|
1195 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
|
1196 SDL_free(effect->hweffect); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1197 effect->hweffect = NULL; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1198 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1199 |
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 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1202 * 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
|
1203 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1204 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1205 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
|
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_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
|
1208 return -1; |
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1209 } |
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 * Sets the gain. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1214 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1215 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1216 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
|
1217 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1218 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1219 DIPROPDWORD dipdw; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1220 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1221 /* 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
|
1222 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
|
1223 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
|
1224 dipdw.diph.dwObj = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1225 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
|
1226 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
|
1227 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1228 /* 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
|
1229 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
|
1230 DIPROP_FFGAIN, &dipdw.diph ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1231 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1232 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
|
1233 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1234 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1235 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1236 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1237 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1238 |
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 /* |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1241 * Sets the autocentering. |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1242 */ |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1243 int |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1244 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
|
1245 { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1246 HRESULT ret; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1247 DIPROPDWORD dipdw; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1248 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1249 /* 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
|
1250 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
|
1251 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
|
1252 dipdw.diph.dwObj = 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1253 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
|
1254 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
|
1255 DIPROPAUTOCENTER_ON; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1256 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1257 /* 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
|
1258 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
|
1259 DIPROP_AUTOCENTER, &dipdw.diph ); |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1260 if (FAILED(ret)) { |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1261 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
|
1262 return -1; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1263 } |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1264 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1265 return 0; |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1266 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1267 } |
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 |
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset
|
1270 #endif /* SDL_HAPTIC_DINPUT */ |