Mouse Wheel Support for the Game Engine.
[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 /* bMouseSensor->type: uses blender event defines */
155
156 /* propertysensor->type */
157 #define SENS_PROP_EQUAL         0
158 #define SENS_PROP_NEQUAL        1
159 #define SENS_PROP_INTERVAL      2
160 #define SENS_PROP_CHANGED       3
161 #define SENS_PROP_EXPRESSION    4
162
163 /* raysensor->axisflag */
164 /* flip x and y to make y default!!! */
165 #define SENS_RAY_X_AXIS     1
166 #define SENS_RAY_Y_AXIS     0
167 #define SENS_RAY_Z_AXIS     2
168 #define SENS_RAY_NEG_X_AXIS     3
169 #define SENS_RAY_NEG_Y_AXIS     4
170 #define SENS_RAY_NEG_Z_AXIS     5
171 //#define SENS_RAY_NEGATIVE_AXIS     1
172
173 /* bMessageSensor->type */
174 #define SENS_MESG_MESG          0
175 #define SENS_MESG_PROP          1
176
177 /* sensor->type */
178 #define SENS_ALWAYS             0
179 #define SENS_TOUCH              1
180 #define SENS_NEAR               2
181 #define SENS_KEYBOARD   3
182 #define SENS_PROPERTY   4
183 #define SENS_MOUSE              5
184 #define SENS_COLLISION  6
185 #define SENS_RADAR              7
186 #define SENS_RANDOM     8
187 #define SENS_RAY        9
188 #define SENS_MESSAGE   10
189
190 /* sensor->flag */
191 #define SENS_SHOW               1
192 #define SENS_DEL                2
193 #define SENS_NEW                4
194 #define SENS_NOT                8
195
196 /* sensor->pulse */
197 #define SENS_PULSE_CONT         0
198 #define SENS_PULSE_REPEAT       1
199 #define SENS_PULSE_ONCE         2
200 #define SENS_NEG_PULSE_MODE 4
201
202 /* sensor->suppress */
203 #define SENS_SUPPRESS_POSITIVE_BIT 0
204 #define SENS_SUPPRESS_NEGATIVE_BIT 1
205
206 #define SENS_SUPPRESS_POSITIVE (1 << SENS_SUPPRESS_POSITIVE_BIT)
207 #define SENS_SUPPRESS_NEGATIVE (1 << SENS_SUPPRESS_NEGATIVE_BIT)
208
209 /* collision, ray sensor modes: */
210 /* A little bit fake: when property is active, the first bit is
211  * reset. Bite me :) So we don't actually use it, so we comment it out
212  * ... The reason for this is that we need to be backward compatible,
213  * and have a proper default value for this thing.
214  * */
215 /*  #define SENS_COLLISION_PROPERTY 0  */
216 #define SENS_COLLISION_MATERIAL 1
217
218 /* Some stuff for the mouse sensor Type: */
219 #define BL_SENS_MOUSE_LEFT_BUTTON    1
220 #define BL_SENS_MOUSE_MIDDLE_BUTTON  2
221 #define BL_SENS_MOUSE_RIGHT_BUTTON   4
222 #define BL_SENS_MOUSE_WHEEL_UP       5
223 #define BL_SENS_MOUSE_WHEEL_DOWN     6
224 #define BL_SENS_MOUSE_MOVEMENT       8
225 #define BL_SENS_MOUSE_MOUSEOVER      16
226
227 #endif
228