Did all of the .h's in source
[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 #ifdef HAVE_CONFIG_H
38 #include <config.h>
39 #endif
40
41 struct Object;
42 struct Material;
43
44 /* ****************** SENSORS ********************* */
45
46 typedef struct bNearSensor {
47         char name[32];
48         float dist, resetdist;
49         int lastval, pad;
50 } bNearSensor;
51
52 /**
53  * Defines the settings of a mouse sensor.
54  */
55 typedef struct bMouseSensor {
56         /**
57          * The type of key this sensor listens to. 
58          */
59         short type;
60         short flag;
61         short pad1;
62         short pad2;
63 } bMouseSensor;
64
65 typedef struct bTouchSensor {
66         char name[32];
67         struct Material *ma;
68         float dist, pad;
69 } bTouchSensor;
70
71 typedef struct bKeyboardSensor {
72         short key, qual;
73         short type, qual2;
74         /**
75          * Name of the target property
76          */
77         char targetName[32];
78         /**
79          * Name of the toggle property
80          */
81         char toggleName[32];
82 } bKeyboardSensor;
83
84 typedef struct bPropertySensor {
85     int type;
86     int pad;
87         char name[32];
88         char value[32];
89     char maxvalue[32];
90 } bPropertySensor;
91
92 typedef struct bCollisionSensor {
93         char name[32];          /* property name */
94         char materialName[32];  /* material      */
95         short damptimer, damp;
96         short mode;             /* flag to choose material or property */
97         short pad2;
98 } bCollisionSensor;
99
100 typedef struct bRadarSensor {
101         char name[32];
102         float angle;
103         float range;
104         short flag, axis;
105 } bRadarSensor;
106
107 typedef struct bRandomSensor {
108         char name[32];
109         int seed;
110         int delay;
111 } bRandomSensor;
112
113 typedef struct bRaySensor {
114         char name[32];
115         float range;
116         char propname[32];
117         char matname[32];
118         short mode;
119         short pad1;
120         int axisflag;
121 } bRaySensor;
122
123 typedef struct bMessageSensor {
124         /**
125          * (Possible future use) pointer to a single sender object
126          */
127         struct Object *fromObject;
128
129         /**
130          * Can be used to filter on subjects like this
131          */
132         char subject[32];
133
134         /**
135          * (Possible future use) body to filter on
136          */
137         char body[32];
138 } bMessageSensor;
139
140 typedef struct bSensor {
141         struct bSensor *next, *prev;
142         /* pulse and freq are the bool toggle and frame count for pulse mode */
143         short type, otype, flag, pulse;
144         short freq, totlinks, pad1, pad2;
145         char name[32];
146         void *data;
147         
148         struct bController **links;
149         
150         struct Object *ob;
151
152         /* just add here, to avoid align errors... */
153         short invert; /* Whether or not to invert the output. */
154         short freq2;  /* The negative pulsing frequency? Not used anymore... */
155         int pad;
156 } bSensor;
157
158 /* bMouseSensor->type: uses blender event defines */
159
160 /* propertysensor->type */
161 #define SENS_PROP_EQUAL         0
162 #define SENS_PROP_NEQUAL        1
163 #define SENS_PROP_INTERVAL      2
164 #define SENS_PROP_CHANGED       3
165 #define SENS_PROP_EXPRESSION    4
166
167 /* raysensor->axisflag */
168 /* flip x and y to make y default!!! */
169 #define SENS_RAY_X_AXIS     1
170 #define SENS_RAY_Y_AXIS     0
171 #define SENS_RAY_Z_AXIS     2
172 #define SENS_RAY_NEG_X_AXIS     3
173 #define SENS_RAY_NEG_Y_AXIS     4
174 #define SENS_RAY_NEG_Z_AXIS     5
175 //#define SENS_RAY_NEGATIVE_AXIS     1
176
177 /* bMessageSensor->type */
178 #define SENS_MESG_MESG          0
179 #define SENS_MESG_PROP          1
180
181 /* sensor->type */
182 #define SENS_ALWAYS             0
183 #define SENS_TOUCH              1
184 #define SENS_NEAR               2
185 #define SENS_KEYBOARD   3
186 #define SENS_PROPERTY   4
187 #define SENS_MOUSE              5
188 #define SENS_COLLISION  6
189 #define SENS_RADAR              7
190 #define SENS_RANDOM     8
191 #define SENS_RAY        9
192 #define SENS_MESSAGE   10
193
194 /* sensor->flag */
195 #define SENS_SHOW               1
196 #define SENS_DEL                2
197 #define SENS_NEW                4
198 #define SENS_NOT                8
199
200 /* sensor->pulse */
201 #define SENS_PULSE_CONT         0
202 #define SENS_PULSE_REPEAT       1
203 #define SENS_PULSE_ONCE         2
204 #define SENS_NEG_PULSE_MODE 4
205
206 /* sensor->suppress */
207 #define SENS_SUPPRESS_POSITIVE_BIT 0
208 #define SENS_SUPPRESS_NEGATIVE_BIT 1
209
210 #define SENS_SUPPRESS_POSITIVE (1 << SENS_SUPPRESS_POSITIVE_BIT)
211 #define SENS_SUPPRESS_NEGATIVE (1 << SENS_SUPPRESS_NEGATIVE_BIT)
212
213 /* collision, ray sensor modes: */
214 /* A little bit fake: when property is active, the first bit is
215  * reset. Bite me :) So we don't actually use it, so we comment it out
216  * ... The reason for this is that we need to be backward compatible,
217  * and have a proper default value for this thing.
218  * */
219 /*  #define SENS_COLLISION_PROPERTY 0  */
220 #define SENS_COLLISION_MATERIAL 1
221
222 /* Some stuff for the mouse sensor Type: */
223 #define BL_SENS_MOUSE_LEFT_BUTTON    1
224 #define BL_SENS_MOUSE_MIDDLE_BUTTON  2
225 #define BL_SENS_MOUSE_RIGHT_BUTTON   4
226 #define BL_SENS_MOUSE_MOVEMENT       8
227 #define BL_SENS_MOUSE_MOUSEOVER      16
228
229 #endif
230