2d Filters updated, now you can use custom filter and write your own GLSL shader...
[blender.git] / source / blender / makesdna / DNA_actuator_types.h
1 /**
2  * blenlib/DNA_actuator_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_ACTUATOR_TYPES_H
35 #define DNA_ACTUATOR_TYPES_H
36
37 struct Object;
38 struct Mesh;
39 struct Scene;
40 struct Group;
41 struct Text;
42
43 /* ****************** ACTUATORS ********************* */
44
45 /* unused now, moved to editobjectactuator in 2.02. Still needed for dna */
46 typedef struct bAddObjectActuator {
47         int time, pad;
48         struct Object *ob;
49 } bAddObjectActuator;
50
51 typedef struct bActionActuator {                                                                
52         struct bAction *act;    /* Pointer to action */                         
53         short   type, flag;             /* Playback type */                                     
54         int     sta, end;               /* Start & End frames */                        
55         char    name[32];               /* For property-driven playback */      
56         int     blendin;                /* Number of frames of blending */      
57         short   priority;               /* Execution priority */                        
58         short   strideaxis;             /* Displacement axis */
59         float   stridelength;   /* Displacement incurred by cycle */
60 } bActionActuator;                                                                                              
61
62 typedef struct bSoundActuator {
63         short flag, sndnr;
64         int sta, end;
65         short pad1[2];
66         struct bSound *sound;
67         short type, makecopy;
68         short copymade, pad2[1];
69 } bSoundActuator;
70
71 typedef struct bCDActuator {
72         short flag, sndnr;
73         int sta, end;
74         short type, track;
75         float volume;
76 } bCDActuator;
77
78 typedef struct bEditObjectActuator {
79         int time;
80         short type, flag;
81         struct Object *ob;
82         struct Mesh *me;
83         char name[32];
84         float linVelocity[3]; /* initial lin. velocity on creation */
85         short localflag; /* flag for the lin. vel: apply locally   */
86         short pad;
87 } bEditObjectActuator;
88
89 typedef struct bSceneActuator {
90         short type, flag;
91         int pad;
92         struct Scene *scene;
93         struct Object *camera;
94 } bSceneActuator;
95
96 typedef struct bPropertyActuator {
97         int flag, type;
98         char name[32], value[32];
99         struct Object *ob;
100 } bPropertyActuator;
101
102 typedef struct bObjectActuator {
103         int flag, type;
104         float forceloc[3], forcerot[3];
105         float loc[3], rot[3];
106         float dloc[3], drot[3];
107         float linearvelocity[3], angularvelocity[3];
108 } bObjectActuator;
109
110 typedef struct bIpoActuator {
111         short flag, type;
112         int sta, end;
113         char name[32];
114         
115         short pad1, cur, butsta, butend;
116         
117 } bIpoActuator;
118
119 typedef struct bCameraActuator {
120         struct Object *ob;
121         float height, min, max;
122         float fac;
123         short flag, axis;
124         float visifac;
125 } bCameraActuator ;
126
127 typedef struct bConstraintActuator {
128         short flag, damp;
129         float slow;
130         float minloc[3], maxloc[3];
131         float minrot[3], maxrot[3];
132 } bConstraintActuator;
133
134 typedef struct bGroupActuator {
135         short flag, type;
136         int sta, end;
137         char name[32];          /* property or groupkey */
138         
139         short pad[3], cur, butsta, butend;/* not referenced, can remove? */
140         struct Group *group;            /* only during game */
141         
142 } bGroupActuator;
143
144 /* I added a few extra fields here, to facilitate conversions                */
145 typedef struct bRandomActuator {
146         int  seed;
147         int   distribution;
148         int int_arg_1;
149         int int_arg_2;
150         float float_arg_1;
151         float float_arg_2;
152         char  propname[32];
153 } bRandomActuator;
154
155 typedef struct bMessageActuator {
156         /**
157          * Send to all objects with this propertyname. Empty to broadcast.
158          */
159         char toPropName[32];
160
161         /**
162          * (Possible future use) pointer to a single destination object.
163          */
164         struct Object *toObject;
165
166         /**
167          * Message Subject to send.
168          */
169         char subject[32];
170
171         /**
172          * bodyType is either 'User defined text' or PropName
173          */
174         short bodyType, pad1;
175         int pad2;
176
177         /**
178          * Either User Defined Text or our PropName to send value of
179          */
180         char body[32];
181 } bMessageActuator;
182
183 typedef struct bGameActuator {
184         short flag, type;
185         int sta, end;
186         char filename[64];
187         char loadaniname[64];
188 } bGameActuator;
189
190 typedef struct bVisibilityActuator {
191         /** bit 0: Is this object visible? */
192         int flag;
193 } bVisibilityActuator;
194
195 typedef struct bTwoDFilterActuator{
196         char pad[4];
197         /* Tells what type of 2D Filter*/
198         short type;
199         /* (flag == 0) means 2D filter is activate and
200            (flag != 0) means 2D filter is inactive*/
201         short flag;
202         int   int_arg;
203         /* a float argument */
204         float float_arg;
205         struct Text *text;
206 }bTwoDFilterActuator;
207
208 typedef struct bActuator {
209         struct bActuator *next, *prev, *mynew;
210         short type;
211         /**
212          * Tells what type of actuator data <data> holds. 
213          */
214         short flag;
215         short otype, go;
216         char name[32];
217
218         /**
219          * Data must point to an object actuator type struct.
220          */
221         void *data;
222
223         /**
224          * For ipo's and props: to find out which object the actuator
225          * belongs to */
226         struct Object *ob;              
227         
228 } bActuator;
229
230 typedef struct FreeCamera {
231         float mass, accelleration;
232         float maxspeed, maxrotspeed,  maxtiltspeed;
233         int flag;
234         float rotdamp, tiltdamp, speeddamp, pad;
235 } FreeCamera;
236
237 /* objectactuator->flag */
238 #define ACT_FORCE_LOCAL                 1
239 #define ACT_TORQUE_LOCAL                2
240 #define ACT_DLOC_LOCAL                  4
241 #define ACT_DROT_LOCAL                  8
242 #define ACT_LIN_VEL_LOCAL               16
243 #define ACT_ANG_VEL_LOCAL               32
244 //#define ACT_ADD_LIN_VEL_LOCAL 64
245 #define ACT_ADD_LIN_VEL                 64
246
247 #define ACT_OBJECT_FORCE        0
248 #define ACT_OBJECT_TORQUE       1
249 #define ACT_OBJECT_DLOC         2
250 #define ACT_OBJECT_DROT         3
251 #define ACT_OBJECT_LINV         4
252 #define ACT_OBJECT_ANGV         5
253
254 /* actuator->type */
255 #define ACT_OBJECT              0
256 #define ACT_IPO                 1
257 #define ACT_LAMP                2
258 #define ACT_CAMERA              3
259 #define ACT_MATERIAL    4
260 #define ACT_SOUND               5
261 #define ACT_PROPERTY    6
262         /* these two obsolete since 2.02 */
263 #define ACT_ADD_OBJECT  7
264 #define ACT_END_OBJECT  8
265
266 #define ACT_CONSTRAINT  9
267 #define ACT_EDIT_OBJECT 10
268 #define ACT_SCENE               11
269 #define ACT_GROUP               12
270 #define ACT_RANDOM      13
271 #define ACT_MESSAGE     14
272 #define ACT_ACTION              15      /* __ NLA */
273 #define ACT_CD                  16
274 #define ACT_GAME                17
275 #define ACT_VISIBILITY          18
276 #define ACT_2DFILTER    19
277
278 /* actuator flag */
279 #define ACT_SHOW                1
280 #define ACT_DEL                 2
281 #define ACT_NEW                 4
282
283 /* link codes */
284 #define LINK_SENSOR             0
285 #define LINK_CONTROLLER 1
286 #define LINK_ACTUATOR   2
287
288 /* keyboardsensor->type */
289 #define SENS_ALL_KEYS   1
290
291 /* actionactuator->type */
292 #define ACT_ACTION_PLAY                 0
293 #define ACT_ACTION_PINGPONG             1
294 #define ACT_ACTION_FLIPPER              2
295 #define ACT_ACTION_LOOP_STOP    3
296 #define ACT_ACTION_LOOP_END             4
297 #define ACT_ACTION_KEY2KEY              5
298 #define ACT_ACTION_FROM_PROP    6
299 #define ACT_ACTION_MOTION               7
300
301 /* ipoactuator->type */
302 #define ACT_IPO_PLAY            0
303 #define ACT_IPO_PINGPONG        1
304 #define ACT_IPO_FLIPPER         2
305 #define ACT_IPO_LOOP_STOP       3
306 #define ACT_IPO_LOOP_END        4
307 #define ACT_IPO_KEY2KEY         5
308 #define ACT_IPO_FROM_PROP       6
309
310 /* groupactuator->type */
311 #define ACT_GROUP_PLAY          0
312 #define ACT_GROUP_PINGPONG      1
313 #define ACT_GROUP_FLIPPER       2
314 #define ACT_GROUP_LOOP_STOP     3
315 #define ACT_GROUP_LOOP_END      4
316 #define ACT_GROUP_FROM_PROP     5
317 #define ACT_GROUP_SET           6
318
319 /* ipoactuator->flag */
320 #define ACT_IPOFORCE        (1 << 0)
321 #define ACT_IPOEND          (1 << 1)
322 #define ACT_IPOFORCE_LOCAL  (1 << 2)
323 #define ACT_IPOCHILD        (1 << 4)                    
324
325 /* ipoactuator->flag for k2k */
326 #define ACT_K2K_PREV            1
327 #define ACT_K2K_CYCLIC          2
328 #define ACT_K2K_PINGPONG        4
329 #define ACT_K2K_HOLD            8
330
331 /* property actuator->type */
332 #define ACT_PROP_ASSIGN         0
333 #define ACT_PROP_ADD            1
334 #define ACT_PROP_COPY           2
335
336 /* constraint flag */
337 #define ACT_CONST_LOCX          1
338 #define ACT_CONST_LOCY          2
339 #define ACT_CONST_LOCZ          4
340 #define ACT_CONST_ROTX          8
341 #define ACT_CONST_ROTY          16
342 #define ACT_CONST_ROTZ          32
343
344 /* editObjectActuator->type */
345 #define ACT_EDOB_ADD_OBJECT             0
346 #define ACT_EDOB_END_OBJECT             1
347 #define ACT_EDOB_REPLACE_MESH   2
348 #define ACT_EDOB_TRACK_TO               3
349 #define ACT_EDOB_MAKE_CHILD             4
350 #define ACT_EDOB_END_CHILD              5
351
352 /* editObjectActuator->flag */
353 #define ACT_TRACK_3D                    1
354
355 /* SceneActuator->type */
356 #define ACT_SCENE_RESTART               0
357 #define ACT_SCENE_SET                   1
358 #define ACT_SCENE_CAMERA                2
359 #define ACT_SCENE_ADD_FRONT             3
360 #define ACT_SCENE_ADD_BACK              4
361 #define ACT_SCENE_REMOVE                5
362 #define ACT_SCENE_SUSPEND               6
363 #define ACT_SCENE_RESUME                7
364
365
366 /* randomAct->distribution */
367 #define ACT_RANDOM_BOOL_CONST                  0
368 #define ACT_RANDOM_BOOL_UNIFORM                1
369 #define ACT_RANDOM_BOOL_BERNOUILLI             2
370 #define ACT_RANDOM_INT_CONST                   3
371 #define ACT_RANDOM_INT_UNIFORM                 4
372 #define ACT_RANDOM_INT_POISSON                     5
373 #define ACT_RANDOM_FLOAT_CONST                 6
374 #define ACT_RANDOM_FLOAT_UNIFORM               7
375 #define ACT_RANDOM_FLOAT_NORMAL                8
376 #define ACT_RANDOM_FLOAT_NEGATIVE_EXPONENTIAL  9
377
378 /*  SoundActuator->type */
379 #define ACT_SND_PLAY_STOP_SOUND         0
380 #define ACT_SND_PLAY_END_SOUND          1
381 #define ACT_SND_LOOP_STOP_SOUND         2
382 #define ACT_SND_LOOP_END_SOUND          3
383 #define ACT_SND_LOOP_BIDIRECTIONAL_SOUND                4
384 #define ACT_SND_LOOP_BIDIRECTIONAL_STOP_SOUND   5
385
386 /* messageactuator->type */
387 #define ACT_MESG_MESG           0
388 #define ACT_MESG_PROP           1
389
390 /* cdactuator->type */
391 #define ACT_CD_PLAY_ALL         0
392 #define ACT_CD_PLAY_TRACK       1
393 #define ACT_CD_LOOP_TRACK       2
394 #define ACT_CD_VOLUME           3
395 #define ACT_CD_STOP                     4
396 #define ACT_CD_PAUSE            5
397 #define ACT_CD_RESUME           6
398
399 /* gameactuator->type */
400 #define ACT_GAME_LOAD           0
401 #define ACT_GAME_START          1
402 #define ACT_GAME_RESTART        2
403 #define ACT_GAME_QUIT           3
404
405 /* visibilityact->flag */
406 /* Set means the object will become invisible */
407 #define ACT_VISIBILITY_INVISIBLE       (1 << 0)
408
409 /* twodfilter->type */
410 #define ACT_2DFILTER_ENABLED                    -2
411 #define ACT_2DFILTER_DISABLED                   -1
412 #define ACT_2DFILTER_NOFILTER                   0
413 #define ACT_2DFILTER_MOTIONBLUR                 1
414 #define ACT_2DFILTER_BLUR                               2
415 #define ACT_2DFILTER_SHARPEN                    3
416 #define ACT_2DFILTER_DILATION                   4
417 #define ACT_2DFILTER_EROSION                    5
418 #define ACT_2DFILTER_LAPLACIAN                  6
419 #define ACT_2DFILTER_SOBEL                              7
420 #define ACT_2DFILTER_PREWITT                    8
421 #define ACT_2DFILTER_GRAYSCALE                  9
422 #define ACT_2DFILTER_SEPIA                              10
423 #define ACT_2DFILTER_INVERT                             11
424 #define ACT_2DFILTER_CUSTOMFILTER               12
425 #define ACT_2DFILTER_NUMBER_OF_FILTERS  13
426 #endif
427
428