most unused arg warnings corrected.
[blender.git] / source / blender / makesdna / DNA_sensor_types.h
1 /**
2  * blenlib/DNA_sensor_types.h (mar-2001 nzc)
3  *      
4  * $Id$ 
5  *
6  * ***** BEGIN GPL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL LICENSE BLOCK *****
30  */
31 #ifndef DNA_SENSOR_TYPES_H
32 #define DNA_SENSOR_TYPES_H
33
34 struct Object;
35 struct Material;
36
37 /* ****************** SENSORS ********************* */
38
39 typedef struct bNearSensor {
40         char name[32];
41         float dist, resetdist;
42         int lastval, pad;
43 } bNearSensor;
44
45 /**
46  * Defines the settings of a mouse sensor.
47  */
48 typedef struct bMouseSensor {
49         /**
50          * The type of key this sensor listens to. 
51          */
52         short type;
53         short flag;
54         short pad1;
55         short pad2;
56 } bMouseSensor;
57
58 typedef struct bTouchSensor {
59         char name[32];
60         struct Material *ma;
61         float dist, pad;
62 } bTouchSensor;
63
64 typedef struct bKeyboardSensor {
65         short key, qual;
66         short type, qual2;
67         /**
68          * Name of the target property
69          */
70         char targetName[32];
71         /**
72          * Name of the toggle property
73          */
74         char toggleName[32];
75 } bKeyboardSensor;
76
77 typedef struct bPropertySensor {
78         int type;
79         int pad;
80         char name[32];
81         char value[32];
82         char maxvalue[32];
83 } bPropertySensor;
84
85 typedef struct bActuatorSensor {
86         int type;
87         int pad;
88         char name[32];
89 } bActuatorSensor;
90
91 typedef struct bDelaySensor {
92         short delay;
93         short duration;
94         short flag;
95         short pad;
96 } bDelaySensor;
97
98 typedef struct bCollisionSensor {
99         char name[32];          /* property name */
100         char materialName[32];  /* material      */
101         // struct Material *ma; // XXX remove materialName
102         short damptimer, damp;
103         short mode;             /* flag to choose material or property */
104          short pad2;
105 } bCollisionSensor;
106
107 typedef struct bRadarSensor {
108         char name[32];
109         float angle;
110         float range;
111         short flag, axis;
112 } bRadarSensor;
113
114 typedef struct bRandomSensor {
115         char name[32];
116         int seed;
117         int delay;
118 } bRandomSensor;
119
120 typedef struct bRaySensor {
121         char name[32];
122         float range;
123         char propname[32];
124         char matname[32];
125         //struct Material *ma; // XXX remove materialName
126         short mode;
127         short pad1;
128         int axisflag;
129 } bRaySensor;
130
131 typedef struct bArmatureSensor {
132         char posechannel[32];
133         char constraint[32];
134         int  type;
135         float value;
136 } bArmatureSensor;
137
138 typedef struct bMessageSensor {
139         /**
140          * (Possible future use) pointer to a single sender object
141          */
142         struct Object *fromObject;
143
144         /**
145          * Can be used to filter on subjects like this
146          */
147         char subject[32];
148
149         /**
150          * (Possible future use) body to filter on
151          */
152         char body[32];
153 } bMessageSensor;
154
155 typedef struct bSensor {
156         struct bSensor *next, *prev;
157         /* pulse and freq are the bool toggle and frame count for pulse mode */
158         short type, otype, flag, pulse;
159         short freq, totlinks, pad1, pad2;
160         char name[32];
161         void *data;
162         
163         struct bController **links;
164         
165         struct Object *ob;
166
167         /* just add here, to avoid align errors... */
168         short invert; /* Whether or not to invert the output. */
169         short level;  /* Whether the sensor is level base (edge by default) */
170         short tap;
171         short pad;
172 } bSensor;
173
174 typedef struct bJoystickSensor {
175         char name[32];
176         char type;
177         char joyindex;
178         short flag;
179         short axis;
180         short axis_single;
181         int axisf;
182         int button;
183         int hat;
184         int hatf;
185         int precision;
186 } bJoystickSensor;
187
188 /* bMouseSensor->type: uses blender event defines */
189
190 /* bMouseSensor->flag: only pulse for now */
191 #define SENS_MOUSE_FOCUS_PULSE  1
192
193 /* propertysensor->type */
194 #define SENS_PROP_EQUAL         0
195 #define SENS_PROP_NEQUAL        1
196 #define SENS_PROP_INTERVAL      2
197 #define SENS_PROP_CHANGED       3
198 #define SENS_PROP_EXPRESSION    4
199
200 /* raysensor->axisflag */
201 /* flip x and y to make y default!!! */
202 #define SENS_RAY_X_AXIS     1
203 #define SENS_RAY_Y_AXIS     0
204 #define SENS_RAY_Z_AXIS     2
205 #define SENS_RAY_NEG_X_AXIS     3
206 #define SENS_RAY_NEG_Y_AXIS     4
207 #define SENS_RAY_NEG_Z_AXIS     5
208 //#define SENS_RAY_NEGATIVE_AXIS     1
209
210 /* bMessageSensor->type */
211 #define SENS_MESG_MESG          0
212 #define SENS_MESG_PROP          1
213
214 /* bArmatureSensor->type */
215 #define SENS_ARM_STATE_CHANGED          0
216 #define SENS_ARM_LIN_ERROR_BELOW        1
217 #define SENS_ARM_LIN_ERROR_ABOVE        2
218 #define SENS_ARM_ROT_ERROR_BELOW        3
219 #define SENS_ARM_ROT_ERROR_ABOVE        4
220 /* update this when adding new type */
221 #define SENS_ARM_MAXTYPE                        4
222
223 /* sensor->type */
224 #define SENS_ALWAYS             0
225 #define SENS_TOUCH              1
226 #define SENS_NEAR               2
227 #define SENS_KEYBOARD   3
228 #define SENS_PROPERTY   4
229 #define SENS_MOUSE              5
230 #define SENS_COLLISION  6
231 #define SENS_RADAR              7
232 #define SENS_RANDOM     8
233 #define SENS_RAY        9
234 #define SENS_MESSAGE   10
235 #define SENS_JOYSTICK  11
236 #define SENS_ACTUATOR  12
237 #define SENS_DELAY     13
238 #define SENS_ARMATURE  14
239 /* sensor->flag */
240 #define SENS_SHOW               1
241 #define SENS_DEL                2
242 #define SENS_NEW                4
243 #define SENS_NOT                8
244 #define SENS_VISIBLE    16
245 #define SENS_PIN                32
246
247 /* sensor->pulse */
248 #define SENS_PULSE_CONT         0
249 #define SENS_PULSE_REPEAT       1
250 //#define SENS_PULSE_ONCE       2
251 #define SENS_NEG_PULSE_MODE 4
252
253 /* sensor->suppress */
254 #define SENS_SUPPRESS_POSITIVE (1 << 0)
255 #define SENS_SUPPRESS_NEGATIVE (1 << 1)
256
257 /* collision, ray sensor modes: */
258 /* A little bit fake: when property is active, the first bit is
259  * reset. Bite me :) So we don't actually use it, so we comment it out
260  * ... The reason for this is that we need to be backward compatible,
261  * and have a proper default value for this thing.
262  * */
263 #define SENS_COLLISION_PROPERTY 0
264 #define SENS_COLLISION_MATERIAL 1
265 #define SENS_COLLISION_PULSE 2
266
267 /* ray specific mode */
268 /* X-Ray means that the ray will traverse objects that don't have the property/material */
269 #define SENS_RAY_PROPERTY               0
270 #define SENS_RAY_MATERIAL               1
271 #define SENS_RAY_XRAY                   2
272
273 /* Some stuff for the mouse sensor Type: */
274 #define BL_SENS_MOUSE_LEFT_BUTTON    1
275 #define BL_SENS_MOUSE_MIDDLE_BUTTON  2
276 #define BL_SENS_MOUSE_RIGHT_BUTTON   4
277 #define BL_SENS_MOUSE_WHEEL_UP       5
278 #define BL_SENS_MOUSE_WHEEL_DOWN     6
279 #define BL_SENS_MOUSE_MOVEMENT       8
280 #define BL_SENS_MOUSE_MOUSEOVER      16
281 #define BL_SENS_MOUSE_MOUSEOVER_ANY      32
282
283 /* Joystick sensor - sorted by axis types */
284 #define SENS_JOY_ANY_EVENT              1
285
286 #define SENS_JOY_BUTTON         0                       /* axis type */
287 #define SENS_JOY_BUTTON_PRESSED 0
288 #define SENS_JOY_BUTTON_RELEASED        1
289
290 #define SENS_JOY_AXIS                   1               /* axis type */
291 #define SENS_JOY_X_AXIS         0
292 #define SENS_JOY_Y_AXIS         1
293 #define SENS_JOY_NEG_X_AXIS             2
294 #define SENS_JOY_NEG_Y_AXIS             3
295 #define SENS_JOY_PRECISION              4
296
297 #define SENS_JOY_HAT                    2               /* axis type */
298 #define SENS_JOY_HAT_DIR                0
299 #define SENS_JOY_HAT_UP                 1
300 #define SENS_JOY_HAT_RIGHT              2
301 #define SENS_JOY_HAT_DOWN               4
302 #define SENS_JOY_HAT_LEFT               8
303
304 #define SENS_JOY_HAT_UP_RIGHT   SENS_JOY_HAT_UP | SENS_JOY_HAT_RIGHT
305 #define SENS_JOY_HAT_DOWN_RIGHT SENS_JOY_HAT_DOWN | SENS_JOY_HAT_RIGHT
306 #define SENS_JOY_HAT_UP_LEFT    SENS_JOY_HAT_UP | SENS_JOY_HAT_LEFT
307 #define SENS_JOY_HAT_DOWN_LEFT  SENS_JOY_HAT_DOWN | SENS_JOY_HAT_LEFT
308
309
310 #define SENS_JOY_AXIS_SINGLE    3               /* axis type */
311
312
313 #define SENS_DELAY_REPEAT               1
314 // should match JOYINDEX_MAX in SCA_JoystickDefines.h */
315 #define SENS_JOY_MAXINDEX               8
316 #endif
317