author  Edgar Simo <bobbens@gmail.com> 
Wed, 06 Aug 2008 10:48:35 +0000  
branch  gsoc2008_force_feedback 
changeset 2629  43a0416b3707 
parent 2626  53dd30491c71 
child 2631  a0845d7f4398 
permissions  rwrr 
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 021101301 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 
*/ 
2580
64fa227c01ce
Added the concept of the HelperWindow to help with DirectInput.
Edgar Simo <bobbens@gmail.com>
parents:
2578
diff
changeset

94 
extern HWND SDL_HelperWindow; 
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset

95 

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 
/* 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

98 
* Prototypes. 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

99 
*/ 
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

100 
static void DI_SetError(const char *str, HRESULT err); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

101 
static int DI_GUIDIsSame(const GUID * a, const GUID * b); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

102 
static int SDL_SYS_HapticOpenFromInstance(SDL_Haptic * haptic, DIDEVICEINSTANCE instance); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

103 
static int SDL_SYS_HapticOpenFromDevice2(SDL_Haptic * haptic, LPDIRECTINPUTDEVICE2 device2); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

104 
static DWORD DIGetTriggerButton( Uint16 button ); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

105 
static int SDL_SYS_SetDirection( DIEFFECT * effect, SDL_HapticDirection *dir, int naxes ); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

106 
static int SDL_SYS_ToDIEFFECT( SDL_Haptic * haptic, DIEFFECT * dest, SDL_HapticEffect * src ); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

107 
static void SDL_SYS_HapticFreeDIEFFECT( DIEFFECT * effect, int type ); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

108 
static REFGUID SDL_SYS_HapticEffectType(SDL_HapticEffect * effect); 
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

109 
/* Callbacks. */ 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

110 
static BOOL CALLBACK EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext); 
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

111 
static BOOL CALLBACK DI_EffectCallback(LPCDIEFFECTINFO pei, LPVOID pv); 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

112 

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 
* 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

116 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

117 
static void 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

118 
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

119 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

120 
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

121 
DXGetErrorString(err), 
72c4ac55f73c
Attempt to fix windows haptic port compilation errors.
Edgar Simo <bobbens@gmail.com>
parents:
2575
diff
changeset

122 
DXGetErrorDescription(err)); 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

123 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

124 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

125 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

126 
/* 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

127 
* 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

128 
*/ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

129 
static int 
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

130 
DI_GUIDIsSame(const GUID * a, const GUID * b) 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

131 
{ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

132 
if (((a)>Data1 == (b)>Data1) && 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

133 
((a)>Data2 == (b)>Data2) && 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

134 
((a)>Data3 == (b)>Data3) && 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

135 
(SDL_strcmp((a)>Data4, (b)>Data4)==0)) 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

136 
return 1; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

137 
return 0; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

138 
} 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

139 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

140 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

141 
/* 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

142 
* Initializes the haptic subsystem. 
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 
int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

145 
SDL_SYS_HapticInit(void) 
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 
HRESULT ret; 
2623
6deba05725ac
This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first.
Edgar Simo <bobbens@gmail.com>
parents:
2621
diff
changeset

148 
HINSTANCE instance; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

149 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

150 
if (dinput != NULL) { /* Already open. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

151 
SDL_SetError("Haptic: SubSystem already open."); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

152 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

153 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

154 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

155 
/* Clear all the memory. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

156 
SDL_memset(SDL_hapticlist, 0, sizeof(SDL_hapticlist)); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

157 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

158 
SDL_numhaptics = 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

159 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

160 
ret = CoInitialize(NULL); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

161 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

162 
DI_SetError("Coinitialize",ret); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

163 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

164 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

165 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

166 
ret = CoCreateInstance(&CLSID_DirectInput, NULL, CLSCTX_INPROC_SERVER, 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

167 
&IID_IDirectInput, &dinput); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

168 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

169 
DI_SetError("CoCreateInstance",ret); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

170 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

171 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

172 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

173 
/* Because we used CoCreateInstance, we need to Initialize it, first. */ 
2623
6deba05725ac
This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first.
Edgar Simo <bobbens@gmail.com>
parents:
2621
diff
changeset

174 
instance = GetModuleHandle(NULL); 
6deba05725ac
This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first.
Edgar Simo <bobbens@gmail.com>
parents:
2621
diff
changeset

175 
if (instance == NULL) { 
6deba05725ac
This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first.
Edgar Simo <bobbens@gmail.com>
parents:
2621
diff
changeset

176 
SDL_SetError("GetModuleHandle() failed with error code %d.", GetLastError()); 
6deba05725ac
This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first.
Edgar Simo <bobbens@gmail.com>
parents:
2621
diff
changeset

177 
return 1; 
6deba05725ac
This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first.
Edgar Simo <bobbens@gmail.com>
parents:
2621
diff
changeset

178 
} 
6deba05725ac
This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first.
Edgar Simo <bobbens@gmail.com>
parents:
2621
diff
changeset

179 
ret = IDirectInput_Initialize(dinput, instance, DIRECTINPUT_VERSION); 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

180 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

181 
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

182 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

183 
} 
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 
/* Look for haptic devices. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

186 
ret = IDirectInput_EnumDevices( dinput, 
2607
e0ca521516f6
Undocumented hack to get all force feedback devices.
Edgar Simo <bobbens@gmail.com>
parents:
2606
diff
changeset

187 
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

188 
EnumHapticsCallback, 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

189 
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

190 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

191 
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

192 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

193 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

194 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

195 
return SDL_numhaptics; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

196 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

197 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

198 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

199 
* 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

200 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

201 
static BOOL CALLBACK 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

202 
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

203 
{ 
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

204 
HRESULT ret; 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

205 
LPDIRECTINPUTDEVICE device; 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

206 

63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

207 
/* 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

208 
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

209 
sizeof(DIDEVICEINSTANCE)); 
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

210 

63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

211 
/* Open the device */ 
2614  212 
ret = IDirectInput_CreateDevice( dinput, &pdidInstance>guidInstance, 
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

213 
&device, NULL ); 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

214 
if (FAILED(ret)) { 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

215 
/* DI_SetError("Creating DirectInput device",ret); */ 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

216 
return DIENUM_CONTINUE; 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

217 
} 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

218 

63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

219 
/* Get capabilities. */ 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

220 
SDL_hapticlist[SDL_numhaptics].capabilities.dwSize = sizeof(DIDEVCAPS); 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

221 
ret = IDirectInputDevice_GetCapabilities( device, 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

222 
&SDL_hapticlist[SDL_numhaptics].capabilities ); 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

223 
if (FAILED(ret)) { 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

224 
/* DI_SetError("Getting device capabilities",ret); */ 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

225 
IDirectInputDevice_Release(device); 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

226 
return DIENUM_CONTINUE; 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

227 
} 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

228 

63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

229 
/* Close up device and count it. */ 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

230 
IDirectInputDevice_Release(device); 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

231 
SDL_numhaptics++; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

232 

2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

233 
/* 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

234 
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

235 
return DIENUM_STOP; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

236 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

237 
return DIENUM_CONTINUE; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

238 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

239 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

240 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

241 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

242 
* Return 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

243 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

244 
const char * 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

245 
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

246 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

247 
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

248 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

249 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

250 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

251 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

252 
* 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

253 
*/ 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

254 
#define EFFECT_TEST(e,s) \ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

255 
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

256 
haptic>supported = (s) 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

257 
static BOOL CALLBACK 
2571  258 
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

259 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

260 
/* Prepare the haptic device. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

261 
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

262 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

263 
/* Get supported. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

264 
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

265 
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

266 
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

267 
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

268 
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

269 
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

270 
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

271 
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

272 
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

273 
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

274 
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

275 
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

276 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

277 
/* Check for more. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

278 
return DIENUM_CONTINUE; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

279 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

280 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

281 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

282 
/* 
2601  283 
* Callback to get supported axes. 
284 
*/ 

285 
static BOOL CALLBACK 

286 
DI_DeviceObjectCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID pvRef) 

287 
{ 

2602  288 
SDL_Haptic *haptic = (SDL_Haptic *) pvRef; 
2601  289 

2605
0ea3be6e81a7
Make sure axes have force feedback actuators.
Edgar Simo <bobbens@gmail.com>
parents:
2604
diff
changeset

290 
if ((dev>dwType & DIDFT_AXIS) && (dev>dwFlags & DIDOI_FFACTUATOR)) { 
2601  291 

2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset

292 
haptic>hwdata>axes[haptic>naxes] = dev>dwOfs; 
2601  293 
haptic>naxes++; 
294 

295 
/* Currently using the artificial limit of 3 axes. */ 

296 
if (haptic>naxes >= 3) { 

297 
return DIENUM_STOP; 

298 
} 

299 
} 

300 

301 
return DIENUM_CONTINUE; 

302 
} 

303 

304 

305 
/* 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

306 
* 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

307 
* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

308 
* Steps: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

309 
*  Open temporary DirectInputDevice interface. 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

310 
*  Create DirectInputDevice2 interface. 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

311 
*  Release DirectInputDevice interface. 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

312 
*  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

313 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

314 
static int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

315 
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

316 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

317 
HRESULT ret; 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

318 
int ret2; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

319 
LPDIRECTINPUTDEVICE device; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

320 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

321 
/* Allocate the hwdata */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

322 
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

323 
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

324 
if (haptic>hwdata == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

325 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

326 
goto creat_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

327 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

328 
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

329 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

330 
/* 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

331 
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

332 
&device, NULL ); 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

333 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

334 
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

335 
goto creat_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

336 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

337 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

338 
/* 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

339 
ret = IDirectInputDevice_QueryInterface( device, 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

340 
&IID_IDirectInputDevice2, 
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset

341 
(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

342 
/* 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

343 
IDirectInputDevice_Release(device); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

344 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

345 
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

346 
goto creat_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

347 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

348 

2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

349 
ret2 = SDL_SYS_HapticOpenFromDevice2( haptic, haptic>hwdata>device ); 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

350 
if (ret2 < 0) { 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

351 
goto query_err; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

352 
} 
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 
return 0; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

355 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

356 
query_err: 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

357 
IDirectInputDevice2_Release(haptic>hwdata>device); 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

358 
creat_err: 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

359 
if (haptic>hwdata != NULL) { 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

360 
SDL_free(haptic>hwdata); 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

361 
haptic>hwdata = NULL; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

362 
} 
2620  363 
return 1; 
2617
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 

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 
/* 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

368 
* Opens the haptic device from the file descriptor. 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

369 
* 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

370 
* Steps: 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

371 
*  Set cooperative level. 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

372 
*  Set data format. 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

373 
*  Acquire exclusiveness. 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

374 
*  Reset actuators. 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

375 
*  Get supported featuers. 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

376 
*/ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

377 
static int 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

378 
SDL_SYS_HapticOpenFromDevice2(SDL_Haptic * haptic, LPDIRECTINPUTDEVICE2 device2) 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

379 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

380 
{ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

381 
HRESULT ret; 
2619
fb71df34124f
Made prototypes for all static functions.
Edgar Simo <bobbens@gmail.com>
parents:
2617
diff
changeset

382 
DIPROPDWORD dipdw; 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

383 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

384 
/* We'll use the device2 from now on. */ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

385 
haptic>hwdata>device = device2; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

386 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

387 
/* 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

388 
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

389 
SDL_HelperWindow, 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

390 
DISCL_EXCLUSIVE  DISCL_BACKGROUND ); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

391 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

392 
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

393 
goto acquire_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

394 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

395 

2588
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset

396 
/* Set data format. */ 
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset

397 
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

398 
&c_dfDIJoystick2 ); 
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset

399 
if (FAILED(ret)) { 
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset

400 
DI_SetError("Setting data format",ret); 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

401 
goto acquire_err; 
2588
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset

402 
} 
57bd3e462138
Seems like you have to set the data format too.
Edgar Simo <bobbens@gmail.com>
parents:
2587
diff
changeset

403 

2601  404 
/* Get number of axes. */ 
405 
ret = IDirectInputDevice2_EnumObjects( haptic>hwdata>device, 

406 
DI_DeviceObjectCallback, 

407 
haptic, DIDFT_AXIS ); 

408 
if (FAILED(ret)) { 

409 
DI_SetError("Getting device axes",ret); 

2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

410 
goto acquire_err; 
2601  411 
} 
412 

2587
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset

413 
/* Acquire the device. */ 
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset

414 
ret = IDirectInputDevice2_Acquire(haptic>hwdata>device); 
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset

415 
if (FAILED(ret)) { 
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset

416 
DI_SetError("Acquiring DirectInput device",ret); 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

417 
goto acquire_err; 
2587
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset

418 
} 
b4b3beaea5b5
Need to get cooperative level before acquiring.
Edgar Simo <bobbens@gmail.com>
parents:
2580
diff
changeset

419 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

420 
/* 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

421 
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

422 
DISFFC_RESET ); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

423 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

424 
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

425 
goto acquire_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

426 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

427 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

428 
/* Enabling actuators. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

429 
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

430 
DISFFC_SETACTUATORSON ); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

431 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

432 
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

433 
goto acquire_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

434 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

435 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

436 
/* Get supported effects. */ 
2568
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset

437 
ret = IDirectInputDevice2_EnumEffects( haptic>hwdata>device, 
5ad98a77bacb
First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2566
diff
changeset

438 
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

439 
if (FAILED(ret)) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

440 
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

441 
goto acquire_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

442 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

443 
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

444 
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

445 
goto acquire_err; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

446 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

447 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

448 
/* Check autogain and autocenter. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

449 
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

450 
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

451 
dipdw.diph.dwObj = 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

452 
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

453 
dipdw.dwData = 10000; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

454 
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

455 
DIPROP_FFGAIN, &dipdw.diph ); 
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset

456 
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

457 
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

458 
} 
2601  459 
dipdw.diph.dwObj = 0; 
460 
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

461 
dipdw.dwData = DIPROPAUTOCENTER_OFF; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

462 
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

463 
DIPROP_AUTOCENTER, &dipdw.diph ); 
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset

464 
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

465 
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

466 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

467 

2626
53dd30491c71
Added SDL_HAPTIC_STATUS support to windows haptic port.
Edgar Simo <bobbens@gmail.com>
parents:
2623
diff
changeset

468 
/* Status is always supported. */ 
53dd30491c71
Added SDL_HAPTIC_STATUS support to windows haptic port.
Edgar Simo <bobbens@gmail.com>
parents:
2623
diff
changeset

469 
haptic>supported = SDL_HAPTIC_STATUS; 
53dd30491c71
Added SDL_HAPTIC_STATUS support to windows haptic port.
Edgar Simo <bobbens@gmail.com>
parents:
2623
diff
changeset

470 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

471 
/* Check maximum effects. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

472 
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

473 
haptic>nplaying = 128; 
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 
/* Prepare effects memory. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

476 
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

477 
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

478 
if (haptic>effects == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

479 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

480 
goto acquire_err; 
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 
/* Clear the memory */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

483 
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

484 
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

485 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

486 
return 0; 
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 
/* Error handling */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

489 
acquire_err: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

490 
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

491 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

492 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

493 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

494 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

495 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

496 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

497 
* 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

498 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

499 
int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

500 
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

501 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

502 
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

503 
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

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 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

508 
* 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

509 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

510 
int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

511 
SDL_SYS_HapticMouse(void) 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

512 
{ 
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

513 
int i; 
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

514 

2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset

515 
/* Grab the first mouse haptic device we find. */ 
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

516 
for (i=0; i<SDL_numhaptics; i++) { 
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset

517 
if (SDL_hapticlist[i].capabilities.dwDevType == DIDEVTYPE_MOUSE ) { 
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset

518 
return i; 
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset

519 
} 
2612
63ea27a96a96
Check for capabilities at init.
Edgar Simo <bobbens@gmail.com>
parents:
2611
diff
changeset

520 
} 
2615
088907e9a2bb
Implemented SDL_SYS_HapticMouse on windows.
Edgar Simo <bobbens@gmail.com>
parents:
2614
diff
changeset

521 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

522 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

523 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

524 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

525 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

526 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

527 
* 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

528 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

529 
int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

530 
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

531 
{ 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

532 
if (joystick>hwdata>Capabilities.dwFlags & DIDC_FORCEFEEDBACK) { 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

533 
return SDL_TRUE; 
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 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

536 
return SDL_FALSE; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

537 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

538 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

539 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

540 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

541 
* 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

542 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

543 
int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

544 
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

545 
{ 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

546 
HRESULT ret; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

547 
DIDEVICEINSTANCE hap_instance, joy_instance; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

548 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

549 
/* Get the device instances. */ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

550 
ret = IDirectInputDevice2_GetDeviceInfo( haptic>hwdata>device, 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

551 
&hap_instance ); 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

552 
if (FAILED(ret)) { 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

553 
return 0; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

554 
} 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

555 
ret = IDirectInputDevice2_GetDeviceInfo( joystick>hwdata>InputDevice, 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

556 
&joy_instance ); 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

557 
if (FAILED(ret)) { 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

558 
return 0; 
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 
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

562 
return 1; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

563 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

564 
return 0; 
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 
* 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

570 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

571 
int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

572 
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

573 
{ 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

574 
int ret; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

575 

2621
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

576 
/* Allocate the hwdata */ 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

577 
haptic>hwdata = (struct haptic_hwdata *) 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

578 
SDL_malloc(sizeof(*haptic>hwdata)); 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

579 
if (haptic>hwdata == NULL) { 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

580 
SDL_OutOfMemory(); 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

581 
return 1; 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

582 
} 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

583 
SDL_memset(haptic>hwdata, 0, sizeof(*haptic>hwdata)); 
83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

584 

83659de20bf2
Forgot to alloc the hwdata when opening from joystick.
Edgar Simo <bobbens@gmail.com>
parents:
2620
diff
changeset

585 
/* Now open the device. */ 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

586 
ret = SDL_SYS_HapticOpenFromDevice2( haptic, joystick>hwdata>InputDevice ); 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

587 
if (ret < 0) { 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

588 
return 1; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

589 
} 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

590 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

591 
/* It's using the joystick device. */ 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

592 
haptic>hwdata>is_joystick = 1; 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

593 

a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

594 
return 0; 
2551
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 

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 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

599 
* Closes the haptic device. 
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 
void 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

602 
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

603 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

604 
if (haptic>hwdata) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

605 

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

606 
/* Free effects. */ 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

607 
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

608 
haptic>effects = NULL; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

609 
haptic>neffects = 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

610 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

611 
/* Clean up */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

612 
IDirectInputDevice2_Unacquire(haptic>hwdata>device); 
2617
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

613 
/* 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

614 
if (haptic>hwdata>is_joystick == 0) { 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

615 
IDirectInputDevice2_Release(haptic>hwdata>device); 
a168397d6549
Finished implementing the haptic<>joystick functions.
Edgar Simo <bobbens@gmail.com>
parents:
2615
diff
changeset

616 
} 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

617 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

618 
/* Free */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

619 
SDL_free(haptic>hwdata); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

620 
haptic>hwdata = NULL; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

621 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

622 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

623 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

624 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

625 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

626 
* 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

627 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

628 
void 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

629 
SDL_SYS_HapticQuit(void) 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

630 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

631 
IDirectInput_Release(dinput); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

632 
dinput = NULL; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

633 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

634 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

635 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

636 
/* 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

637 
* 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

638 
*/ 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

639 
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

640 
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

641 
{ 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

642 
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

643 

94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

644 
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

645 

94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

646 
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

647 
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

648 
} 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

649 

94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

650 
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

651 
} 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

652 

94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

653 

94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

654 
/* 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

655 
* Sets the direction. 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

656 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

657 
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

658 
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

659 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

660 
LONG *rglDir; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

661 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

662 
/* 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

663 
if (naxes == 0) { 
2599
e9641d2250e5
With no axes use spherical direction by default.
Edgar Simo <bobbens@gmail.com>
parents:
2598
diff
changeset

664 
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

665 
effect>rglDirection = NULL; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

666 
return 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

667 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

668 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

669 
/* Has axes. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

670 
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

671 
if (rglDir == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

672 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

673 
return 1; 
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 
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

676 
effect>rglDirection = rglDir; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

677 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

678 
switch (dir>type) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

679 
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

680 
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

681 
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

682 
return 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

683 
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

684 
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

685 
rglDir[0] = dir>dir[0]; 
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

686 
if (naxes > 1) 
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

687 
rglDir[1] = dir>dir[1]; 
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

688 
if (naxes > 2) 
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

689 
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

690 
return 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

691 
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

692 
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

693 
rglDir[0] = dir>dir[0]; 
2604
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

694 
if (naxes > 1) 
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

695 
rglDir[1] = dir>dir[1]; 
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

696 
if (naxes > 2) 
4eee4d565368
Better handling of direction axes.
Edgar Simo <bobbens@gmail.com>
parents:
2603
diff
changeset

697 
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

698 
return 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

699 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

700 
default: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

701 
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

702 
return 1; 
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 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

705 

2609
eec0c81ede06
CONVERT now checks for overflows.
Edgar Simo <bobbens@gmail.com>
parents:
2607
diff
changeset

706 
#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

707 
/* 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

708 
* 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

709 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

710 
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

711 
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

712 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

713 
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

714 
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

715 
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

716 
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

717 
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

718 
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

719 
DIENVELOPE *envelope; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

720 
SDL_HapticConstant *hap_constant; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

721 
SDL_HapticPeriodic *hap_periodic; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

722 
SDL_HapticCondition *hap_condition; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

723 
SDL_HapticRamp *hap_ramp; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

724 
SDL_HapticCustom *hap_custom; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

725 
DWORD *axes; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

726 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

727 
/* 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

728 
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

729 
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

730 
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

731 
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

732 
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

733 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

734 
/* 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

735 
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

736 
if (envelope == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

737 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

738 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

739 
} 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

740 
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

741 
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

742 
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

743 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

744 
/* Axes. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

745 
dest>cAxes = haptic>naxes; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

746 
if (dest>cAxes > 0) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

747 
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

748 
if (axes == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

749 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

750 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

751 
} 
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset

752 
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

753 
if (dest>cAxes > 1) { 
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset

754 
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

755 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

756 
if (dest>cAxes > 2) { 
2606
bb175d957174
Some correctness, especially on axes.
Edgar Simo <bobbens@gmail.com>
parents:
2605
diff
changeset

757 
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

758 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

759 
dest>rgdwAxes = axes; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

760 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

761 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

762 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

763 
/* 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

764 
switch (src>type) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

765 
case SDL_HAPTIC_CONSTANT: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

766 
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

767 
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

768 
if (constant == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

769 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

770 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

771 
} 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

772 
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

773 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

774 
/* Specifics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

775 
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

776 
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

777 
dest>lpvTypeSpecificParams = constant; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

778 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

779 
/* Generics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

780 
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

781 
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

782 
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

783 
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

784 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

785 
/* Direction. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

786 
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

787 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

788 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

789 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

790 
/* 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

791 
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

792 
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

793 
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

794 
} 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

795 
else { 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

796 
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

797 
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

798 
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

799 
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

800 
} 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

801 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

802 
break; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

803 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

804 
case SDL_HAPTIC_SINE: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

805 
case SDL_HAPTIC_SQUARE: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

806 
case SDL_HAPTIC_TRIANGLE: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

807 
case SDL_HAPTIC_SAWTOOTHUP: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

808 
case SDL_HAPTIC_SAWTOOTHDOWN: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

809 
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

810 
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

811 
if (periodic == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

812 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

813 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

814 
} 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

815 
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

816 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

817 
/* Specifics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

818 
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

819 
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

820 
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

821 
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

822 
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

823 
dest>lpvTypeSpecificParams = periodic; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

824 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

825 
/* Generics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

826 
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

827 
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

828 
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

829 
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

830 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

831 
/* Direction. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

832 
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

833 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

834 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

835 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

836 
/* 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

837 
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

838 
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

839 
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

840 
} 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

841 
else { 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

842 
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

843 
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

844 
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

845 
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

846 
} 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

847 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

848 
break; 
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 
case SDL_HAPTIC_SPRING: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

851 
case SDL_HAPTIC_DAMPER: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

852 
case SDL_HAPTIC_INERTIA: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

853 
case SDL_HAPTIC_FRICTION: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

854 
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

855 
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

856 
if (condition == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

857 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

858 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

859 
} 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

860 
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

861 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

862 
/* Specifics */ 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

863 
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

864 
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

865 
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

866 
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

867 
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

868 
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

869 
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

870 
} 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

871 
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

872 
dest>lpvTypeSpecificParams = condition; 
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 
/* Generics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

875 
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

876 
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

877 
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

878 
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

879 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

880 
/* Direction. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

881 
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

882 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

883 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

884 

2629  885 
/* Envelope  Not actually supported by most CONDITION implementations. */ 
886 
SDL_free(dest>lpEnvelope); 

887 
dest>lpEnvelope = NULL; 

2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

888 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

889 
break; 
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 
case SDL_HAPTIC_RAMP: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

892 
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

893 
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

894 
if (ramp == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

895 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

896 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

897 
} 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

898 
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

899 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

900 
/* Specifics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

901 
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

902 
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

903 
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

904 
dest>lpvTypeSpecificParams = ramp; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

905 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

906 
/* Generics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

907 
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

908 
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

909 
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

910 
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

911 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

912 
/* Direction. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

913 
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

914 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

915 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

916 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

917 
/* 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

918 
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

919 
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

920 
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

921 
} 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

922 
else { 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

923 
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

924 
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

925 
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

926 
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

927 
} 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

928 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

929 
break; 
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 
case SDL_HAPTIC_CUSTOM: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

932 
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

933 
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

934 
if (custom == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

935 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

936 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

937 
} 
2566
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_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

939 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

940 
/* Specifics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

941 
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

942 
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

943 
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

944 
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

945 
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

946 
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

947 
} 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

948 
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

949 
dest>lpvTypeSpecificParams = custom; 
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 
/* Generics */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

952 
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

953 
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

954 
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

955 
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

956 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

957 
/* Direction. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

958 
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

959 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

960 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

961 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

962 
/* 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

963 
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

964 
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

965 
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

966 
} 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

967 
else { 
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

968 
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

969 
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

970 
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

971 
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

972 
} 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

973 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

974 
break; 
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 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

977 
default: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

978 
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

979 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

980 
} 
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 
return 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

983 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

984 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

985 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

986 
/* 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

987 
* 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

988 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

989 
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

990 
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

991 
{ 
2566
94ff09afa478
Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents:
2561
diff
changeset

992 
DICUSTOMFORCE *custom; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

993 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

994 
if (effect>lpEnvelope != NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

995 
SDL_free(effect>lpEnvelope); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

996 
effect>lpEnvelope = NULL; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

997 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

998 
if (effect>rgdwAxes != NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

999 
SDL_free(effect>rgdwAxes); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1000 
effect>rgdwAxes = NULL; 
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 
if (effect>lpvTypeSpecificParams != NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1003 
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

1004 
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

1005 
SDL_free(custom>rglForceData); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1006 
custom>rglForceData = NULL; 
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 
SDL_free(effect>lpvTypeSpecificParams); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1009 
effect>lpvTypeSpecificParams = NULL; 
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 
if (effect>rglDirection != NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1012 
SDL_free(effect>rglDirection); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1013 
effect>rglDirection = NULL; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1014 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1015 
} 
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 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1018 
/* 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1019 
* 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

1020 
*/ 
2598  1021 
static REFGUID 
1022 
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

1023 
{ 
2598  1024 
switch (effect>type) { 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1025 
case SDL_HAPTIC_CONSTANT: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1026 
return &GUID_ConstantForce; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1027 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1028 
case SDL_HAPTIC_RAMP: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1029 
return &GUID_RampForce; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1030 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1031 
case SDL_HAPTIC_SQUARE: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1032 
return &GUID_Square; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1033 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1034 
case SDL_HAPTIC_SINE: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1035 
return &GUID_Sine; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1036 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1037 
case SDL_HAPTIC_TRIANGLE: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1038 
return &GUID_Triangle; 
2551
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 
case SDL_HAPTIC_SAWTOOTHUP: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1041 
return &GUID_SawtoothUp; 
2551
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 
case SDL_HAPTIC_SAWTOOTHDOWN: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1044 
return &GUID_SawtoothDown; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1045 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1046 
case SDL_HAPTIC_SPRING: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1047 
return &GUID_Spring; 
2551
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 
case SDL_HAPTIC_DAMPER: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1050 
return &GUID_Damper; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1051 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1052 
case SDL_HAPTIC_INERTIA: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1053 
return &GUID_Inertia; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1054 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1055 
case SDL_HAPTIC_FRICTION: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1056 
return &GUID_Friction; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1057 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1058 
case SDL_HAPTIC_CUSTOM: 
2572
bb1481265341
More windows haptic patches.
Edgar Simo <bobbens@gmail.com>
parents:
2571
diff
changeset

1059 
return &GUID_CustomForce; 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1060 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1061 
default: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1062 
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

1063 
return NULL; 
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 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1066 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1067 

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 
* 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

1070 
*/ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1071 
int 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1072 
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

1073 
SDL_HapticEffect * base) 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1074 
{ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1075 
HRESULT ret; 
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset

1076 

c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset

1077 
/* Get the type. */ 
2598  1078 
REFGUID type = SDL_SYS_HapticEffectType(base); 
2574
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset

1079 
if (type == NULL) { 
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset

1080 
goto err_hweffect; 
c1f07fdd1e2d
Windows build should compile after this.
Edgar Simo <bobbens@gmail.com>
parents:
2573
diff
changeset

1081 
} 
2551
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1082 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1083 
/* Alloc the effect. */ 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1084 
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

1085 
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

1086 
if (effect>hweffect == NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1087 
SDL_OutOfMemory(); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1088 
goto err_hweffect; 
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 
/* 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

1092 
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

1093 
goto err_effectdone; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1094 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1095 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1096 
/* 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

1097 
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

1098 
&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

1099 
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

1100 
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

1101 
goto err_effectdone; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1102 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1103 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1104 
return 0; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1105 

f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1106 
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

1107 
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

1108 
err_hweffect: 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1109 
if (effect>hweffect != NULL) { 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1110 
SDL_free(effect>hweffect); 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1111 
effect>hweffect = NULL; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1112 
} 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff
changeset

1113 
return 1; 
f010e1d4e431
First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
