688 lines
20 KiB
C
688 lines
20 KiB
C
/*
|
|
* ***** 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_object_types.h
|
|
* \ingroup DNA
|
|
* \brief Object is a sort of wrapper for general info.
|
|
*/
|
|
|
|
#ifndef __DNA_OBJECT_TYPES_H__
|
|
#define __DNA_OBJECT_TYPES_H__
|
|
|
|
#include "DNA_defs.h"
|
|
#include "DNA_listBase.h"
|
|
#include "DNA_ID.h"
|
|
#include "DNA_action_types.h" /* bAnimVizSettings */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct Object;
|
|
struct AnimData;
|
|
struct Ipo;
|
|
struct BoundBox;
|
|
struct Path;
|
|
struct Material;
|
|
struct bConstraintChannel;
|
|
struct PartDeflect;
|
|
struct SoftBody;
|
|
struct FluidsimSettings;
|
|
struct ParticleSystem;
|
|
struct DerivedMesh;
|
|
struct SculptSession;
|
|
struct bGPdata;
|
|
struct RigidBodyOb;
|
|
|
|
|
|
/* Vertex Groups - Name Info */
|
|
typedef struct bDeformGroup {
|
|
struct bDeformGroup *next, *prev;
|
|
char name[64]; /* MAX_VGROUP_NAME */
|
|
/* need this flag for locking weights */
|
|
char flag, pad[7];
|
|
} bDeformGroup;
|
|
#define MAX_VGROUP_NAME 64
|
|
|
|
/* bDeformGroup->flag */
|
|
#define DG_LOCK_WEIGHT 1
|
|
|
|
/**
|
|
* The following illustrates the orientation of the
|
|
* bounding box in local space
|
|
*
|
|
* <pre>
|
|
*
|
|
* Z Y
|
|
* | /
|
|
* |/
|
|
* .-----X
|
|
*
|
|
*
|
|
* 2----------6
|
|
* /| /|
|
|
* / | / |
|
|
* 1----------5 |
|
|
* | | | |
|
|
* | 3-------|--7
|
|
* | / | /
|
|
* |/ |/
|
|
* 0----------4
|
|
* </pre>
|
|
*/
|
|
typedef struct BoundBox {
|
|
float vec[8][3];
|
|
int flag, pad;
|
|
} BoundBox;
|
|
|
|
/* boundbox flag */
|
|
enum {
|
|
BOUNDBOX_DISABLED = (1 << 0),
|
|
BOUNDBOX_DIRTY = (1 << 1),
|
|
};
|
|
|
|
typedef struct LodLevel {
|
|
struct LodLevel *next, *prev;
|
|
struct Object *source;
|
|
int flags;
|
|
float distance;
|
|
} LodLevel;
|
|
|
|
typedef struct Object {
|
|
ID id;
|
|
struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
|
|
|
|
struct SculptSession *sculpt;
|
|
|
|
short type, partype;
|
|
int par1, par2, par3; /* can be vertexnrs */
|
|
char parsubstr[64]; /* String describing subobject info, MAX_ID_NAME-2 */
|
|
struct Object *parent, *track;
|
|
/* if ob->proxy (or proxy_group), this object is proxy for object ob->proxy */
|
|
/* proxy_from is set in target back to the proxy. */
|
|
struct Object *proxy, *proxy_group, *proxy_from;
|
|
struct Ipo *ipo DNA_DEPRECATED; /* old animation system, deprecated for 2.5 */
|
|
/* struct Path *path; */
|
|
struct BoundBox *bb; /* axis aligned boundbox (in localspace) */
|
|
struct bAction *action DNA_DEPRECATED; // XXX deprecated... old animation system
|
|
struct bAction *poselib;
|
|
struct bPose *pose; /* pose data, armature objects only */
|
|
void *data; /* pointer to objects data - an 'ID' or NULL */
|
|
|
|
struct bGPdata *gpd; /* Grease Pencil data */
|
|
|
|
bAnimVizSettings avs; /* settings for visualization of object-transform animation */
|
|
bMotionPath *mpath; /* motion path cache for this object */
|
|
|
|
ListBase constraintChannels DNA_DEPRECATED; // XXX deprecated... old animation system
|
|
ListBase effect DNA_DEPRECATED; // XXX deprecated... keep for readfile
|
|
ListBase defbase; /* list of bDeformGroup (vertex groups) names and flag only */
|
|
ListBase modifiers; /* list of ModifierData structures */
|
|
|
|
int mode; /* Local object mode */
|
|
int restore_mode; /* Keep track of what mode to return to after toggling a mode */
|
|
|
|
/* materials */
|
|
struct Material **mat; /* material slots */
|
|
char *matbits; /* a boolean field, with each byte 1 if corresponding material is linked to object */
|
|
int totcol; /* copy of mesh, curve & meta struct member of same name (keep in sync) */
|
|
int actcol; /* currently selected material in the UI */
|
|
|
|
/* rot en drot have to be together! (transform('r' en 's')) */
|
|
float loc[3], dloc[3], orig[3];
|
|
float size[3]; /* scale in fact */
|
|
float dsize[3] DNA_DEPRECATED ; /* DEPRECATED, 2.60 and older only */
|
|
float dscale[3]; /* ack!, changing */
|
|
float rot[3], drot[3]; /* euler rotation */
|
|
float quat[4], dquat[4]; /* quaternion rotation */
|
|
float rotAxis[3], drotAxis[3]; /* axis angle rotation - axis part */
|
|
float rotAngle, drotAngle; /* axis angle rotation - angle part */
|
|
float obmat[4][4]; /* final worldspace matrix with constraints & animsys applied */
|
|
float parentinv[4][4]; /* inverse result of parent, so that object doesn't 'stick' to parent */
|
|
float constinv[4][4]; /* inverse result of constraints. doesn't include effect of parent or object local transform */
|
|
float imat[4][4]; /* inverse matrix of 'obmat' for any other use than rendering! */
|
|
/* note: this isn't assured to be valid as with 'obmat',
|
|
* before using this value you should do...
|
|
* invert_m4_m4(ob->imat, ob->obmat); */
|
|
|
|
/* Previously 'imat' was used at render time, but as other places use it too
|
|
* the interactive ui of 2.5 creates problems. So now only 'imat_ren' should
|
|
* be used when ever the inverse of ob->obmat * re->viewmat is needed! - jahka
|
|
*/
|
|
float imat_ren[4][4];
|
|
|
|
unsigned int lay; /* copy of Base's layer in the scene */
|
|
|
|
short flag; /* copy of Base */
|
|
short colbits DNA_DEPRECATED; /* deprecated, use 'matbits' */
|
|
|
|
short transflag, protectflag; /* transformation settings and transform locks */
|
|
short trackflag, upflag;
|
|
short nlaflag; /* used for DopeSheet filtering settings (expanded/collapsed) */
|
|
short ipoflag; // xxx deprecated... old animation system
|
|
short scaflag; /* ui state for game logic */
|
|
char scavisflag; /* more display settings for game logic */
|
|
char depsflag;
|
|
|
|
/* dupli-frame settings */
|
|
int dupon, dupoff, dupsta, dupend;
|
|
|
|
int pad;
|
|
|
|
/* during realtime */
|
|
|
|
/* note that inertia is only called inertia for historical reasons
|
|
* and is not changed to avoid DNA surgery. It actually reflects the
|
|
* Size value in the GameButtons (= radius) */
|
|
|
|
float mass, damping, inertia;
|
|
/* The form factor k is introduced to give the user more control
|
|
* and to fix incompatibility problems.
|
|
* For rotational symmetric objects, the inertia value can be
|
|
* expressed as: Theta = k * m * r^2
|
|
* where m = Mass, r = Radius
|
|
* For a Sphere, the form factor is by default = 0.4
|
|
*/
|
|
|
|
float formfactor;
|
|
float rdamping;
|
|
float margin;
|
|
float max_vel; /* clamp the maximum velocity 0.0 is disabled */
|
|
float min_vel; /* clamp the minimum velocity 0.0 is disabled */
|
|
float obstacleRad;
|
|
|
|
/* "Character" physics properties */
|
|
float step_height;
|
|
float jump_speed;
|
|
float fall_speed;
|
|
|
|
/** Collision mask settings */
|
|
unsigned short col_group, col_mask;
|
|
|
|
short rotmode; /* rotation mode - uses defines set out in DNA_action_types.h for PoseChannel rotations... */
|
|
|
|
char boundtype; /* bounding box use for drawing */
|
|
char collision_boundtype; /* bounding box type used for collision */
|
|
|
|
short dtx; /* viewport draw extra settings */
|
|
char dt; /* viewport draw type */
|
|
char empty_drawtype;
|
|
float empty_drawsize;
|
|
float dupfacesca; /* dupliface scale */
|
|
|
|
ListBase prop; /* game logic property list (not to be confused with IDProperties) */
|
|
ListBase sensors; /* game logic sensors */
|
|
ListBase controllers; /* game logic controllers */
|
|
ListBase actuators; /* game logic actuators */
|
|
|
|
float sf; /* sf is time-offset */
|
|
|
|
short index; /* custom index, for renderpasses */
|
|
unsigned short actdef; /* current deformation group, note: index starts at 1 */
|
|
float col[4]; /* object color */
|
|
|
|
int gameflag;
|
|
int gameflag2;
|
|
|
|
struct BulletSoftBody *bsoft; /* settings for game engine bullet soft body */
|
|
|
|
char restrictflag; /* for restricting view, select, render etc. accessible in outliner */
|
|
char recalc; /* dependency flag */
|
|
short softflag; /* softbody settings */
|
|
float anisotropicFriction[3];
|
|
|
|
ListBase constraints; /* object constraints */
|
|
ListBase nlastrips DNA_DEPRECATED; // XXX deprecated... old animation system
|
|
ListBase hooks DNA_DEPRECATED; // XXX deprecated... old animation system
|
|
ListBase particlesystem; /* particle systems */
|
|
|
|
struct PartDeflect *pd; /* particle deflector/attractor/collision data */
|
|
struct SoftBody *soft; /* if exists, saved in file */
|
|
struct Group *dup_group; /* object duplicator for group */
|
|
|
|
char body_type; /* for now used to temporarily holds the type of collision object */
|
|
char shapeflag; /* flag for pinning */
|
|
short shapenr; /* current shape key for menu or pinned */
|
|
float smoothresh; /* smoothresh is phong interpolation ray_shadow correction in render */
|
|
|
|
struct FluidsimSettings *fluidsimSettings; /* if fluidsim enabled, store additional settings */
|
|
|
|
/* Runtime valuated curve-specific data, not stored in the file */
|
|
struct CurveCache *curve_cache;
|
|
|
|
struct DerivedMesh *derivedDeform, *derivedFinal;
|
|
uint64_t lastDataMask; /* the custom data layer mask that was last used to calculate derivedDeform and derivedFinal */
|
|
uint64_t customdata_mask; /* (extra) custom data layer mask to use for creating derivedmesh, set by depsgraph */
|
|
unsigned int state; /* bit masks of game controllers that are active */
|
|
unsigned int init_state; /* bit masks of initial state as recorded by the users */
|
|
|
|
ListBase gpulamp; /* runtime, for glsl lamp display only */
|
|
ListBase pc_ids;
|
|
ListBase *duplilist; /* for temporary dupli list storage, only for use by RNA API */
|
|
|
|
struct RigidBodyOb *rigidbody_object; /* settings for Bullet rigid body */
|
|
struct RigidBodyCon *rigidbody_constraint; /* settings for Bullet constraint */
|
|
|
|
float ima_ofs[2]; /* offset for image empties */
|
|
ImageUser *iuser; /* must be non-null when oject is an empty image */
|
|
|
|
ListBase lodlevels; /* contains data for levels of detail */
|
|
LodLevel *currentlod;
|
|
} Object;
|
|
|
|
/* Warning, this is not used anymore because hooks are now modifiers */
|
|
typedef struct ObHook {
|
|
struct ObHook *next, *prev;
|
|
|
|
struct Object *parent;
|
|
float parentinv[4][4]; /* matrix making current transform unmodified */
|
|
float mat[4][4]; /* temp matrix while hooking */
|
|
float cent[3]; /* visualization of hook */
|
|
float falloff; /* if not zero, falloff is distance where influence zero */
|
|
|
|
char name[64]; /* MAX_NAME */
|
|
|
|
int *indexar;
|
|
int totindex, curindex; /* curindex is cache for fast lookup */
|
|
short type, active; /* active is only first hook, for button menu */
|
|
float force;
|
|
} ObHook;
|
|
|
|
/* runtime only, but include here for rna access */
|
|
typedef struct DupliObject {
|
|
struct DupliObject *next, *prev;
|
|
struct Object *ob;
|
|
float mat[4][4];
|
|
float orco[3], uv[2];
|
|
|
|
short type; /* from Object.transflag */
|
|
char no_draw, animated;
|
|
|
|
/* persistent identifier for a dupli object, for inter-frame matching of
|
|
* objects with motion blur, or inter-update matching for syncing */
|
|
int persistent_id[8]; /* MAX_DUPLI_RECUR */
|
|
|
|
/* particle this dupli was generated from */
|
|
struct ParticleSystem *particle_system;
|
|
} DupliObject;
|
|
|
|
/* **************** OBJECT ********************* */
|
|
|
|
/* used many places... should be specialized */
|
|
#define SELECT 1
|
|
|
|
/* type */
|
|
enum {
|
|
OB_EMPTY = 0,
|
|
OB_MESH = 1,
|
|
OB_CURVE = 2,
|
|
OB_SURF = 3,
|
|
OB_FONT = 4,
|
|
OB_MBALL = 5,
|
|
|
|
OB_LAMP = 10,
|
|
OB_CAMERA = 11,
|
|
|
|
OB_SPEAKER = 12,
|
|
|
|
/* OB_WAVE = 21, */
|
|
OB_LATTICE = 22,
|
|
|
|
/* 23 and 24 are for life and sector (old file compat.) */
|
|
OB_ARMATURE = 25,
|
|
};
|
|
|
|
/* check if the object type supports materials */
|
|
#define OB_TYPE_SUPPORT_MATERIAL(_type) \
|
|
((_type) >= OB_MESH && (_type) <= OB_MBALL)
|
|
#define OB_TYPE_SUPPORT_VGROUP(_type) \
|
|
(ELEM(_type, OB_MESH, OB_LATTICE))
|
|
#define OB_TYPE_SUPPORT_EDITMODE(_type) \
|
|
(ELEM(_type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE))
|
|
#define OB_TYPE_SUPPORT_PARVERT(_type) \
|
|
(ELEM(_type, OB_MESH, OB_SURF, OB_CURVE, OB_LATTICE))
|
|
|
|
/* is this ID type used as object data */
|
|
#define OB_DATA_SUPPORT_ID(_id_type) \
|
|
(ELEM(_id_type, ID_ME, ID_CU, ID_MB, ID_LA, ID_SPK, ID_CA, ID_LT, ID_AR))
|
|
|
|
#define OB_DATA_SUPPORT_ID_CASE \
|
|
ID_ME: case ID_CU: case ID_MB: case ID_LA: case ID_SPK: case ID_CA: case ID_LT: case ID_AR
|
|
|
|
/* partype: first 4 bits: type */
|
|
enum {
|
|
PARTYPE = (1 << 4) - 1,
|
|
PAROBJECT = 0,
|
|
PARCURVE = 1,
|
|
PARKEY = 2,
|
|
|
|
PARSKEL = 4,
|
|
PARVERT1 = 5,
|
|
PARVERT3 = 6,
|
|
PARBONE = 7,
|
|
|
|
/* slow parenting - is not threadsafe and/or may give errors after jumping */
|
|
PARSLOW = 16,
|
|
};
|
|
|
|
/* (short) transflag */
|
|
/* flags 1 and 2 were unused or relics from past features */
|
|
enum {
|
|
OB_NEG_SCALE = 1 << 2,
|
|
OB_DUPLIFRAMES = 1 << 3,
|
|
OB_DUPLIVERTS = 1 << 4,
|
|
OB_DUPLIROT = 1 << 5,
|
|
OB_DUPLINOSPEED = 1 << 6,
|
|
/* OB_POWERTRACK = 1 << 7,*/ /*UNUSED*/
|
|
OB_DUPLIGROUP = 1 << 8,
|
|
OB_DUPLIFACES = 1 << 9,
|
|
OB_DUPLIFACES_SCALE = 1 << 10,
|
|
OB_DUPLIPARTS = 1 << 11,
|
|
OB_RENDER_DUPLI = 1 << 12,
|
|
OB_NO_CONSTRAINTS = 1 << 13, /* runtime constraints disable */
|
|
OB_NO_PSYS_UPDATE = 1 << 14, /* hack to work around particle issue */
|
|
|
|
OB_DUPLI = OB_DUPLIFRAMES | OB_DUPLIVERTS | OB_DUPLIGROUP | OB_DUPLIFACES | OB_DUPLIPARTS,
|
|
};
|
|
|
|
/* (short) ipoflag */
|
|
/* XXX: many old flags for features removed due to incompatibility
|
|
* with new system and/or other design issues were here
|
|
*/
|
|
/* for stride/path editing (XXX: NEEDS REVIEW) */
|
|
#define OB_DISABLE_PATH (1 << 10)
|
|
|
|
/* (short) trackflag / upflag */
|
|
enum {
|
|
OB_POSX = 0,
|
|
OB_POSY = 1,
|
|
OB_POSZ = 2,
|
|
OB_NEGX = 3,
|
|
OB_NEGY = 4,
|
|
OB_NEGZ = 5,
|
|
};
|
|
|
|
/* gameflag in game.h */
|
|
|
|
/* dt: no flags */
|
|
enum {
|
|
OB_BOUNDBOX = 1,
|
|
OB_WIRE = 2,
|
|
OB_SOLID = 3,
|
|
OB_MATERIAL = 4,
|
|
OB_TEXTURE = 5,
|
|
OB_RENDER = 6,
|
|
|
|
OB_PAINT = 100, /* temporary used in draw code */
|
|
};
|
|
|
|
/* dtx: flags (short) */
|
|
enum {
|
|
OB_DRAWBOUNDOX = 1 << 0,
|
|
OB_AXIS = 1 << 1,
|
|
OB_TEXSPACE = 1 << 2,
|
|
OB_DRAWNAME = 1 << 3,
|
|
OB_DRAWIMAGE = 1 << 4,
|
|
/* for solid+wire display */
|
|
OB_DRAWWIRE = 1 << 5,
|
|
/* for overdraw s*/
|
|
OB_DRAWXRAY = 1 << 6,
|
|
/* enable transparent draw */
|
|
OB_DRAWTRANSP = 1 << 7,
|
|
OB_DRAW_ALL_EDGES = 1 << 8, /* only for meshes currently */
|
|
};
|
|
|
|
/* empty_drawtype: no flags */
|
|
enum {
|
|
OB_ARROWS = 1,
|
|
OB_PLAINAXES = 2,
|
|
OB_CIRCLE = 3,
|
|
OB_SINGLE_ARROW = 4,
|
|
OB_CUBE = 5,
|
|
OB_EMPTY_SPHERE = 6,
|
|
OB_EMPTY_CONE = 7,
|
|
OB_EMPTY_IMAGE = 8,
|
|
};
|
|
|
|
/* boundtype */
|
|
enum {
|
|
OB_BOUND_BOX = 0,
|
|
OB_BOUND_SPHERE = 1,
|
|
OB_BOUND_CYLINDER = 2,
|
|
OB_BOUND_CONE = 3,
|
|
OB_BOUND_TRIANGLE_MESH = 4,
|
|
OB_BOUND_CONVEX_HULL = 5,
|
|
/* OB_BOUND_DYN_MESH = 6, */ /*UNUSED*/
|
|
OB_BOUND_CAPSULE = 7,
|
|
};
|
|
|
|
/* lod flags */
|
|
enum {
|
|
OB_LOD_USE_MESH = 1 << 0,
|
|
OB_LOD_USE_MAT = 1 << 1,
|
|
};
|
|
|
|
|
|
/* **************** BASE ********************* */
|
|
|
|
/* also needed for base!!!!! or rather, they interfere....*/
|
|
/* base->flag and ob->flag */
|
|
#define BA_WAS_SEL (1 << 1)
|
|
#define BA_HAS_RECALC_OB (1 << 2)
|
|
#define BA_HAS_RECALC_DATA (1 << 3)
|
|
|
|
/* NOTE: this was used as a proper setting in past, so nullify before using */
|
|
#define BA_TEMP_TAG (1 << 5)
|
|
|
|
/* #define BA_FROMSET (1 << 7) */ /*UNUSED*/
|
|
|
|
#define BA_TRANSFORM_CHILD (1 << 8) /* child of a transformed object */
|
|
#define BA_TRANSFORM_PARENT (1 << 13) /* parent of a transformed object */
|
|
|
|
|
|
/* an initial attempt as making selection more specific! */
|
|
#define BA_DESELECT 0
|
|
#define BA_SELECT 1
|
|
|
|
|
|
#define OB_FROMDUPLI (1 << 9)
|
|
#define OB_DONE (1 << 10)
|
|
/* #define OB_RADIO (1 << 11) */ /* deprecated */
|
|
#define OB_FROMGROUP (1 << 12)
|
|
|
|
/* WARNING - when adding flags check on PSYS_RECALC */
|
|
/* ob->recalc (flag bits!) */
|
|
enum {
|
|
OB_RECALC_OB = 1 << 0,
|
|
OB_RECALC_DATA = 1 << 1,
|
|
/* time flag is set when time changes need recalc, so baked systems can ignore it */
|
|
OB_RECALC_TIME = 1 << 2,
|
|
/* only use for matching any flag, NOT as an argument since more flags may be added. */
|
|
OB_RECALC_ALL = OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME,
|
|
};
|
|
|
|
/* controller state */
|
|
#define OB_MAX_STATES 30
|
|
|
|
/* collision masks */
|
|
#define OB_MAX_COL_MASKS 8
|
|
|
|
/* ob->gameflag */
|
|
enum {
|
|
OB_DYNAMIC = 1 << 0,
|
|
OB_CHILD = 1 << 1,
|
|
OB_ACTOR = 1 << 2,
|
|
OB_INERTIA_LOCK_X = 1 << 3,
|
|
OB_INERTIA_LOCK_Y = 1 << 4,
|
|
OB_INERTIA_LOCK_Z = 1 << 5,
|
|
OB_DO_FH = 1 << 6,
|
|
OB_ROT_FH = 1 << 7,
|
|
OB_ANISOTROPIC_FRICTION = 1 << 8,
|
|
OB_GHOST = 1 << 9,
|
|
OB_RIGID_BODY = 1 << 10,
|
|
OB_BOUNDS = 1 << 11,
|
|
|
|
OB_COLLISION_RESPONSE = 1 << 12,
|
|
OB_SECTOR = 1 << 13,
|
|
OB_PROP = 1 << 14,
|
|
OB_MAINACTOR = 1 << 15,
|
|
|
|
OB_COLLISION = 1 << 16,
|
|
OB_SOFT_BODY = 1 << 17,
|
|
OB_OCCLUDER = 1 << 18,
|
|
OB_SENSOR = 1 << 19,
|
|
OB_NAVMESH = 1 << 20,
|
|
OB_HASOBSTACLE = 1 << 21,
|
|
OB_CHARACTER = 1 << 22,
|
|
|
|
OB_RECORD_ANIMATION = 1 << 23,
|
|
};
|
|
|
|
/* ob->gameflag2 */
|
|
enum {
|
|
OB_NEVER_DO_ACTIVITY_CULLING = 1 << 0,
|
|
OB_LOCK_RIGID_BODY_X_AXIS = 1 << 2,
|
|
OB_LOCK_RIGID_BODY_Y_AXIS = 1 << 3,
|
|
OB_LOCK_RIGID_BODY_Z_AXIS = 1 << 4,
|
|
OB_LOCK_RIGID_BODY_X_ROT_AXIS = 1 << 5,
|
|
OB_LOCK_RIGID_BODY_Y_ROT_AXIS = 1 << 6,
|
|
OB_LOCK_RIGID_BODY_Z_ROT_AXIS = 1 << 7,
|
|
|
|
/* OB_LIFE = OB_PROP | OB_DYNAMIC | OB_ACTOR | OB_MAINACTOR | OB_CHILD, */
|
|
};
|
|
|
|
/* ob->body_type */
|
|
enum {
|
|
OB_BODY_TYPE_NO_COLLISION = 0,
|
|
OB_BODY_TYPE_STATIC = 1,
|
|
OB_BODY_TYPE_DYNAMIC = 2,
|
|
OB_BODY_TYPE_RIGID = 3,
|
|
OB_BODY_TYPE_SOFT = 4,
|
|
OB_BODY_TYPE_OCCLUDER = 5,
|
|
OB_BODY_TYPE_SENSOR = 6,
|
|
OB_BODY_TYPE_NAVMESH = 7,
|
|
OB_BODY_TYPE_CHARACTER = 8,
|
|
};
|
|
|
|
/* ob->depsflag */
|
|
enum {
|
|
OB_DEPS_EXTRA_OB_RECALC = 1 << 0,
|
|
OB_DEPS_EXTRA_DATA_RECALC = 1 << 1,
|
|
};
|
|
|
|
/* ob->scavisflag */
|
|
enum {
|
|
OB_VIS_SENS = 1 << 0,
|
|
OB_VIS_CONT = 1 << 1,
|
|
OB_VIS_ACT = 1 << 2,
|
|
};
|
|
|
|
/* ob->scaflag */
|
|
enum {
|
|
OB_SHOWSENS = 1 << 6,
|
|
OB_SHOWACT = 1 << 7,
|
|
OB_ADDSENS = 1 << 8,
|
|
OB_ADDCONT = 1 << 9,
|
|
OB_ADDACT = 1 << 10,
|
|
OB_SHOWCONT = 1 << 11,
|
|
OB_ALLSTATE = 1 << 12,
|
|
OB_INITSTBIT = 1 << 13,
|
|
OB_DEBUGSTATE = 1 << 14,
|
|
OB_SHOWSTATE = 1 << 15,
|
|
};
|
|
|
|
/* ob->restrictflag */
|
|
enum {
|
|
OB_RESTRICT_VIEW = 1 << 0,
|
|
OB_RESTRICT_SELECT = 1 << 1,
|
|
OB_RESTRICT_RENDER = 1 << 2,
|
|
};
|
|
|
|
/* ob->shapeflag */
|
|
enum {
|
|
OB_SHAPE_LOCK = 1 << 0,
|
|
// OB_SHAPE_TEMPLOCK = 1 << 1, /* deprecated */
|
|
OB_SHAPE_EDIT_MODE = 1 << 2,
|
|
};
|
|
|
|
/* ob->nlaflag */
|
|
enum {
|
|
/* WARNING: flags (1 << 0) and (1 << 1) were from old animsys */
|
|
/* object-channel expanded status */
|
|
OB_ADS_COLLAPSED = 1 << 10,
|
|
/* object's ipo-block */
|
|
OB_ADS_SHOWIPO = 1 << 11,
|
|
/* object's constraint channels */
|
|
OB_ADS_SHOWCONS = 1 << 12,
|
|
/* object's material channels */
|
|
OB_ADS_SHOWMATS = 1 << 13,
|
|
/* object's marticle channels */
|
|
OB_ADS_SHOWPARTS = 1 << 14,
|
|
};
|
|
|
|
/* ob->protectflag */
|
|
enum {
|
|
OB_LOCK_LOCX = 1 << 0,
|
|
OB_LOCK_LOCY = 1 << 1,
|
|
OB_LOCK_LOCZ = 1 << 2,
|
|
OB_LOCK_LOC = OB_LOCK_LOCX | OB_LOCK_LOCY | OB_LOCK_LOCZ,
|
|
OB_LOCK_ROTX = 1 << 3,
|
|
OB_LOCK_ROTY = 1 << 4,
|
|
OB_LOCK_ROTZ = 1 << 5,
|
|
OB_LOCK_ROT = OB_LOCK_ROTX | OB_LOCK_ROTY | OB_LOCK_ROTZ,
|
|
OB_LOCK_SCALEX = 1 << 6,
|
|
OB_LOCK_SCALEY = 1 << 7,
|
|
OB_LOCK_SCALEZ = 1 << 8,
|
|
OB_LOCK_SCALE = OB_LOCK_SCALEX | OB_LOCK_SCALEY | OB_LOCK_SCALEZ,
|
|
OB_LOCK_ROTW = 1 << 9,
|
|
OB_LOCK_ROT4D = 1 << 10,
|
|
};
|
|
|
|
/* ob->mode */
|
|
typedef enum ObjectMode {
|
|
OB_MODE_OBJECT = 0,
|
|
OB_MODE_EDIT = 1 << 0,
|
|
OB_MODE_SCULPT = 1 << 1,
|
|
OB_MODE_VERTEX_PAINT = 1 << 2,
|
|
OB_MODE_WEIGHT_PAINT = 1 << 3,
|
|
OB_MODE_TEXTURE_PAINT = 1 << 4,
|
|
OB_MODE_PARTICLE_EDIT = 1 << 5,
|
|
OB_MODE_POSE = 1 << 6,
|
|
} ObjectMode;
|
|
|
|
/* any mode where the brush system is used */
|
|
#define OB_MODE_ALL_PAINT (OB_MODE_SCULPT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_TEXTURE_PAINT)
|
|
|
|
#define MAX_DUPLI_RECUR 8
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|