16#define JOBJ_PTCL_ACTIVE 0x7FFFFFFF
17#define JOBJ_PTCL_OFFSET_MASK 0xFFFFFF
18#define JOBJ_PTCL_OFFSET_SHIFT 6
19#define JOBJ_PTCL_BANK_MASK 0x3F
30#define HSD_A_J_SCAZ 10
31#define HSD_A_J_NODE 11
32#define HSD_A_J_BRANCH 12
34#define HSD_A_J_SETBYTE0 20
35#define HSD_A_J_SETBYTE1 21
36#define HSD_A_J_SETBYTE2 22
37#define HSD_A_J_SETBYTE3 23
38#define HSD_A_J_SETBYTE4 24
39#define HSD_A_J_SETBYTE5 25
40#define HSD_A_J_SETBYTE6 26
41#define HSD_A_J_SETBYTE7 27
42#define HSD_A_J_SETBYTE8 28
43#define HSD_A_J_SETBYTE9 29
45#define HSD_A_J_SETFLOAT0 30
46#define HSD_A_J_SETFLOAT1 31
47#define HSD_A_J_SETFLOAT2 32
48#define HSD_A_J_SETFLOAT3 33
49#define HSD_A_J_SETFLOAT4 34
50#define HSD_A_J_SETFLOAT5 35
51#define HSD_A_J_SETFLOAT6 36
52#define HSD_A_J_SETFLOAT7 37
53#define HSD_A_J_SETFLOAT8 38
54#define HSD_A_J_SETFLOAT9 39
56#define JOBJ_BILLBOARD_FIELD 0xE00
57#define JOBJ_BILLBOARD 0x200
58#define JOBJ_VBILLBOARD 0x400
59#define JOBJ_HBILLBOARD 0x600
60#define JOBJ_RBILLBOARD 0x800
61#define JOBJ_PBILLBOARD 0x2000
63#define JOBJ_SKELETON (1 << 0)
64#define JOBJ_SKELETON_ROOT (1 << 1)
65#define JOBJ_ENVELOPE_MODEL (1 << 2)
66#define JOBJ_CLASSICAL_SCALE (1 << 3)
67#define JOBJ_HIDDEN (1 << 4)
68#define JOBJ_PTCL (1 << 5)
69#define JOBJ_MTX_DIRTY (1 << 6)
70#define JOBJ_LIGHTING (1 << 7)
71#define JOBJ_TEXGEN (1 << 8)
72#define JOBJ_INSTANCE (1 << 12)
73#define JOBJ_SPLINE (1 << 14)
74#define JOBJ_FLIP_IK (1 << 15)
75#define JOBJ_SPECULAR (1 << 16)
76#define JOBJ_USE_QUATERNION (1 << 17)
77#define JOBJ_UNK_B18 (1 << 18)
78#define JOBJ_UNK_B19 (1 << 19)
79#define JOBJ_UNK_B20 (1 << 20)
80#define JOBJ_NULL_OBJ (0 << 21)
81#define JOBJ_JOINT1 (1 << 21)
82#define JOBJ_JOINT2 (2 << 21)
83#define JOBJ_JOINT (3 << 21)
84#define JOBJ_EFFECTOR (3 << 21)
85#define JOBJ_USER_DEF_MTX (1 << 23)
86#define JOBJ_MTX_INDEP_PARENT (1 << 24)
87#define JOBJ_MTX_INDEP_SRT (1 << 25)
88#define JOBJ_UNK_B26 (1 << 26)
89#define JOBJ_UNK_B27 (1 << 27)
90#define JOBJ_ROOT_OPA (1 << 28)
91#define JOBJ_ROOT_XLU (1 << 29)
92#define JOBJ_ROOT_TEXEDGE (1 << 30)
94#define JOBJ_ROOT_MASK (JOBJ_ROOT_OPA | JOBJ_ROOT_TEXEDGE | JOBJ_ROOT_XLU)
96#define union_type_ptcl(o) ((o)->flags & JOBJ_PTCL ? true : false)
97#define union_type_spline(o) ((o)->flags & JOBJ_SPLINE ? true : false)
98#define union_type_dobj(o) \
99 ((o)->flags & (JOBJ_PTCL | JOBJ_SPLINE) ? false : true)
101#define HSD_JOBJ_INFO(i) ((HSD_JObjInfo*) (i))
102#define HSD_JOBJ_METHOD(o) HSD_JOBJ_INFO((o)->object.parent.class_info)
247#if !defined(__MWERKS__)
259#define HSD_JObjSetMtxDirty(jobj) \
261 if (jobj != NULL && !HSD_JObjMtxIsDirty(jobj)) { \
262 HSD_JObjSetMtxDirtySub(jobj); \
void PSMTXCopy(Mtx src, Mtx dst)
f32(* MtxPtr)[4]
Definition mtx.h:53
f32 Mtx[3][4]
Definition mtx.h:50
unsigned long u32
Definition types.h:9
float f32
Definition types.h:13
signed long s32
Definition types.h:8
Mtx mtx
Definition ftparts.static.h:8
Vec3 translate
Definition gmresult.c:1091
static float const scale
Definition itlgunray.c:22
HSD_JObjInfo hsdJObj
Definition jobj.c:21
void HSD_JObjMakeMatrix(HSD_JObj *jobj)
Definition jobj.c:138
struct HSD_DObj * HSD_JObjGetDObj(HSD_JObj *jobj)
Definition jobj.c:931
u32 HSD_JObjGetFlags(HSD_JObj *jobj)
Definition jobj.c:985
void HSD_JObjSetupMatrixSub(HSD_JObj *)
Definition jobj.c:1385
void HSD_JObjUnrefThis(HSD_JObj *jobj)
Definition jobj.c:731
void HSD_JObjPrependRObj(HSD_JObj *jobj, HSD_RObj *robj)
Definition jobj.c:957
static void HSD_JObjSetRotationZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:335
static void HSD_JObjSetTranslateWithMtxDirtyOutOfLine(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:500
void HSD_JObjClearFlags(HSD_JObj *, u32 flags)
Definition jobj.c:1019
static void HSD_JObjSetMtxDirtyOutOfLine(HSD_JObj *jobj)
Definition jobj.h:241
void HSD_JObjSetDPtclCallback(DPCtlCallback cb)
Definition jobj.c:1461
void HSD_JObjReqAnimByFlags(HSD_JObj *jobj, u32 flags, f32 frame)
Definition jobj.c:236
static void HSD_JObjAddScaleZ(HSD_JObj *jobj, float z)
Definition jobj.h:652
static void HSD_JObjSetRotationY(HSD_JObj *jobj, f32 y)
Definition jobj.h:315
static HSD_JObj * HSD_JObjGetNext(HSD_JObj *jobj)
Definition jobj.h:201
HSD_JObj * HSD_JObjGetCurrent(void)
Definition jobj.c:1060
static void HSD_JObjSetTranslateY(HSD_JObj *jobj, f32 y)
Definition jobj.h:529
static HSD_JObj * HSD_JObjGetChild(HSD_JObj *jobj)
Definition jobj.h:192
static f32 HSD_JObjGetScaleZ(HSD_JObj *jobj)
Definition jobj.h:473
static void HSD_JObjSetScaleWithMtxDirty(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:390
void RecalcParentTrspBits(HSD_JObj *jobj)
Definition jobj.c:799
static HSD_JObj * HSD_JObjGetParent(HSD_JObj *jobj)
Definition jobj.h:210
void resolveIKJoint1(HSD_JObj *jobj)
Definition jobj.c:1104
static void HSD_JObjSetMtxDirtyOutOfLineLeaf(HSD_JObj *jobj)
Definition jobj.h:236
void HSD_JObjWalkTree0(HSD_JObj *jobj, HSD_JObjWalkTreeCallback cb, f32 **cb_args)
Definition jobj.c:89
#define JOBJ_MTX_INDEP_SRT
Definition jobj.h:87
static void HSD_JObjAddRotationZ(HSD_JObj *jobj, float z)
Definition jobj.h:625
#define JOBJ_MTX_DIRTY
Definition jobj.h:69
void resolveIKJoint2(HSD_JObj *jobj)
Definition jobj.c:1257
static void HSD_JObjAddRotationX(HSD_JObj *jobj, float x)
Definition jobj.h:598
static void HSD_JObjSetRotationYWithMtxDirty(HSD_JObj *jobj, f32 y)
Definition jobj.h:325
static void HSD_JObjSetTranslateWithMtxDirty(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:489
void HSD_JObjAddAnimAll(HSD_JObj *, HSD_AnimJoint *, HSD_MatAnimJoint *, HSD_ShapeAnimJoint *)
Definition jobj.c:323
static void HSD_JObjSetScaleX(HSD_JObj *jobj, f32 x)
Definition jobj.h:400
static f32 HSD_JObjGetRotationY(HSD_JObj *jobj)
Definition jobj.h:368
void HSD_JObjAddNext(HSD_JObj *jobj, HSD_JObj *next)
Definition jobj.c:878
void HSD_JObjDeleteRObj(HSD_JObj *jobj, HSD_RObj *robj)
Definition jobj.c:965
static void HSD_JObjSetTranslateYWithMtxDirty(HSD_JObj *jobj, f32 y)
Definition jobj.h:538
static HSD_RObj * HSD_JObjGetRObj(HSD_JObj *jobj)
Definition jobj.h:219
void HSD_JObjRemoveAnimAll(HSD_JObj *jobj)
Definition jobj.c:231
static void HSD_JObjAddTranslationY(HSD_JObj *jobj, float y)
Definition jobj.h:670
static f32 HSD_JObjGetTranslationX(HSD_JObj *jobj)
Definition jobj.h:580
void HSD_JObjWalkTree(HSD_JObj *jobj, HSD_JObjWalkTreeCallback cb, f32 **cb_args)
Definition jobj.c:111
static void HSD_JObjAddTranslationX(HSD_JObj *jobj, float x)
Definition jobj.h:661
void HSD_JObjResolveRefsAll(HSD_JObj *, HSD_Joint *)
Definition jobj.c:702
void HSD_JObjAddAnim(HSD_JObj *, HSD_AnimJoint *an_joint, HSD_MatAnimJoint *mat_joint, HSD_ShapeAnimJoint *sh_joint)
Definition jobj.c:298
static float HSD_JObjGetTranslationZ(HSD_JObj *jobj)
Definition jobj.h:592
static void HSD_JObjCopyMtx(HSD_JObj *jobj, Mtx mtx)
Definition jobj.h:704
static void HSD_JObjSetScaleZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:445
void HSD_JObjRemoveAnimByFlags(HSD_JObj *jobj, u32 flags)
Definition jobj.c:198
void HSD_JObjRemoveAnim(HSD_JObj *jobj)
Definition jobj.c:226
static void HSD_JObjSetScaleYWithMtxDirty(HSD_JObj *jobj, f32 y)
Definition jobj.h:427
void HSD_JObjReqAnimAllByFlags(HSD_JObj *jobj, u32 flags, f32 frame)
Definition jobj.c:255
void HSD_JObjAddChild(HSD_JObj *jobj, HSD_JObj *child)
Definition jobj.c:828
void HSD_JObjRemoveAll(HSD_JObj *)
Definition jobj.c:774
static void HSD_JObjSetScale(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:380
int JObjInit(HSD_Class *o)
Definition jobj.c:1466
void HSD_JObjCheckDepend(HSD_JObj *jobj)
Definition jobj.c:30
static f32 HSD_JObjGetScaleX(HSD_JObj *jobj)
Definition jobj.h:461
void HSD_JObjSetFlags(HSD_JObj *, u32 flags)
Definition jobj.c:993
static void HSD_JObjSetScaleZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:436
static void HSD_JObjAddRotationXWithMtxDirty(HSD_JObj *jobj, float x)
Definition jobj.h:607
static void HSD_JObjSetRotationX(HSD_JObj *jobj, f32 x)
Definition jobj.h:295
static void HSD_JObjSetTranslateX(HSD_JObj *jobj, f32 x)
Definition jobj.h:511
HSD_JObj * HSD_JObjAlloc(void)
Definition jobj.c:1045
static void HSD_JObjAddTranslationYWithMtxDirty(HSD_JObj *jobj, float y)
Definition jobj.h:679
static void HSD_JObjGetTranslation2(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:574
void JObjResetRST(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:57
HSD_JObj * HSD_JObjRemove(HSD_JObj *jobj)
Definition jobj.c:740
static void HSD_JObjGetTranslation(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:565
void HSD_JObjSetDefaultClass(HSD_ClassInfo *info)
Definition jobj.c:602
static void HSD_JObjSetScaleY(HSD_JObj *jobj, f32 y)
Definition jobj.h:418
void HSD_JObjReqAnim(HSD_JObj *jobj, f32 frame)
Definition jobj.c:274
static void HSD_JObjAddTranslationZ(HSD_JObj *jobj, float z)
Definition jobj.h:688
static void HSD_JObjSetupMatrix(HSD_JObj *jobj)
Definition jobj.h:250
HSD_JObj * jobj_get_effector_checked(HSD_JObj *eff)
Note: this must not be declared inline, so that the "eff" assertion string data is placed before "rob...
Definition jobj.c:1089
static void HSD_JObjSetMtxDirtyInline(HSD_JObj *jobj)
Definition jobj.h:267
void HSD_JObjSetCurrent(HSD_JObj *jobj)
Definition jobj.c:1053
void JObjReleaseChild(HSD_JObj *jobj)
Definition jobj.c:1480
void HSD_JObjAnim(HSD_JObj *jobj)
Definition jobj.c:531
void JObjSortAnim(HSD_AObj *aobj)
Definition jobj.c:279
void HSD_JObjAddDObj(HSD_JObj *jobj, HSD_DObj *dobj)
Definition jobj.c:939
static void HSD_JObjSetRotationXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:305
void HSD_JObjRemoveAnimAllByFlags(HSD_JObj *jobj, u32 flags)
Definition jobj.c:212
static void HSD_JObjSetRotationWithMtxDirty(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:284
void HSD_JObjReqAnimAll(HSD_JObj *, f32)
Definition jobj.c:269
void JObjUpdateFunc(void *obj, enum_t type, HSD_ObjData *val)
Definition jobj.c:351
#define HSD_JObjSetMtxDirty(jobj)
Why does this seem to be a define while the others are inline functions?
Definition jobj.h:259
#define JOBJ_USE_QUATERNION
Definition jobj.h:76
void HSD_JObjResolveRefs(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:682
HSD_JObj * HSD_JObjReparent(HSD_JObj *jobj, HSD_JObj *parent)
Definition jobj.c:854
static void HSD_JObjAddRotationY(HSD_JObj *jobj, float y)
Definition jobj.h:616
static void HSD_JObjAddScaleY(HSD_JObj *jobj, float y)
Definition jobj.h:643
void JObjRelease(HSD_Class *o)
Definition jobj.c:1511
void HSD_JObjResetRST(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:72
static void HSD_JObjSetTranslateXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:520
void(* HSD_JObjWalkTreeCallback)(HSD_JObj *, f32 **, s32)
Definition jobj.h:155
static f32 HSD_JObjGetRotationX(HSD_JObj *jobj)
Definition jobj.h:362
static void HSD_JObjGetScale(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:454
void JObjAmnesia(HSD_ClassInfo *info)
Definition jobj.c:1529
void HSD_JObjSetMtxDirtySub(HSD_JObj *)
Definition jobj.c:1445
void HSD_JObjDispAll(HSD_JObj *jobj, Mtx vmtx, u32 flags, u32 rendermode)
Definition jobj.c:567
void HSD_JObjUnref(HSD_JObj *jobj)
Definition jobj.c:716
HSD_JObj * HSD_JObjLoadJoint(HSD_Joint *)
Definition jobj.c:667
static void HSD_JObjRef(HSD_JObj *jobj)
Definition jobj.h:711
static f32 HSD_JObjGetTranslationY(HSD_JObj *jobj)
Definition jobj.h:586
static void HSD_JObjAddScaleX(HSD_JObj *jobj, float x)
Definition jobj.h:634
static void HSD_JObjRefThis(HSD_JObj *jobj)
Definition jobj.h:716
static void HSD_JObjSetTranslateZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:556
void HSD_JObjAnimAll(HSD_JObj *)
Definition jobj.c:558
static void HSD_JObjSetRotationZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:345
static void HSD_JObjSetRotation(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:274
void(* DPCtlCallback)(int, int lo, int hi, HSD_JObj *jobj)
Definition jobj.h:156
static bool HSD_JObjMtxIsDirty(HSD_JObj *jobj)
Definition jobj.h:225
static void HSD_JObjSetTranslate(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:479
static f32 HSD_JObjGetScaleY(HSD_JObj *jobj)
Definition jobj.h:467
static MtxPtr HSD_JObjGetMtxPtr(HSD_JObj *jobj)
Definition jobj.h:697
s32 JObjLoad(HSD_JObj *jobj, HSD_Joint *joint, HSD_JObj *parent)
Definition jobj.c:629
static f32 HSD_JObjGetRotationZ(HSD_JObj *jobj)
Definition jobj.h:374
#define JOBJ_USER_DEF_MTX
Definition jobj.h:85
static void HSD_JObjSetScaleXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:409
void JObjAnimAll(HSD_JObj *jobj)
Definition jobj.c:543
static void HSD_JObjSetTranslateZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:547
void HSD_JObjSetFlagsAll(HSD_JObj *, u32 flags)
Definition jobj.c:1006
void HSD_JObjClearFlagsAll(HSD_JObj *, u32 flags)
Definition jobj.c:1032
static void HSD_JObjGetRotation(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:355
#define HSD_ASSERT(line, cond)
Definition mnvibration.c:6
static void iref_INC(void *o)
Definition object.h:115
static void ref_INC(void *o)
Definition object.h:83
void * obj
Definition pobj.c:38
static Mtx vmtx
Definition psdisp.c:59
static unsigned long int next
Definition rand.c:3
#define NULL
Definition stddef.h:14
u32 flags
Definition dobj.h:20
HSD_Class parent
Definition dobj.h:15
HSD_AObj * aobj
Definition dobj.h:19
void(* release_child)(HSD_JObj *jobj)
Definition jobj.h:151
s32(* load)(HSD_JObj *jobj, HSD_Joint *joint, HSD_JObj *jobj_2)
Definition jobj.h:146
HSD_ObjInfo parent
Definition jobj.h:145
void(* disp)(HSD_JObj *jobj, Mtx vmtx, Mtx pmtx, HSD_TrspMask trsp_mask, u32 rendermode)
Definition jobj.h:149
void(* make_mtx)(HSD_JObj *jobj)
Definition jobj.h:147
void(* make_pmtx)(HSD_JObj *jobj, Mtx mtx, Mtx rmtx)
Definition jobj.h:148
u32 flags
Definition jobj.h:109
union HSD_JObj::@140100343326260066157231264312360267130371306225 u
HSD_JObj * parent
Definition jobj.h:107
HSD_Spline * spline
Definition jobj.h:113
Vec3 translate
Definition jobj.h:117
Mtx mtx
Definition jobj.h:118
HSD_SList * ptcl
Definition jobj.h:111
Vec3 scale
Definition jobj.h:116
Quaternion rotate
Definition jobj.h:115
MtxPtr envelopemtx
Definition jobj.h:120
HSD_AObj * aobj
Definition jobj.h:121
struct HSD_DObj * dobj
Definition jobj.h:112
u32 id
Definition jobj.h:123
HSD_Obj object
Definition jobj.h:105
HSD_JObj * next
Definition jobj.h:106
HSD_JObj * child
Definition jobj.h:108
HSD_RObj * robj
Definition jobj.h:122
Vec3 * scl
Definition jobj.h:119
Vec3 scale
Definition jobj.h:138
HSD_RObjDesc * robjdesc
Definition jobj.h:141
char * class_name
Definition jobj.h:128
union HSD_Joint::@377102274010177013356207347041224013117260206021 u
HSD_Joint * child
Definition jobj.h:130
HSD_Joint * next
Definition jobj.h:131
Vec3 position
Definition jobj.h:139
HSD_Spline * spline
Definition jobj.h:134
Vec3 rotation
Definition jobj.h:137
HSD_DObjDesc * dobjdesc
Definition jobj.h:133
MtxPtr mtx
Definition jobj.h:140
u32 flags
Definition jobj.h:129
HSD_SList * ptcl
Definition jobj.h:135
HSD_TrspMask
Definition forward.h:141