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