20#define JOBJ_PTCL_ACTIVE 0x7FFFFFFF
21#define JOBJ_PTCL_OFFSET_MASK 0xFFFFFF
22#define JOBJ_PTCL_OFFSET_SHIFT 6
23#define JOBJ_PTCL_BANK_MASK 0x3F
34#define HSD_A_J_SCAZ 10
35#define HSD_A_J_NODE 11
36#define HSD_A_J_BRANCH 12
38#define HSD_A_J_SETBYTE0 20
39#define HSD_A_J_SETBYTE1 21
40#define HSD_A_J_SETBYTE2 22
41#define HSD_A_J_SETBYTE3 23
42#define HSD_A_J_SETBYTE4 24
43#define HSD_A_J_SETBYTE5 25
44#define HSD_A_J_SETBYTE6 26
45#define HSD_A_J_SETBYTE7 27
46#define HSD_A_J_SETBYTE8 28
47#define HSD_A_J_SETBYTE9 29
49#define HSD_A_J_SETFLOAT0 30
50#define HSD_A_J_SETFLOAT1 31
51#define HSD_A_J_SETFLOAT2 32
52#define HSD_A_J_SETFLOAT3 33
53#define HSD_A_J_SETFLOAT4 34
54#define HSD_A_J_SETFLOAT5 35
55#define HSD_A_J_SETFLOAT6 36
56#define HSD_A_J_SETFLOAT7 37
57#define HSD_A_J_SETFLOAT8 38
58#define HSD_A_J_SETFLOAT9 39
60#define JOBJ_BILLBOARD_FIELD 0xE00
61#define JOBJ_BILLBOARD 0x200
62#define JOBJ_VBILLBOARD 0x400
63#define JOBJ_HBILLBOARD 0x600
64#define JOBJ_RBILLBOARD 0x800
65#define JOBJ_PBILLBOARD 0x2000
67#define JOBJ_SKELETON (1 << 0)
68#define JOBJ_SKELETON_ROOT (1 << 1)
69#define JOBJ_ENVELOPE_MODEL (1 << 2)
70#define JOBJ_CLASSICAL_SCALE (1 << 3)
71#define JOBJ_HIDDEN (1 << 4)
72#define JOBJ_PTCL (1 << 5)
73#define JOBJ_MTX_DIRTY (1 << 6)
74#define JOBJ_LIGHTING (1 << 7)
75#define JOBJ_TEXGEN (1 << 8)
76#define JOBJ_INSTANCE (1 << 12)
77#define JOBJ_SPLINE (1 << 14)
78#define JOBJ_FLIP_IK (1 << 15)
79#define JOBJ_SPECULAR (1 << 16)
80#define JOBJ_USE_QUATERNION (1 << 17)
81#define JOBJ_UNK_B18 (1 << 18)
82#define JOBJ_UNK_B19 (1 << 19)
83#define JOBJ_UNK_B20 (1 << 20)
84#define JOBJ_NULL_OBJ (0 << 21)
85#define JOBJ_JOINT1 (1 << 21)
86#define JOBJ_JOINT2 (2 << 21)
87#define JOBJ_JOINT (3 << 21)
88#define JOBJ_EFFECTOR (3 << 21)
89#define JOBJ_USER_DEF_MTX (1 << 23)
90#define JOBJ_MTX_INDEP_PARENT (1 << 24)
91#define JOBJ_MTX_INDEP_SRT (1 << 25)
92#define JOBJ_UNK_B26 (1 << 26)
93#define JOBJ_UNK_B27 (1 << 27)
94#define JOBJ_ROOT_OPA (1 << 28)
95#define JOBJ_ROOT_XLU (1 << 29)
96#define JOBJ_ROOT_TEXEDGE (1 << 30)
98#define JOBJ_ROOT_MASK (JOBJ_ROOT_OPA | JOBJ_ROOT_TEXEDGE | JOBJ_ROOT_XLU)
100#define union_type_ptcl(o) ((o)->flags & JOBJ_PTCL ? true : false)
101#define union_type_spline(o) ((o)->flags & JOBJ_SPLINE ? true : false)
102#define union_type_dobj(o) \
103 ((o)->flags & (JOBJ_PTCL | JOBJ_SPLINE) ? false : true)
105#define HSD_JOBJ_INFO(i) ((HSD_JObjInfo*) (i))
106#define HSD_JOBJ_METHOD(o) HSD_JOBJ_INFO((o)->object.parent.class_info)
147typedef struct _HSD_JObjInfo {
247#define HSD_JObjSetMtxDirty(jobj) \
249 if (jobj != NULL && !HSD_JObjMtxIsDirty(jobj)) { \
250 HSD_JObjSetMtxDirtySub(jobj); \
#define HSD_ASSERT(line, cond)
Definition debug.h:21
f32(* MtxPtr)[4]
Definition forward.h:7
f32 Mtx[3][4]
Definition forward.h:6
void PSMTXCopy(const Mtx src, Mtx dst)
void cb(s32 param_1, DVDCommandBlock *block)
Definition fstload.c:21
Mtx mtx
Definition ftparts.c:61
static float const scale
Definition itlgunray.c:24
void HSD_JObjMakeMatrix(HSD_JObj *jobj)
Definition jobj.c:142
struct HSD_DObj * HSD_JObjGetDObj(HSD_JObj *jobj)
Definition jobj.c:944
u32 HSD_JObjGetFlags(HSD_JObj *jobj)
Definition jobj.c:998
void HSD_JObjSetupMatrixSub(HSD_JObj *)
Definition jobj.c:1401
void HSD_JObjUnrefThis(HSD_JObj *jobj)
Definition jobj.c:740
void HSD_JObjPrependRObj(HSD_JObj *jobj, HSD_RObj *robj)
Definition jobj.c:970
static void HSD_JObjSetRotationZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:284
void HSD_JObjClearFlags(HSD_JObj *, u32 flags)
Definition jobj.c:1032
void lbColl_JObjSetupMatrix(HSD_JObj *)
Definition lbcollision.c:1580
void HSD_JObjSetDPtclCallback(DPCtlCallback cb)
Definition jobj.c:1477
void HSD_JObjReqAnimByFlags(HSD_JObj *jobj, u32 flags, f32 frame)
Definition jobj.c:240
static void HSD_JObjAddScaleZ(HSD_JObj *jobj, float z)
Definition jobj.h:495
static void HSD_JObjSetRotationY(HSD_JObj *jobj, f32 y)
Definition jobj.h:274
static HSD_JObj * HSD_JObjGetNext(HSD_JObj *jobj)
Definition jobj.h:203
HSD_JObj * HSD_JObjGetCurrent(void)
Definition jobj.c:1073
static void HSD_JObjSetTranslateY(HSD_JObj *jobj, f32 y)
Definition jobj.h:399
static HSD_JObj * HSD_JObjGetChild(HSD_JObj *jobj)
Definition jobj.h:194
static f32 HSD_JObjGetScaleZ(HSD_JObj *jobj)
Definition jobj.h:374
void RecalcParentTrspBits(HSD_JObj *jobj)
Definition jobj.c:808
static HSD_JObj * HSD_JObjGetParent(HSD_JObj *jobj)
Definition jobj.h:212
void resolveIKJoint1(HSD_JObj *jobj)
Definition jobj.c:1119
void HSD_JObjWalkTree0(HSD_JObj *jobj, HSD_JObjWalkTreeCallback cb, f32 **cb_args)
Definition jobj.c:93
#define JOBJ_MTX_INDEP_SRT
Definition jobj.h:91
static void HSD_JObjAddRotationZ(HSD_JObj *jobj, float z)
Definition jobj.h:460
#define JOBJ_MTX_DIRTY
Definition jobj.h:73
void resolveIKJoint2(HSD_JObj *jobj)
Definition jobj.c:1273
static void HSD_JObjAddRotationX(HSD_JObj *jobj, float x)
Definition jobj.h:442
void HSD_JObjAddAnimAll(HSD_JObj *, HSD_AnimJoint *, HSD_MatAnimJoint *, HSD_ShapeAnimJoint *)
Definition jobj.c:327
static void HSD_JObjSetScaleX(HSD_JObj *jobj, f32 x)
Definition jobj.h:328
static f32 HSD_JObjGetRotationY(HSD_JObj *jobj)
Definition jobj.h:306
void HSD_JObjAddNext(HSD_JObj *jobj, HSD_JObj *next)
Definition jobj.c:891
void HSD_JObjDeleteRObj(HSD_JObj *jobj, HSD_RObj *robj)
Definition jobj.c:978
static HSD_RObj * HSD_JObjGetRObj(HSD_JObj *jobj)
Definition jobj.h:221
void HSD_JObjRemoveAnimAll(HSD_JObj *jobj)
Definition jobj.c:235
static void HSD_JObjAddTranslationY(HSD_JObj *jobj, float y)
Definition jobj.h:508
HSD_JObjInfo hsdJObj
Definition jobj.c:25
static f32 HSD_JObjGetTranslationX(HSD_JObj *jobj)
Definition jobj.h:424
static void HSD_JObjGetRotation(HSD_JObj *jobj, Quaternion *quat)
Definition jobj.h:294
void HSD_JObjWalkTree(HSD_JObj *jobj, HSD_JObjWalkTreeCallback cb, f32 **cb_args)
Definition jobj.c:115
void HSD_JObjResolveRefsAll(HSD_JObj *, HSD_Joint *)
Definition jobj.c:711
void HSD_JObjAddAnim(HSD_JObj *, HSD_AnimJoint *an_joint, HSD_MatAnimJoint *mat_joint, HSD_ShapeAnimJoint *sh_joint)
Definition jobj.c:302
static float HSD_JObjGetTranslationZ(HSD_JObj *jobj)
Definition jobj.h:436
static void HSD_JObjCopyMtx(HSD_JObj *jobj, Mtx mtx)
Definition jobj.h:538
void HSD_JObjRemoveAnimByFlags(HSD_JObj *jobj, u32 flags)
Definition jobj.c:202
void HSD_JObjRemoveAnim(HSD_JObj *jobj)
Definition jobj.c:230
void HSD_JObjReqAnimAllByFlags(HSD_JObj *jobj, u32 flags, f32 frame)
Definition jobj.c:259
void HSD_JObjAddChild(HSD_JObj *jobj, HSD_JObj *child)
Definition jobj.c:837
void HSD_JObjRemoveAll(HSD_JObj *)
Definition jobj.c:783
static void HSD_JObjSetScale(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:318
int JObjInit(HSD_Class *o)
Definition jobj.c:1482
void HSD_JObjCheckDepend(HSD_JObj *jobj)
Definition jobj.c:34
static f32 HSD_JObjGetScaleX(HSD_JObj *jobj)
Definition jobj.h:362
void HSD_JObjSetFlags(HSD_JObj *, u32 flags)
Definition jobj.c:1006
static void HSD_JObjSetScaleZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:346
static void HSD_JObjSetRotationX(HSD_JObj *jobj, f32 x)
Definition jobj.h:264
static void HSD_JObjSetTranslateX(HSD_JObj *jobj, f32 x)
Definition jobj.h:390
HSD_JObj * HSD_JObjAlloc(void)
Definition jobj.c:1058
void JObjResetRST(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:61
HSD_JObj * HSD_JObjRemove(HSD_JObj *jobj)
Definition jobj.c:749
static void HSD_JObjGetTranslation(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:417
void HSD_JObjSetDefaultClass(HSD_ClassInfo *info)
Definition jobj.c:611
static void HSD_JObjSetScaleY(HSD_JObj *jobj, f32 y)
Definition jobj.h:337
void HSD_JObjReqAnim(HSD_JObj *jobj, f32 frame)
Definition jobj.c:278
static void HSD_JObjAddTranslationZ(HSD_JObj *jobj, float z)
Definition jobj.h:517
HSD_JObj * jobj_get_effector_checked(HSD_JObj *eff)
Definition jobj.c:1102
void HSD_JObjSetCurrent(HSD_JObj *jobj)
Definition jobj.c:1066
void JObjReleaseChild(HSD_JObj *jobj)
Definition jobj.c:1496
void HSD_JObjAnim(HSD_JObj *jobj)
Definition jobj.c:535
void JObjSortAnim(HSD_AObj *aobj)
Definition jobj.c:283
void HSD_JObjAddDObj(HSD_JObj *jobj, HSD_DObj *dobj)
Definition jobj.c:952
void HSD_JObjSetupMatrix(HSD_JObj *jobj)
Definition jobj.h:238
void HSD_JObjRemoveAnimAllByFlags(HSD_JObj *jobj, u32 flags)
Definition jobj.c:216
void HSD_JObjReqAnimAll(HSD_JObj *, f32)
Definition jobj.c:273
void JObjUpdateFunc(void *obj, enum_t type, HSD_ObjData *val)
Definition jobj.c:355
#define HSD_JObjSetMtxDirty(jobj)
Definition jobj.h:247
#define JOBJ_USE_QUATERNION
Definition jobj.h:80
void HSD_JObjResolveRefs(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:691
HSD_JObj * HSD_JObjReparent(HSD_JObj *jobj, HSD_JObj *parent)
Definition jobj.c:867
static void HSD_JObjAddRotationY(HSD_JObj *jobj, float y)
Definition jobj.h:451
static void HSD_JObjAddScaleY(HSD_JObj *jobj, float y)
Definition jobj.h:482
void JObjRelease(HSD_Class *o)
Definition jobj.c:1527
void HSD_JObjResetRST(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:76
void(* HSD_JObjWalkTreeCallback)(HSD_JObj *, f32 **, s32)
Definition jobj.h:158
static f32 HSD_JObjGetRotationX(HSD_JObj *jobj)
Definition jobj.h:300
static void HSD_JObjGetScale(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:355
void JObjAmnesia(HSD_ClassInfo *info)
Definition jobj.c:1545
void HSD_JObjSetMtxDirtySub(HSD_JObj *)
Definition jobj.c:1461
void HSD_JObjDispAll(HSD_JObj *jobj, Mtx vmtx, u32 flags, u32 rendermode)
Definition jobj.c:576
void HSD_JObjUnref(HSD_JObj *jobj)
Definition jobj.c:725
HSD_JObj * HSD_JObjLoadJoint(HSD_Joint *)
Definition jobj.c:676
static void HSD_JObjRef(HSD_JObj *jobj)
Definition jobj.h:545
static f32 HSD_JObjGetTranslationY(HSD_JObj *jobj)
Definition jobj.h:430
static void HSD_JObjAddScaleX(HSD_JObj *jobj, float x)
Definition jobj.h:469
static void HSD_JObjRefThis(HSD_JObj *jobj)
Definition jobj.h:550
void HSD_JObjAnimAll(HSD_JObj *)
Definition jobj.c:562
static void HSD_JObjSetRotation(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:254
void(* DPCtlCallback)(int, int lo, int hi, HSD_JObj *jobj)
Definition jobj.h:159
static bool HSD_JObjMtxIsDirty(HSD_JObj *jobj)
Definition jobj.h:227
static void HSD_JObjSetTranslate(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:380
static f32 HSD_JObjGetScaleY(HSD_JObj *jobj)
Definition jobj.h:368
static MtxPtr HSD_JObjGetMtxPtr(HSD_JObj *jobj)
Definition jobj.h:531
s32 JObjLoad(HSD_JObj *jobj, HSD_Joint *joint, HSD_JObj *parent)
Definition jobj.c:638
static f32 HSD_JObjGetRotationZ(HSD_JObj *jobj)
Definition jobj.h:312
#define JOBJ_USER_DEF_MTX
Definition jobj.h:89
void JObjAnimAll(HSD_JObj *jobj)
Definition jobj.c:547
static void HSD_JObjSetTranslateZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:408
void HSD_JObjSetFlagsAll(HSD_JObj *, u32 flags)
Definition jobj.c:1019
void HSD_JObjClearFlagsAll(HSD_JObj *, u32 flags)
Definition jobj.c:1045
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:49
static unsigned long int next
Definition rand.c:3
#define NULL
A null pointer.
Definition stddef.h:19
u32 flags
Definition dobj.h:21
HSD_Class parent
Definition dobj.h:16
HSD_AObj * aobj
Definition dobj.h:20
HSD_ObjInfo parent
Definition jobj.h:148
u32 flags
Definition jobj.h:113
HSD_JObj * parent
Definition jobj.h:111
HSD_Spline * spline
Definition jobj.h:117
Vec3 translate
Definition jobj.h:121
Mtx mtx
Definition jobj.h:122
HSD_SList * ptcl
Definition jobj.h:115
Vec3 scale
Definition jobj.h:120
Quaternion rotate
Definition jobj.h:119
MtxPtr envelopemtx
Definition jobj.h:124
HSD_AObj * aobj
Definition jobj.h:125
struct HSD_DObj * dobj
Definition jobj.h:116
u32 id
Definition jobj.h:127
HSD_Obj object
Definition jobj.h:109
HSD_JObj * next
Definition jobj.h:110
HSD_JObj * child
Definition jobj.h:112
HSD_RObj * robj
Definition jobj.h:126
Vec3 * scl
Definition jobj.h:123
Vec3 scale
Definition jobj.h:141
HSD_RObjDesc * robjdesc
Definition jobj.h:144
char * class_name
Definition jobj.h:131
HSD_Joint * child
Definition jobj.h:133
HSD_Joint * next
Definition jobj.h:134
Vec3 position
Definition jobj.h:142
HSD_Spline * spline
Definition jobj.h:137
Vec3 rotation
Definition jobj.h:140
HSD_DObjDesc * dobjdesc
Definition jobj.h:136
MtxPtr mtx
Definition jobj.h:143
u32 flags
Definition jobj.h:132
HSD_SList * ptcl
Definition jobj.h:138
f32 x
The x component.
Definition types.h:14
f32 z
The z component.
Definition types.h:14
f32 y
The y component.
Definition types.h:14
HSD_TrspMask
Definition forward.h:134