improvement of 2d-filter custom 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 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.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL LICENSE BLOCK *****
30  */
31 #ifndef DNA_ACTUATOR_TYPES_H
32 #define DNA_ACTUATOR_TYPES_H
33
34 struct Object;
35 struct Mesh;
36 struct Scene;
37 struct Group;
38 struct Text;
39
40 /* ****************** ACTUATORS ********************* */
41
42 /* unused now, moved to editobjectactuator in 2.02. Still needed for dna */
43 typedef struct bAddObjectActuator {
44         int time, pad;
45         struct Object *ob;
46 } bAddObjectActuator;
47
48 typedef struct bActionActuator {                                                                
49         struct bAction *act;    /* Pointer to action */                         
50         short   type, flag;             /* Playback type */                                     
51         int     sta, end;               /* Start & End frames */                        
52         char    name[32];               /* For property-driven playback */      
53         char    frameProp[32];  /* Set this property to the actions current frame */
54         short   blendin;                /* Number of frames of blending */
55         short   priority;               /* Execution priority */
56         short   end_reset;      /* Ending the actuator (negative pulse) wont reset the the action to its starting frame */
57         short   strideaxis;             /* Displacement axis */
58         float   stridelength;   /* Displacement incurred by cycle */
59 } bActionActuator;                                                                                              
60
61 typedef struct bSoundActuator {
62         short flag, sndnr;
63         int sta, end;
64         short pad1[2];
65         struct bSound *sound;
66         short type, makecopy;
67         short copymade, pad2[1];
68 } bSoundActuator;
69
70 typedef struct bCDActuator {
71         short flag, sndnr;
72         int sta, end;
73         short type, track;
74         float volume;
75 } bCDActuator;
76
77 typedef struct bEditObjectActuator {
78         int time;
79         short type, flag;
80         struct Object *ob;
81         struct Mesh *me;
82         char name[32];
83         float linVelocity[3]; /* initial lin. velocity on creation */
84         short localflag; /* flag for the lin. vel: apply locally   */
85         short dyn_operation;
86 } bEditObjectActuator;
87
88 typedef struct bSceneActuator {
89         short type, flag;
90         int pad;
91         struct Scene *scene;
92         struct Object *camera;
93 } bSceneActuator;
94
95 typedef struct bPropertyActuator {
96         int flag, type;
97         char name[32], value[32];
98         struct Object *ob;
99 } bPropertyActuator;
100
101 typedef struct bObjectActuator {
102         short flag, type, otype;
103         short damping;
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 type, mode;
129         short flag, damp;
130         short time, rotdamp;
131         int pad;
132         float minloc[3], maxloc[3];
133         float minrot[3], maxrot[3];
134         char matprop[32];
135 } bConstraintActuator;
136
137 typedef struct bGroupActuator {
138         short flag, type;
139         int sta, end;
140         char name[32];          /* property or groupkey */
141         
142         short pad[3], cur, butsta, butend;/* not referenced, can remove? */
143         struct Group *group;            /* only during game */
144         
145 } bGroupActuator;
146
147 /* I added a few extra fields here, to facilitate conversions                */
148 typedef struct bRandomActuator {
149         int  seed;
150         int   distribution;
151         int int_arg_1;
152         int int_arg_2;
153         float float_arg_1;
154         float float_arg_2;
155         char  propname[32];
156 } bRandomActuator;
157
158 typedef struct bMessageActuator {
159         /**
160          * Send to all objects with this propertyname. Empty to broadcast.
161          */
162         char toPropName[32];
163
164         /**
165          * (Possible future use) pointer to a single destination object.
166          */
167         struct Object *toObject;
168
169         /**
170          * Message Subject to send.
171          */
172         char subject[32];
173
174         /**
175          * bodyType is either 'User defined text' or PropName
176          */
177         short bodyType, pad1;
178         int pad2;
179
180         /**
181          * Either User Defined Text or our PropName to send value of
182          */
183         char body[32];
184 } bMessageActuator;
185
186 typedef struct bGameActuator {
187         short flag, type;
188         int sta, end;
189         char filename[64];
190         char loadaniname[64];
191 } bGameActuator;
192
193 typedef struct bVisibilityActuator {
194         /** bit 0: Is this object visible? */
195         int flag;
196 } bVisibilityActuator;
197
198 typedef struct bTwoDFilterActuator{
199         char pad[4];
200         /* Tells what type of 2D Filter */
201         short type;
202         /* (flag == 0) means 2D filter is activate and
203            (flag != 0) means 2D filter is inactive */
204         short flag;
205         int   int_arg;
206         /* a float argument */
207         float float_arg;
208         struct Text *text;
209 }bTwoDFilterActuator;
210
211 typedef struct bParentActuator {
212         char pad[4];
213         int type;
214         struct Object *ob;
215 } bParentActuator;
216
217 typedef struct bStateActuator {
218         int type;                       /* 0=Set, 1=Add, 2=Rem, 3=Chg */
219         unsigned int mask;      /* the bits to change */
220 } bStateActuator;
221
222 typedef struct bActuator {
223         struct bActuator *next, *prev, *mynew;
224         short type;
225         /**
226          * Tells what type of actuator data <data> holds. 
227          */
228         short flag;
229         short otype, go;
230         char name[32];
231
232         /**
233          * Data must point to an object actuator type struct.
234          */
235         void *data;
236
237         /**
238          * For ipo's and props: to find out which object the actuator
239          * belongs to */
240         struct Object *ob;              
241         
242 } bActuator;
243
244 typedef struct FreeCamera {
245         float mass, accelleration;
246         float maxspeed, maxrotspeed,  maxtiltspeed;
247         int flag;
248         float rotdamp, tiltdamp, speeddamp, pad;
249 } FreeCamera;
250
251 /* objectactuator->flag */
252 #define ACT_FORCE_LOCAL                 1
253 #define ACT_TORQUE_LOCAL                2
254 #define ACT_SERVO_LIMIT_X               2
255 #define ACT_DLOC_LOCAL                  4
256 #define ACT_SERVO_LIMIT_Y               4
257 #define ACT_DROT_LOCAL                  8
258 #define ACT_SERVO_LIMIT_Z               8
259 #define ACT_LIN_VEL_LOCAL               16
260 #define ACT_ANG_VEL_LOCAL               32
261 //#define ACT_ADD_LIN_VEL_LOCAL 64
262 #define ACT_ADD_LIN_VEL                 64
263
264 /* objectactuator->type */
265 #define ACT_OBJECT_NORMAL       0
266 #define ACT_OBJECT_SERVO        1
267
268 /* actuator->type */
269 #define ACT_OBJECT              0
270 #define ACT_IPO                 1
271 #define ACT_LAMP                2
272 #define ACT_CAMERA              3
273 #define ACT_MATERIAL    4
274 #define ACT_SOUND               5
275 #define ACT_PROPERTY    6
276         /* these two obsolete since 2.02 */
277 #define ACT_ADD_OBJECT  7
278 #define ACT_END_OBJECT  8
279
280 #define ACT_CONSTRAINT  9
281 #define ACT_EDIT_OBJECT 10
282 #define ACT_SCENE               11
283 #define ACT_GROUP               12
284 #define ACT_RANDOM      13
285 #define ACT_MESSAGE     14
286 #define ACT_ACTION              15      /* __ NLA */
287 #define ACT_CD                  16
288 #define ACT_GAME                17
289 #define ACT_VISIBILITY          18
290 #define ACT_2DFILTER    19
291 #define ACT_PARENT      20
292 #define ACT_SHAPEACTION 21
293 #define ACT_STATE               22
294
295 /* actuator flag */
296 #define ACT_SHOW                1
297 #define ACT_DEL                 2
298 #define ACT_NEW                 4
299 #define ACT_LINKED              8       
300 #define ACT_VISIBLE             16      
301
302 /* link codes */
303 #define LINK_SENSOR             0
304 #define LINK_CONTROLLER 1
305 #define LINK_ACTUATOR   2
306
307 /* keyboardsensor->type */
308 #define SENS_ALL_KEYS   1
309
310 /* actionactuator->type */
311 #define ACT_ACTION_PLAY                 0
312 #define ACT_ACTION_PINGPONG             1
313 #define ACT_ACTION_FLIPPER              2
314 #define ACT_ACTION_LOOP_STOP    3
315 #define ACT_ACTION_LOOP_END             4
316 #define ACT_ACTION_KEY2KEY              5
317 #define ACT_ACTION_FROM_PROP    6
318 #define ACT_ACTION_MOTION               7
319
320 /* ipoactuator->type */
321 #define ACT_IPO_PLAY            0
322 #define ACT_IPO_PINGPONG        1
323 #define ACT_IPO_FLIPPER         2
324 #define ACT_IPO_LOOP_STOP       3
325 #define ACT_IPO_LOOP_END        4
326 #define ACT_IPO_KEY2KEY         5
327 #define ACT_IPO_FROM_PROP       6
328
329 /* groupactuator->type */
330 #define ACT_GROUP_PLAY          0
331 #define ACT_GROUP_PINGPONG      1
332 #define ACT_GROUP_FLIPPER       2
333 #define ACT_GROUP_LOOP_STOP     3
334 #define ACT_GROUP_LOOP_END      4
335 #define ACT_GROUP_FROM_PROP     5
336 #define ACT_GROUP_SET           6
337
338 /* ipoactuator->flag */
339 #define ACT_IPOFORCE        (1 << 0)
340 #define ACT_IPOEND          (1 << 1)
341 #define ACT_IPOLOCAL            (1 << 2)
342 #define ACT_IPOCHILD        (1 << 4)    
343 #define ACT_IPOADD                      (1 << 5)
344
345 /* ipoactuator->flag for k2k */
346 #define ACT_K2K_PREV            1
347 #define ACT_K2K_CYCLIC          2
348 #define ACT_K2K_PINGPONG        4
349 #define ACT_K2K_HOLD            8
350
351 /* property actuator->type */
352 #define ACT_PROP_ASSIGN         0
353 #define ACT_PROP_ADD            1
354 #define ACT_PROP_COPY           2
355
356 /* constraint flag */
357 #define ACT_CONST_LOCX          1
358 #define ACT_CONST_LOCY          2
359 #define ACT_CONST_LOCZ          4
360 #define ACT_CONST_ROTX          8
361 #define ACT_CONST_ROTY          16
362 #define ACT_CONST_ROTZ          32
363 #define ACT_CONST_NORMAL        64
364 #define ACT_CONST_MATERIAL      128
365 #define ACT_CONST_PERMANENT 256
366 #define ACT_CONST_DISTANCE      512
367 /* constraint mode */
368 #define ACT_CONST_DIRPX         1
369 #define ACT_CONST_DIRPY         2
370 #define ACT_CONST_DIRPZ         4
371 #define ACT_CONST_DIRMX         8
372 #define ACT_CONST_DIRMY         16
373 #define ACT_CONST_DIRMZ         32
374
375 /* constraint type */
376 #define ACT_CONST_TYPE_LOC      0
377 #define ACT_CONST_TYPE_DIST     1
378 #define ACT_CONST_TYPE_ORI      2
379
380 /* editObjectActuator->type */
381 #define ACT_EDOB_ADD_OBJECT             0
382 #define ACT_EDOB_END_OBJECT             1
383 #define ACT_EDOB_REPLACE_MESH           2
384 #define ACT_EDOB_TRACK_TO               3
385 #define ACT_EDOB_DYNAMICS               4
386
387
388
389 /* editObjectActuator->flag */
390 #define ACT_TRACK_3D                    1
391
392 /* SceneActuator->type */
393 #define ACT_SCENE_RESTART               0
394 #define ACT_SCENE_SET                   1
395 #define ACT_SCENE_CAMERA                2
396 #define ACT_SCENE_ADD_FRONT             3
397 #define ACT_SCENE_ADD_BACK              4
398 #define ACT_SCENE_REMOVE                5
399 #define ACT_SCENE_SUSPEND               6
400 #define ACT_SCENE_RESUME                7
401
402
403 /* randomAct->distribution */
404 #define ACT_RANDOM_BOOL_CONST                  0
405 #define ACT_RANDOM_BOOL_UNIFORM                1
406 #define ACT_RANDOM_BOOL_BERNOUILLI             2
407 #define ACT_RANDOM_INT_CONST                   3
408 #define ACT_RANDOM_INT_UNIFORM                 4
409 #define ACT_RANDOM_INT_POISSON                     5
410 #define ACT_RANDOM_FLOAT_CONST                 6
411 #define ACT_RANDOM_FLOAT_UNIFORM               7
412 #define ACT_RANDOM_FLOAT_NORMAL                8
413 #define ACT_RANDOM_FLOAT_NEGATIVE_EXPONENTIAL  9
414
415 /*  SoundActuator->type */
416 #define ACT_SND_PLAY_STOP_SOUND         0
417 #define ACT_SND_PLAY_END_SOUND          1
418 #define ACT_SND_LOOP_STOP_SOUND         2
419 #define ACT_SND_LOOP_END_SOUND          3
420 #define ACT_SND_LOOP_BIDIRECTIONAL_SOUND                4
421 #define ACT_SND_LOOP_BIDIRECTIONAL_STOP_SOUND   5
422
423 /* messageactuator->type */
424 #define ACT_MESG_MESG           0
425 #define ACT_MESG_PROP           1
426
427 /* cdactuator->type */
428 #define ACT_CD_PLAY_ALL         0
429 #define ACT_CD_PLAY_TRACK       1
430 #define ACT_CD_LOOP_TRACK       2
431 #define ACT_CD_VOLUME           3
432 #define ACT_CD_STOP                     4
433 #define ACT_CD_PAUSE            5
434 #define ACT_CD_RESUME           6
435
436 /* gameactuator->type */
437 #define ACT_GAME_LOAD           0
438 #define ACT_GAME_START          1
439 #define ACT_GAME_RESTART        2
440 #define ACT_GAME_QUIT           3
441
442 /* visibilityact->flag */
443 /* Set means the object will become invisible */
444 #define ACT_VISIBILITY_INVISIBLE       (1 << 0)
445
446 /* twodfilter->type */
447 #define ACT_2DFILTER_ENABLED                    -2
448 #define ACT_2DFILTER_DISABLED                   -1
449 #define ACT_2DFILTER_NOFILTER                   0
450 #define ACT_2DFILTER_MOTIONBLUR                 1
451 #define ACT_2DFILTER_BLUR                               2
452 #define ACT_2DFILTER_SHARPEN                    3
453 #define ACT_2DFILTER_DILATION                   4
454 #define ACT_2DFILTER_EROSION                    5
455 #define ACT_2DFILTER_LAPLACIAN                  6
456 #define ACT_2DFILTER_SOBEL                              7
457 #define ACT_2DFILTER_PREWITT                    8
458 #define ACT_2DFILTER_GRAYSCALE                  9
459 #define ACT_2DFILTER_SEPIA                              10
460 #define ACT_2DFILTER_INVERT                             11
461 #define ACT_2DFILTER_CUSTOMFILTER               12
462 #define ACT_2DFILTER_NUMBER_OF_FILTERS  13
463
464 /* parentactuator->type */
465 #define ACT_PARENT_SET      0
466 #define ACT_PARENT_REMOVE   1
467 #endif
468
469