- got rid of silly #define ..._BIT, #define ... (1<<..._BIT) stuff
[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/BL DUAL 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. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
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[32];
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[32];
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[32];
74         /**
75          * Name of the toggle property
76          */
77         char toggleName[32];
78 } bKeyboardSensor;
79
80 typedef struct bPropertySensor {
81     int type;
82     int pad;
83         char name[32];
84         char value[32];
85     char maxvalue[32];
86 } bPropertySensor;
87
88 typedef struct bCollisionSensor {
89         char name[32];          /* property name */
90         char materialName[32];  /* material      */
91         short damptimer, damp;
92         short mode;             /* flag to choose material or property */
93         short pad2;
94 } bCollisionSensor;
95
96 typedef struct bRadarSensor {
97         char name[32];
98         float angle;
99         float range;
100         short flag, axis;
101 } bRadarSensor;
102
103 typedef struct bRandomSensor {
104         char name[32];
105         int seed;
106         int delay;
107 } bRandomSensor;
108
109 typedef struct bRaySensor {
110         char name[32];
111         float range;
112         char propname[32];
113         char matname[32];
114         short mode;
115         short pad1;
116         int axisflag;
117 } bRaySensor;
118
119 typedef struct bMessageSensor {
120         /**
121          * (Possible future use) pointer to a single sender object
122          */
123         struct Object *fromObject;
124
125         /**
126          * Can be used to filter on subjects like this
127          */
128         char subject[32];
129
130         /**
131          * (Possible future use) body to filter on
132          */
133         char body[32];
134 } bMessageSensor;
135
136 typedef struct bSensor {
137         struct bSensor *next, *prev;
138         /* pulse and freq are the bool toggle and frame count for pulse mode */
139         short type, otype, flag, pulse;
140         short freq, totlinks, pad1, pad2;
141         char name[32];
142         void *data;
143         
144         struct bController **links;
145         
146         struct Object *ob;
147
148         /* just add here, to avoid align errors... */
149         short invert; /* Whether or not to invert the output. */
150         short freq2;  /* The negative pulsing frequency? Not used anymore... */
151         int pad;
152 } bSensor;
153
154 typedef struct bJoystickSensor {
155         char name[32];
156         short type;
157         short pad;
158         int axis;
159         int axisf;
160         int button;
161         int buttonf;
162         int hat;
163         int hatf;
164         int precision;
165 } bJoystickSensor;
166
167 /* bMouseSensor->type: uses blender event defines */
168
169 /* propertysensor->type */
170 #define SENS_PROP_EQUAL         0
171 #define SENS_PROP_NEQUAL        1
172 #define SENS_PROP_INTERVAL      2
173 #define SENS_PROP_CHANGED       3
174 #define SENS_PROP_EXPRESSION    4
175
176 /* raysensor->axisflag */
177 /* flip x and y to make y default!!! */
178 #define SENS_RAY_X_AXIS     1
179 #define SENS_RAY_Y_AXIS     0
180 #define SENS_RAY_Z_AXIS     2
181 #define SENS_RAY_NEG_X_AXIS     3
182 #define SENS_RAY_NEG_Y_AXIS     4
183 #define SENS_RAY_NEG_Z_AXIS     5
184 //#define SENS_RAY_NEGATIVE_AXIS     1
185
186 /* bMessageSensor->type */
187 #define SENS_MESG_MESG          0
188 #define SENS_MESG_PROP          1
189
190 /* sensor->type */
191 #define SENS_ALWAYS             0
192 #define SENS_TOUCH              1
193 #define SENS_NEAR               2
194 #define SENS_KEYBOARD   3
195 #define SENS_PROPERTY   4
196 #define SENS_MOUSE              5
197 #define SENS_COLLISION  6
198 #define SENS_RADAR              7
199 #define SENS_RANDOM     8
200 #define SENS_RAY        9
201 #define SENS_MESSAGE   10
202 #define SENS_JOYSTICK  11
203 /* sensor->flag */
204 #define SENS_SHOW               1
205 #define SENS_DEL                2
206 #define SENS_NEW                4
207 #define SENS_NOT                8
208
209 /* sensor->pulse */
210 #define SENS_PULSE_CONT         0
211 #define SENS_PULSE_REPEAT       1
212 //#define SENS_PULSE_ONCE       2
213 #define SENS_NEG_PULSE_MODE 4
214
215 /* sensor->suppress */
216 #define SENS_SUPPRESS_POSITIVE (1 << 0)
217 #define SENS_SUPPRESS_NEGATIVE (1 << 1)
218
219 /* collision, ray sensor modes: */
220 /* A little bit fake: when property is active, the first bit is
221  * reset. Bite me :) So we don't actually use it, so we comment it out
222  * ... The reason for this is that we need to be backward compatible,
223  * and have a proper default value for this thing.
224  * */
225 /*  #define SENS_COLLISION_PROPERTY 0  */
226 #define SENS_COLLISION_MATERIAL 1
227
228 /* Some stuff for the mouse sensor Type: */
229 #define BL_SENS_MOUSE_LEFT_BUTTON    1
230 #define BL_SENS_MOUSE_MIDDLE_BUTTON  2
231 #define BL_SENS_MOUSE_RIGHT_BUTTON   4
232 #define BL_SENS_MOUSE_WHEEL_UP       5
233 #define BL_SENS_MOUSE_WHEEL_DOWN     6
234 #define BL_SENS_MOUSE_MOVEMENT       8
235 #define BL_SENS_MOUSE_MOUSEOVER      16
236
237 #define SENS_JOY_BUTTON         0
238 #define SENS_JOY_BUTTON_PRESSED 0
239 #define SENS_JOY_BUTTON_RELEASED        1
240
241 #define SENS_JOY_AXIS                   1
242 #define SENS_JOY_X_AXIS         0
243 #define SENS_JOY_Y_AXIS         1
244 #define SENS_JOY_NEG_X_AXIS             2
245 #define SENS_JOY_NEG_Y_AXIS             3
246 #define SENS_JOY_PRECISION              4
247
248 #define SENS_JOY_HAT                    2
249 #define SENS_JOY_HAT_DIR                0
250
251 #endif
252