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