18#define JOBJ_PTCL_ACTIVE 0x7FFFFFFF
19#define JOBJ_PTCL_OFFSET_MASK 0xFFFFFF
20#define JOBJ_PTCL_OFFSET_SHIFT 6
21#define JOBJ_PTCL_BANK_MASK 0x3F
32#define HSD_A_J_SCAZ 10
33#define HSD_A_J_NODE 11
34#define HSD_A_J_BRANCH 12
36#define HSD_A_J_SETBYTE0 20
37#define HSD_A_J_SETBYTE1 21
38#define HSD_A_J_SETBYTE2 22
39#define HSD_A_J_SETBYTE3 23
40#define HSD_A_J_SETBYTE4 24
41#define HSD_A_J_SETBYTE5 25
42#define HSD_A_J_SETBYTE6 26
43#define HSD_A_J_SETBYTE7 27
44#define HSD_A_J_SETBYTE8 28
45#define HSD_A_J_SETBYTE9 29
47#define HSD_A_J_SETFLOAT0 30
48#define HSD_A_J_SETFLOAT1 31
49#define HSD_A_J_SETFLOAT2 32
50#define HSD_A_J_SETFLOAT3 33
51#define HSD_A_J_SETFLOAT4 34
52#define HSD_A_J_SETFLOAT5 35
53#define HSD_A_J_SETFLOAT6 36
54#define HSD_A_J_SETFLOAT7 37
55#define HSD_A_J_SETFLOAT8 38
56#define HSD_A_J_SETFLOAT9 39
58#define JOBJ_BILLBOARD_FIELD 0xE00
59#define JOBJ_BILLBOARD 0x200
60#define JOBJ_VBILLBOARD 0x400
61#define JOBJ_HBILLBOARD 0x600
62#define JOBJ_RBILLBOARD 0x800
63#define JOBJ_PBILLBOARD 0x2000
65#define JOBJ_SKELETON (1 << 0)
66#define JOBJ_SKELETON_ROOT (1 << 1)
67#define JOBJ_ENVELOPE_MODEL (1 << 2)
68#define JOBJ_CLASSICAL_SCALE (1 << 3)
69#define JOBJ_HIDDEN (1 << 4)
70#define JOBJ_PTCL (1 << 5)
71#define JOBJ_MTX_DIRTY (1 << 6)
72#define JOBJ_LIGHTING (1 << 7)
73#define JOBJ_TEXGEN (1 << 8)
74#define JOBJ_INSTANCE (1 << 12)
75#define JOBJ_SPLINE (1 << 14)
76#define JOBJ_FLIP_IK (1 << 15)
77#define JOBJ_SPECULAR (1 << 16)
78#define JOBJ_USE_QUATERNION (1 << 17)
79#define JOBJ_UNK_B18 (1 << 18)
80#define JOBJ_UNK_B19 (1 << 19)
81#define JOBJ_UNK_B20 (1 << 20)
82#define JOBJ_NULL_OBJ (0 << 21)
83#define JOBJ_JOINT1 (1 << 21)
84#define JOBJ_JOINT2 (2 << 21)
85#define JOBJ_JOINT (3 << 21)
86#define JOBJ_EFFECTOR (3 << 21)
87#define JOBJ_USER_DEF_MTX (1 << 23)
88#define JOBJ_MTX_INDEP_PARENT (1 << 24)
89#define JOBJ_MTX_INDEP_SRT (1 << 25)
90#define JOBJ_UNK_B26 (1 << 26)
91#define JOBJ_UNK_B27 (1 << 27)
92#define JOBJ_ROOT_OPA (1 << 28)
93#define JOBJ_ROOT_XLU (1 << 29)
94#define JOBJ_ROOT_TEXEDGE (1 << 30)
96#define JOBJ_ROOT_MASK (JOBJ_ROOT_OPA | JOBJ_ROOT_TEXEDGE | JOBJ_ROOT_XLU)
98#define union_type_ptcl(o) ((o)->flags & JOBJ_PTCL ? true : false)
99#define union_type_spline(o) ((o)->flags & JOBJ_SPLINE ? true : false)
100#define union_type_dobj(o) \
101 ((o)->flags & (JOBJ_PTCL | JOBJ_SPLINE) ? false : true)
103#define HSD_JOBJ_INFO(i) ((HSD_JObjInfo*) (i))
104#define HSD_JOBJ_METHOD(o) HSD_JOBJ_INFO((o)->object.parent.class_info)
249#if !defined(__MWERKS__)
261#define HSD_JObjSetMtxDirty(jobj) \
263 if (jobj != NULL && !HSD_JObjMtxIsDirty(jobj)) { \
264 HSD_JObjSetMtxDirtySub(jobj); \
Annotations describing how archive data is laid out, for the parts a C declaration cannot express: ho...
static void cb(long result, struct DVDCommandBlock *block)
Definition fstload.c:19
static float const scale
Definition itlgunray.c:21
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:732
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:337
static void HSD_JObjSetTranslateWithMtxDirtyOutOfLine(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:502
void HSD_JObjClearFlags(HSD_JObj *, u32 flags)
Definition jobj.c:1019
static void HSD_JObjSetMtxDirtyOutOfLine(HSD_JObj *jobj)
Definition jobj.h:243
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:654
static void HSD_JObjSetRotationY(HSD_JObj *jobj, f32 y)
Definition jobj.h:317
static HSD_JObj * HSD_JObjGetNext(HSD_JObj *jobj)
Definition jobj.h:203
#define JOBJ_SPLINE
Definition jobj.h:75
HSD_JObj * HSD_JObjGetCurrent(void)
Definition jobj.c:1060
static void HSD_JObjSetTranslateY(HSD_JObj *jobj, f32 y)
Definition jobj.h:531
static HSD_JObj * HSD_JObjGetChild(HSD_JObj *jobj)
Definition jobj.h:194
static f32 HSD_JObjGetScaleZ(HSD_JObj *jobj)
Definition jobj.h:475
static void HSD_JObjSetScaleWithMtxDirty(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:392
void RecalcParentTrspBits(HSD_JObj *jobj)
Definition jobj.c:799
static HSD_JObj * HSD_JObjGetParent(HSD_JObj *jobj)
Definition jobj.h:212
void resolveIKJoint1(HSD_JObj *jobj)
Definition jobj.c:1104
static void HSD_JObjSetMtxDirtyOutOfLineLeaf(HSD_JObj *jobj)
Definition jobj.h:238
void HSD_JObjWalkTree0(HSD_JObj *jobj, HSD_JObjWalkTreeCallback cb, f32 **cb_args)
Definition jobj.c:89
#define JOBJ_MTX_INDEP_SRT
Definition jobj.h:89
static void HSD_JObjAddRotationZ(HSD_JObj *jobj, float z)
Definition jobj.h:627
#define JOBJ_MTX_DIRTY
Definition jobj.h:71
void resolveIKJoint2(HSD_JObj *jobj)
Definition jobj.c:1257
static void HSD_JObjAddRotationX(HSD_JObj *jobj, float x)
Definition jobj.h:600
static void HSD_JObjSetRotationYWithMtxDirty(HSD_JObj *jobj, f32 y)
Definition jobj.h:327
static void HSD_JObjSetTranslateWithMtxDirty(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:491
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:402
static f32 HSD_JObjGetRotationY(HSD_JObj *jobj)
Definition jobj.h:370
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:540
static HSD_RObj * HSD_JObjGetRObj(HSD_JObj *jobj)
Definition jobj.h:221
void HSD_JObjRemoveAnimAll(HSD_JObj *jobj)
Definition jobj.c:231
static void HSD_JObjAddTranslationY(HSD_JObj *jobj, float y)
Definition jobj.h:672
static f32 HSD_JObjGetTranslationX(HSD_JObj *jobj)
Definition jobj.h:582
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:663
void HSD_JObjResolveRefsAll(HSD_JObj *, HSD_Joint *)
Definition jobj.c:703
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:594
static void HSD_JObjCopyMtx(HSD_JObj *jobj, Mtx mtx)
Definition jobj.h:706
static void HSD_JObjSetScaleZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:447
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:429
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:382
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:463
void HSD_JObjSetFlags(HSD_JObj *, u32 flags)
Definition jobj.c:993
static void HSD_JObjSetScaleZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:438
static void HSD_JObjAddRotationXWithMtxDirty(HSD_JObj *jobj, float x)
Definition jobj.h:609
static void HSD_JObjSetRotationX(HSD_JObj *jobj, f32 x)
Definition jobj.h:297
static void HSD_JObjSetTranslateX(HSD_JObj *jobj, f32 x)
Definition jobj.h:513
HSD_JObj * HSD_JObjAlloc(void)
Definition jobj.c:1045
static void HSD_JObjAddTranslationYWithMtxDirty(HSD_JObj *jobj, float y)
Definition jobj.h:681
static void HSD_JObjGetTranslation2(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:576
void JObjResetRST(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:57
HSD_JObj * HSD_JObjRemove(HSD_JObj *jobj)
Definition jobj.c:741
static void HSD_JObjGetTranslation(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:567
void HSD_JObjSetDefaultClass(HSD_ClassInfo *info)
Definition jobj.c:602
static void HSD_JObjSetScaleY(HSD_JObj *jobj, f32 y)
Definition jobj.h:420
void HSD_JObjReqAnim(HSD_JObj *jobj, f32 frame)
Definition jobj.c:274
static void HSD_JObjAddTranslationZ(HSD_JObj *jobj, float z)
Definition jobj.h:690
static void HSD_JObjSetupMatrix(HSD_JObj *jobj)
Definition jobj.h:252
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:269
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
#define JOBJ_PTCL
Definition jobj.h:70
static void HSD_JObjSetRotationXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:307
void HSD_JObjRemoveAnimAllByFlags(HSD_JObj *jobj, u32 flags)
Definition jobj.c:212
static void HSD_JObjSetRotationWithMtxDirty(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:286
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:261
#define JOBJ_USE_QUATERNION
Definition jobj.h:78
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:618
static void HSD_JObjAddScaleY(HSD_JObj *jobj, float y)
Definition jobj.h:645
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:522
void(* HSD_JObjWalkTreeCallback)(HSD_JObj *, f32 **, s32)
Definition jobj.h:157
static f32 HSD_JObjGetRotationX(HSD_JObj *jobj)
Definition jobj.h:364
static void HSD_JObjGetScale(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:456
void JObjAmnesia(HSD_ClassInfo *info)
Definition jobj.c:1529
void HSD_JObjSetMtxDirtySub(HSD_JObj *)
Definition jobj.c:1445
static void HSD_JObjRefThis(HSD_JObj *jobj)
Definition jobj.h:718
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:717
HSD_JObj * HSD_JObjLoadJoint(HSD_Joint *)
Definition jobj.c:667
static void HSD_JObjRef(HSD_JObj *jobj)
Definition jobj.h:713
static f32 HSD_JObjGetTranslationY(HSD_JObj *jobj)
Definition jobj.h:588
static void HSD_JObjAddScaleX(HSD_JObj *jobj, float x)
Definition jobj.h:636
static void HSD_JObjSetTranslateZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:558
void HSD_JObjAnimAll(HSD_JObj *)
Definition jobj.c:558
static void HSD_JObjSetRotationZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:347
static void HSD_JObjSetRotation(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:276
void(* DPCtlCallback)(int, int lo, int hi, HSD_JObj *jobj)
Definition jobj.h:158
static bool HSD_JObjMtxIsDirty(HSD_JObj *jobj)
Definition jobj.h:227
static void HSD_JObjSetTranslate(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:481
static f32 HSD_JObjGetScaleY(HSD_JObj *jobj)
Definition jobj.h:469
static MtxPtr HSD_JObjGetMtxPtr(HSD_JObj *jobj)
Definition jobj.h:699
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:376
#define JOBJ_USER_DEF_MTX
Definition jobj.h:87
static void HSD_JObjSetScaleXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:411
void JObjAnimAll(HSD_JObj *jobj)
Definition jobj.c:543
static void HSD_JObjSetTranslateZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:549
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:357
void PSMTXCopy(Mtx src, Mtx dst)
f32(* MtxPtr)[4]
Definition mtx.h:53
f32 Mtx[3][4]
Definition mtx.h:50
signed int s32
Definition types.h:12
unsigned int u32
Definition types.h:13
float f32
Definition types.h:18
#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
static Mtx vmtx
Definition psdisp.c:54
static u32 next
Definition rand.c:4
int y
Definition types.h:1
int x
Definition types.h:0
#define NULL
Definition stddef.h:19
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:153
s32(* load)(HSD_JObj *jobj, HSD_Joint *joint, HSD_JObj *jobj_2)
Definition jobj.h:148
HSD_ObjInfo parent
Definition jobj.h:147
void(* disp)(HSD_JObj *jobj, Mtx vmtx, Mtx pmtx, HSD_TrspMask trsp_mask, u32 rendermode)
Definition jobj.h:151
void(* make_mtx)(HSD_JObj *jobj)
Definition jobj.h:149
void(* make_pmtx)(HSD_JObj *jobj, Mtx mtx, Mtx rmtx)
Definition jobj.h:150
u32 flags
Definition jobj.h:111
HSD_JObj * parent
Definition jobj.h:109
Vec3 translate
Definition jobj.h:119
Mtx mtx
Definition jobj.h:120
Vec3 scale
Definition jobj.h:118
Quaternion rotate
Definition jobj.h:117
MtxPtr envelopemtx
Definition jobj.h:122
HSD_AObj * aobj
Definition jobj.h:123
union HSD_JObj::HSD_JObj_u u
HSD_Obj object
Definition jobj.h:107
HSD_JObj * next
Definition jobj.h:108
HSD_JObj * child
Definition jobj.h:110
HSD_RObj * robj
Definition jobj.h:124
HSD_IDKey id
Definition jobj.h:125
Vec3 * scl
Definition jobj.h:121
Vec3 scale
Definition jobj.h:140
HSD_RObjDesc * robjdesc
Definition jobj.h:143
char * class_name
Definition jobj.h:130
HSD_Joint * child
Definition jobj.h:132
HSD_Joint * next
Definition jobj.h:133
Vec3 position
Definition jobj.h:141
Vec3 rotation
Definition jobj.h:139
MtxPtr mtx
Definition jobj.h:142
u32 flags
Definition jobj.h:131
union HSD_Joint::HSD_Joint_u u
HSD_TrspMask
Definition forward.h:146
uintptr_t HSD_IDKey
Definition forward.h:107
HSD_Spline * spline
Definition jobj.h:115
struct HSD_DObj * dobj
Definition jobj.h:114
HSD_SList * ptcl
Definition jobj.h:113
HSD_Spline *spline DAT_IF((flags &JOBJ_SPLINE) !=0)
HSD_DObjDesc *dobjdesc DAT_IF(!(flags &(JOBJ_PTCL|JOBJ_SPLINE)))
HSD_SList *ptcl DAT_IF((flags &JOBJ_PTCL) !=0)