/* * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. * All rights reserved. * * The Original Code is: all of this file. * * Contributor(s): none yet. * * ***** END GPL LICENSE BLOCK ***** */ /** \file DNA_actuator_types.h * \ingroup DNA * * #bActuator type is specifically for use by Object logic-bricks in the game-engine. */ #ifndef __DNA_ACTUATOR_TYPES_H__ #define __DNA_ACTUATOR_TYPES_H__ struct Object; struct Mesh; struct Scene; struct Group; struct Text; /* ****************** ACTUATORS ********************* */ /* unused now, moved to editobjectactuator in 2.02. Still needed for dna */ typedef struct bAddObjectActuator { int time, pad; struct Object *ob; } bAddObjectActuator; typedef struct bActionActuator { struct bAction *act; /* Pointer to action */ short type, flag; /* Playback type */ // not in use float sta, end; /* Start & End frames */ char name[64]; /* For property-driven playback, MAX_NAME */ char frameProp[64]; /* Set this property to the actions current frame, MAX_NAME */ short blendin; /* Number of frames of blending */ short priority; /* Execution priority */ short layer; /* Animation layer */ short end_reset; /* Ending the actuator (negative pulse) wont reset the the action to its starting frame */ short strideaxis; /* Displacement axis */ short blend_mode; /* Layer blending mode */ float stridelength; /* Displacement incurred by cycle */ // not in use float layer_weight; /* How much of the previous layer to use for blending. (<0 = disable, 0 = add mode) */ } bActionActuator; typedef struct Sound3D { float min_gain; float max_gain; float reference_distance; float max_distance; float rolloff_factor; float cone_inner_angle; float cone_outer_angle; float cone_outer_gain; } Sound3D; typedef struct bSoundActuator { short flag, sndnr; int pad1, pad2; short pad3[2]; float volume, pitch; struct bSound *sound; struct Sound3D sound3D; short type, pad4; short pad5, pad6[1]; } bSoundActuator; typedef struct bEditObjectActuator { int time; short type, flag; struct Object *ob; struct Mesh *me; char name[64]; /* MAX_NAME */ float linVelocity[3]; /* initial lin. velocity on creation */ float angVelocity[3]; /* initial ang. velocity on creation */ float mass; short localflag; /* flag for the lin & ang. vel: apply locally */ short dyn_operation; } bEditObjectActuator; typedef struct bSceneActuator { short type, pad1; int pad; struct Scene *scene; struct Object *camera; } bSceneActuator; typedef struct bPropertyActuator { int pad, type; char name[64], value[64]; /* MAX_NAME */ struct Object *ob; } bPropertyActuator; typedef struct bObjectActuator { short flag, type, otype; short damping; float forceloc[3], forcerot[3]; float pad[3], pad1[3]; float dloc[3], drot[3]; /* angle in radians */ float linearvelocity[3], angularvelocity[3]; struct Object *reference; } bObjectActuator; /* deprecated, handled by bActionActuator now */ typedef struct bIpoActuator { short flag, type; float sta, end; char name[64]; /* MAX_NAME */ char frameProp[64]; /* Set this property to the actions current frame, MAX_NAME */ short pad1, pad2, pad3, pad4; } bIpoActuator; typedef struct bCameraActuator { struct Object *ob; float height, min, max; float damping; short pad1, axis; float pad2; } bCameraActuator; typedef struct bConstraintActuator { short type, mode; short flag, damp; short time, rotdamp; int pad; float minloc[3], maxloc[3]; float minrot[3], maxrot[3]; char matprop[64]; /* MAX_NAME */ } bConstraintActuator; typedef struct bGroupActuator { short flag, type; int sta, end; char name[64]; /* property or groupkey, MAX_NAME */ short pad[3], cur, butsta, butend;/* not referenced, can remove? */ /* struct Group *group; not used, remove */ } bGroupActuator; /* I added a few extra fields here, to facilitate conversions */ typedef struct bRandomActuator { int seed; int distribution; int int_arg_1; int int_arg_2; float float_arg_1; float float_arg_2; char propname[64]; /* MAX_NAME */ } bRandomActuator; typedef struct bMessageActuator { char toPropName[64]; /* Send to all objects with this propertyname. Empty to broadcast. MAX_NAME. */ struct Object *toObject;/* (Possible future use) pointer to a single destination object. */ char subject[64]; /* Message Subject to send. MAX_NAME. */ short bodyType, pad1; /* bodyType is either 'User defined text' or PropName */ int pad2; char body[64]; /* Either User Defined Text or our PropName to send value of, MAX_NAME */ } bMessageActuator; typedef struct bGameActuator { short flag, type; int sta, end; char filename[64]; char loadaniname[64]; } bGameActuator; typedef struct bVisibilityActuator { /** bit 0: Is this object visible? ** bit 1: Apply recursively ** bit 2: Is this object an occluder? */ int flag; } bVisibilityActuator; typedef struct bTwoDFilterActuator { char pad[4]; /* Tells what type of 2D Filter */ short type; /* (flag == 0) means 2D filter is activate and * (flag != 0) means 2D filter is inactive */ short flag; int int_arg; /* a float argument */ float float_arg; struct Text *text; } bTwoDFilterActuator; typedef struct bParentActuator { char pad[2]; short flag; int type; struct Object *ob; } bParentActuator; typedef struct bStateActuator { int type; /* 0=Set, 1=Add, 2=Rem, 3=Chg */ unsigned int mask; /* the bits to change */ } bStateActuator; typedef struct bArmatureActuator { char posechannel[64]; /* MAX_NAME */ char constraint[64]; /* MAX_NAME */ int type; /* 0=run, 1=enable, 2=disable, 3=set target, 4=set weight */ float weight; float influence; float pad; struct Object *target; struct Object *subtarget; } bArmatureActuator; typedef struct bSteeringActuator { char pad[5]; char flag; short facingaxis; int type; /* 0=seek, 1=flee, 2=path following */ float dist; float velocity; float acceleration; float turnspeed; int updateTime; struct Object *target; struct Object *navmesh; } bSteeringActuator; typedef struct bMouseActuator { short type; /* 0=Visibility, 1=Look */ short flag; int object_axis[2]; float threshold[2]; float sensitivity[2]; float limit_x[2]; float limit_y[2]; } bMouseActuator; typedef struct bActuator { struct bActuator *next, *prev, *mynew; short type; /** * Tells what type of actuator data \ref data holds. */ short flag; short otype, go; char name[64]; /* MAX_NAME */ /** * data must point to an object actuator type struct. */ void *data; /** * For ipo's and props: to find out which object the actuator * belongs to */ struct Object *ob; } bActuator; /* objectactuator->flag */ #define ACT_FORCE_LOCAL 1 #define ACT_TORQUE_LOCAL 2 #define ACT_SERVO_LIMIT_X 2 #define ACT_DLOC_LOCAL 4 #define ACT_SERVO_LIMIT_Y 4 #define ACT_DROT_LOCAL 8 #define ACT_SERVO_LIMIT_Z 8 #define ACT_LIN_VEL_LOCAL 16 #define ACT_ANG_VEL_LOCAL 32 //#define ACT_ADD_LIN_VEL_LOCAL 64 #define ACT_ADD_LIN_VEL 64 #define ACT_ADD_CHAR_LOC 128 #define ACT_CHAR_JUMP 256 /* objectactuator->type */ #define ACT_OBJECT_NORMAL 0 #define ACT_OBJECT_SERVO 1 #define ACT_OBJECT_CHARACTER 2 /* actuator->type */ #define ACT_OBJECT 0 #define ACT_IPO 1 #define ACT_LAMP 2 #define ACT_CAMERA 3 #define ACT_MATERIAL 4 #define ACT_SOUND 5 #define ACT_PROPERTY 6 /* these two obsolete since 2.02 */ #define ACT_ADD_OBJECT 7 #define ACT_END_OBJECT 8 #define ACT_CONSTRAINT 9 #define ACT_EDIT_OBJECT 10 #define ACT_SCENE 11 #define ACT_GROUP 12 #define ACT_RANDOM 13 #define ACT_MESSAGE 14 #define ACT_ACTION 15 /* __ NLA */ #define ACT_GAME 17 #define ACT_VISIBILITY 18 #define ACT_2DFILTER 19 #define ACT_PARENT 20 #define ACT_SHAPEACTION 21 #define ACT_STATE 22 #define ACT_ARMATURE 23 #define ACT_STEERING 24 #define ACT_MOUSE 25 /* actuator flag */ #define ACT_SHOW 1 #define ACT_DEL 2 #define ACT_NEW 4 #define ACT_LINKED 8 #define ACT_VISIBLE 16 #define ACT_PIN 32 #define ACT_DEACTIVATE 64 /* link codes */ #define LINK_SENSOR 0 #define LINK_CONTROLLER 1 #define LINK_ACTUATOR 2 /* keyboardsensor->type */ #define SENS_ALL_KEYS 1 /* actionactuator->type */ #define ACT_ACTION_PLAY 0 #define ACT_ACTION_PINGPONG 1 #define ACT_ACTION_FLIPPER 2 #define ACT_ACTION_LOOP_STOP 3 #define ACT_ACTION_LOOP_END 4 #define ACT_ACTION_KEY2KEY 5 #define ACT_ACTION_FROM_PROP 6 #define ACT_ACTION_MOTION 7 /* actionactuator->blend_mode */ #define ACT_ACTION_BLEND 0 #define ACT_ACTION_ADD 1 /* ipoactuator->type */ #define ACT_IPO_PLAY 0 #define ACT_IPO_PINGPONG 1 #define ACT_IPO_FLIPPER 2 #define ACT_IPO_LOOP_STOP 3 #define ACT_IPO_LOOP_END 4 #define ACT_IPO_KEY2KEY 5 #define ACT_IPO_FROM_PROP 6 /* groupactuator->type */ #define ACT_GROUP_PLAY 0 #define ACT_GROUP_PINGPONG 1 #define ACT_GROUP_FLIPPER 2 #define ACT_GROUP_LOOP_STOP 3 #define ACT_GROUP_LOOP_END 4 #define ACT_GROUP_FROM_PROP 5 #define ACT_GROUP_SET 6 /* ipoactuator->flag */ #define ACT_IPOFORCE (1 << 0) #define ACT_IPOEND (1 << 1) #define ACT_IPOLOCAL (1 << 2) #define ACT_IPOCHILD (1 << 4) #define ACT_IPOADD (1 << 5) /* ipoactuator->flag for k2k */ #define ACT_K2K_PREV 1 #define ACT_K2K_CYCLIC 2 #define ACT_K2K_PINGPONG 4 #define ACT_K2K_HOLD 8 /* property actuator->type */ #define ACT_PROP_ASSIGN 0 #define ACT_PROP_ADD 1 #define ACT_PROP_COPY 2 #define ACT_PROP_TOGGLE 3 /* constraint flag */ #define ACT_CONST_NONE 0 #define ACT_CONST_LOCX 1 #define ACT_CONST_LOCY 2 #define ACT_CONST_LOCZ 4 #define ACT_CONST_ROTX 8 #define ACT_CONST_ROTY 16 #define ACT_CONST_ROTZ 32 #define ACT_CONST_NORMAL 64 #define ACT_CONST_MATERIAL 128 #define ACT_CONST_PERMANENT 256 #define ACT_CONST_DISTANCE 512 #define ACT_CONST_LOCAL 1024 #define ACT_CONST_DOROTFH 2048 /* constraint mode */ #define ACT_CONST_DIRPX 1 #define ACT_CONST_DIRPY 2 #define ACT_CONST_DIRPZ 4 #define ACT_CONST_DIRNX 8 #define ACT_CONST_DIRNY 16 #define ACT_CONST_DIRNZ 32 /* constraint type */ #define ACT_CONST_TYPE_LOC 0 #define ACT_CONST_TYPE_DIST 1 #define ACT_CONST_TYPE_ORI 2 #define ACT_CONST_TYPE_FH 3 /* editObjectActuator->type */ #define ACT_EDOB_ADD_OBJECT 0 #define ACT_EDOB_END_OBJECT 1 #define ACT_EDOB_REPLACE_MESH 2 #define ACT_EDOB_TRACK_TO 3 #define ACT_EDOB_DYNAMICS 4 /* editObjectActuator->localflag */ #define ACT_EDOB_LOCAL_LINV 2 #define ACT_EDOB_LOCAL_ANGV 4 /* editObjectActuator->flag */ #define ACT_TRACK_3D 1 /* editObjectActuator->flag for replace mesh actuator */ #define ACT_EDOB_REPLACE_MESH_NOGFX 2 /* use for replace mesh actuator */ #define ACT_EDOB_REPLACE_MESH_PHYS 4 /* editObjectActuator->dyn_operation */ #define ACT_EDOB_RESTORE_DYN 0 #define ACT_EDOB_SUSPEND_DYN 1 #define ACT_EDOB_ENABLE_RB 2 #define ACT_EDOB_DISABLE_RB 3 #define ACT_EDOB_SET_MASS 4 /* SceneActuator->type */ #define ACT_SCENE_RESTART 0 #define ACT_SCENE_SET 1 #define ACT_SCENE_CAMERA 2 #define ACT_SCENE_ADD_FRONT 3 #define ACT_SCENE_ADD_BACK 4 #define ACT_SCENE_REMOVE 5 #define ACT_SCENE_SUSPEND 6 #define ACT_SCENE_RESUME 7 /* randomAct->distribution */ #define ACT_RANDOM_BOOL_CONST 0 #define ACT_RANDOM_BOOL_UNIFORM 1 #define ACT_RANDOM_BOOL_BERNOUILLI 2 #define ACT_RANDOM_INT_CONST 3 #define ACT_RANDOM_INT_UNIFORM 4 #define ACT_RANDOM_INT_POISSON 5 #define ACT_RANDOM_FLOAT_CONST 6 #define ACT_RANDOM_FLOAT_UNIFORM 7 #define ACT_RANDOM_FLOAT_NORMAL 8 #define ACT_RANDOM_FLOAT_NEGATIVE_EXPONENTIAL 9 /* SoundActuator->flag */ #define ACT_SND_3D_SOUND 1 /* SoundActuator->type */ #define ACT_SND_PLAY_STOP_SOUND 0 #define ACT_SND_PLAY_END_SOUND 1 #define ACT_SND_LOOP_STOP_SOUND 2 #define ACT_SND_LOOP_END_SOUND 3 #define ACT_SND_LOOP_BIDIRECTIONAL_SOUND 4 #define ACT_SND_LOOP_BIDIRECTIONAL_STOP_SOUND 5 /* messageactuator->type */ #define ACT_MESG_MESG 0 #define ACT_MESG_PROP 1 /* gameactuator->type */ #define ACT_GAME_LOAD 0 #define ACT_GAME_START 1 #define ACT_GAME_RESTART 2 #define ACT_GAME_QUIT 3 #define ACT_GAME_SAVECFG 4 #define ACT_GAME_LOADCFG 5 /* visibilityact->flag */ /* Set means the object will become invisible */ #define ACT_VISIBILITY_INVISIBLE (1 << 0) #define ACT_VISIBILITY_RECURSIVE (1 << 1) #define ACT_VISIBILITY_OCCLUSION (1 << 2) /* twodfilter->type */ #define ACT_2DFILTER_ENABLED -2 #define ACT_2DFILTER_DISABLED -1 #define ACT_2DFILTER_NOFILTER 0 #define ACT_2DFILTER_MOTIONBLUR 1 #define ACT_2DFILTER_BLUR 2 #define ACT_2DFILTER_SHARPEN 3 #define ACT_2DFILTER_DILATION 4 #define ACT_2DFILTER_EROSION 5 #define ACT_2DFILTER_LAPLACIAN 6 #define ACT_2DFILTER_SOBEL 7 #define ACT_2DFILTER_PREWITT 8 #define ACT_2DFILTER_GRAYSCALE 9 #define ACT_2DFILTER_SEPIA 10 #define ACT_2DFILTER_INVERT 11 #define ACT_2DFILTER_CUSTOMFILTER 12 #define ACT_2DFILTER_NUMBER_OF_FILTERS 13 /* parentactuator->type */ #define ACT_PARENT_SET 0 #define ACT_PARENT_REMOVE 1 /* parentactuator->flag */ #define ACT_PARENT_COMPOUND 1 #define ACT_PARENT_GHOST 2 /* armatureactuator->type */ #define ACT_ARM_RUN 0 #define ACT_ARM_ENABLE 1 #define ACT_ARM_DISABLE 2 #define ACT_ARM_SETTARGET 3 #define ACT_ARM_SETWEIGHT 4 #define ACT_ARM_SETINFLUENCE 5 /* update this define if more types are added */ #define ACT_ARM_MAXTYPE 5 /* stateactuator->type */ #define ACT_STATE_SET 0 #define ACT_STATE_ADD 1 #define ACT_STATE_REMOVE 2 #define ACT_STATE_CHANGE 3 /* steeringactuator->type */ #define ACT_STEERING_SEEK 0 #define ACT_STEERING_FLEE 1 #define ACT_STEERING_PATHFOLLOWING 2 /* steeringactuator->flag */ #define ACT_STEERING_SELFTERMINATED 1 #define ACT_STEERING_ENABLEVISUALIZATION 2 #define ACT_STEERING_AUTOMATICFACING 4 #define ACT_STEERING_NORMALUP 8 /* mouseactuator->type */ #define ACT_MOUSE_VISIBILITY 0 #define ACT_MOUSE_LOOK 1 /* mouseactuator->flag */ #define ACT_MOUSE_VISIBLE (1 << 0) #define ACT_MOUSE_USE_AXIS_X (1 << 1) #define ACT_MOUSE_USE_AXIS_Y (1 << 2) #define ACT_MOUSE_RESET_X (1 << 3) #define ACT_MOUSE_RESET_Y (1 << 4) #define ACT_MOUSE_LOCAL_X (1 << 5) #define ACT_MOUSE_LOCAL_Y (1 << 6) /* mouseactuator->object_axis */ #define ACT_MOUSE_OBJECT_AXIS_X 0 #define ACT_MOUSE_OBJECT_AXIS_Y 1 #define ACT_MOUSE_OBJECT_AXIS_Z 2 #endif /* __DNA_ACTUATOR_TYPES_H__ */