15#include <dolphin/mtx.h>
19#define JOBJ_PTCL_ACTIVE 0x7FFFFFFF
20#define JOBJ_PTCL_OFFSET_MASK 0xFFFFFF
21#define JOBJ_PTCL_OFFSET_SHIFT 6
22#define JOBJ_PTCL_BANK_MASK 0x3F
33#define HSD_A_J_SCAZ 10
34#define HSD_A_J_NODE 11
35#define HSD_A_J_BRANCH 12
37#define HSD_A_J_SETBYTE0 20
38#define HSD_A_J_SETBYTE1 21
39#define HSD_A_J_SETBYTE2 22
40#define HSD_A_J_SETBYTE3 23
41#define HSD_A_J_SETBYTE4 24
42#define HSD_A_J_SETBYTE5 25
43#define HSD_A_J_SETBYTE6 26
44#define HSD_A_J_SETBYTE7 27
45#define HSD_A_J_SETBYTE8 28
46#define HSD_A_J_SETBYTE9 29
48#define HSD_A_J_SETFLOAT0 30
49#define HSD_A_J_SETFLOAT1 31
50#define HSD_A_J_SETFLOAT2 32
51#define HSD_A_J_SETFLOAT3 33
52#define HSD_A_J_SETFLOAT4 34
53#define HSD_A_J_SETFLOAT5 35
54#define HSD_A_J_SETFLOAT6 36
55#define HSD_A_J_SETFLOAT7 37
56#define HSD_A_J_SETFLOAT8 38
57#define HSD_A_J_SETFLOAT9 39
59#define JOBJ_BILLBOARD_FIELD 0xE00
60#define JOBJ_BILLBOARD 0x200
61#define JOBJ_VBILLBOARD 0x400
62#define JOBJ_HBILLBOARD 0x600
63#define JOBJ_RBILLBOARD 0x800
64#define JOBJ_PBILLBOARD 0x2000
66#define JOBJ_SKELETON (1 << 0)
67#define JOBJ_SKELETON_ROOT (1 << 1)
68#define JOBJ_ENVELOPE_MODEL (1 << 2)
69#define JOBJ_CLASSICAL_SCALE (1 << 3)
70#define JOBJ_HIDDEN (1 << 4)
71#define JOBJ_PTCL (1 << 5)
72#define JOBJ_MTX_DIRTY (1 << 6)
73#define JOBJ_LIGHTING (1 << 7)
74#define JOBJ_TEXGEN (1 << 8)
75#define JOBJ_INSTANCE (1 << 12)
76#define JOBJ_SPLINE (1 << 14)
77#define JOBJ_FLIP_IK (1 << 15)
78#define JOBJ_SPECULAR (1 << 16)
79#define JOBJ_USE_QUATERNION (1 << 17)
80#define JOBJ_UNK_B18 (1 << 18)
81#define JOBJ_UNK_B19 (1 << 19)
82#define JOBJ_UNK_B20 (1 << 20)
83#define JOBJ_NULL_OBJ (0 << 21)
84#define JOBJ_JOINT1 (1 << 21)
85#define JOBJ_JOINT2 (2 << 21)
86#define JOBJ_JOINT (3 << 21)
87#define JOBJ_EFFECTOR (3 << 21)
88#define JOBJ_USER_DEF_MTX (1 << 23)
89#define JOBJ_MTX_INDEP_PARENT (1 << 24)
90#define JOBJ_MTX_INDEP_SRT (1 << 25)
91#define JOBJ_UNK_B26 (1 << 26)
92#define JOBJ_UNK_B27 (1 << 27)
93#define JOBJ_ROOT_OPA (1 << 28)
94#define JOBJ_ROOT_XLU (1 << 29)
95#define JOBJ_ROOT_TEXEDGE (1 << 30)
97#define JOBJ_ROOT_MASK (JOBJ_ROOT_OPA | JOBJ_ROOT_TEXEDGE | JOBJ_ROOT_XLU)
99#define union_type_ptcl(o) ((o)->flags & JOBJ_PTCL ? true : false)
100#define union_type_spline(o) ((o)->flags & JOBJ_SPLINE ? true : false)
101#define union_type_dobj(o) \
102 ((o)->flags & (JOBJ_PTCL | JOBJ_SPLINE) ? false : true)
104#define HSD_JOBJ_INFO(i) ((HSD_JObjInfo*) (i))
105#define HSD_JOBJ_METHOD(o) HSD_JOBJ_INFO((o)->object.parent.class_info)
147typedef struct _HSD_JObjInfo {
258#define HSD_JObjSetMtxDirty(jobj) \
260 if (jobj != NULL && !HSD_JObjMtxIsDirty(jobj)) { \
261 HSD_JObjSetMtxDirtySub(jobj); \
462 return jobj->
scale.x;
468 return jobj->
scale.y;
474 return jobj->
scale.z;
706 PSMTXCopy(
mtx, jobj->
mtx);
Mtx mtx
Definition ftparts.static.h:5
Vec3 translate
Definition gmresult.c:1133
signed long s32
Definition hsd_3B2B.h:1
static float const scale
Definition itlgunray.c:24
HSD_JObjInfo hsdJObj
Definition jobj.c:25
void HSD_JObjMakeMatrix(HSD_JObj *jobj)
Definition jobj.c:142
struct HSD_DObj * HSD_JObjGetDObj(HSD_JObj *jobj)
Definition jobj.c:939
u32 HSD_JObjGetFlags(HSD_JObj *jobj)
Definition jobj.c:993
void HSD_JObjSetupMatrixSub(HSD_JObj *)
Definition jobj.c:1396
void HSD_JObjUnrefThis(HSD_JObj *jobj)
Definition jobj.c:735
void HSD_JObjPrependRObj(HSD_JObj *jobj, HSD_RObj *robj)
Definition jobj.c:965
static void HSD_JObjSetRotationZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:334
static void HSD_JObjSetTranslateWithMtxDirtyOutOfLine(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:498
void HSD_JObjClearFlags(HSD_JObj *, u32 flags)
Definition jobj.c:1027
static void HSD_JObjSetMtxDirtyOutOfLine(HSD_JObj *jobj)
Definition jobj.h:244
void HSD_JObjSetDPtclCallback(DPCtlCallback cb)
Definition jobj.c:1472
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:650
static void HSD_JObjSetRotationY(HSD_JObj *jobj, f32 y)
Definition jobj.h:314
static HSD_JObj * HSD_JObjGetNext(HSD_JObj *jobj)
Definition jobj.h:204
HSD_JObj * HSD_JObjGetCurrent(void)
Definition jobj.c:1068
static void HSD_JObjSetTranslateY(HSD_JObj *jobj, f32 y)
Definition jobj.h:527
static HSD_JObj * HSD_JObjGetChild(HSD_JObj *jobj)
Definition jobj.h:195
static f32 HSD_JObjGetScaleZ(HSD_JObj *jobj)
Definition jobj.h:471
static void HSD_JObjSetScaleWithMtxDirty(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:388
void RecalcParentTrspBits(HSD_JObj *jobj)
Definition jobj.c:803
static HSD_JObj * HSD_JObjGetParent(HSD_JObj *jobj)
Definition jobj.h:213
void resolveIKJoint1(HSD_JObj *jobj)
Definition jobj.c:1114
static void HSD_JObjSetMtxDirtyOutOfLineLeaf(HSD_JObj *jobj)
Definition jobj.h:239
void HSD_JObjWalkTree0(HSD_JObj *jobj, HSD_JObjWalkTreeCallback cb, f32 **cb_args)
Definition jobj.c:93
#define JOBJ_MTX_INDEP_SRT
Definition jobj.h:90
static void HSD_JObjAddRotationZ(HSD_JObj *jobj, float z)
Definition jobj.h:623
#define JOBJ_MTX_DIRTY
Definition jobj.h:72
void resolveIKJoint2(HSD_JObj *jobj)
Definition jobj.c:1268
static void HSD_JObjAddRotationX(HSD_JObj *jobj, float x)
Definition jobj.h:596
static void HSD_JObjSetRotationYWithMtxDirty(HSD_JObj *jobj, f32 y)
Definition jobj.h:324
static void HSD_JObjSetTranslateWithMtxDirty(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:487
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:398
static f32 HSD_JObjGetRotationY(HSD_JObj *jobj)
Definition jobj.h:366
void HSD_JObjAddNext(HSD_JObj *jobj, HSD_JObj *next)
Definition jobj.c:886
void HSD_JObjDeleteRObj(HSD_JObj *jobj, HSD_RObj *robj)
Definition jobj.c:973
static void HSD_JObjSetTranslateYWithMtxDirty(HSD_JObj *jobj, f32 y)
Definition jobj.h:536
static HSD_RObj * HSD_JObjGetRObj(HSD_JObj *jobj)
Definition jobj.h:222
void HSD_JObjRemoveAnimAll(HSD_JObj *jobj)
Definition jobj.c:235
static void HSD_JObjAddTranslationY(HSD_JObj *jobj, float y)
Definition jobj.h:668
static f32 HSD_JObjGetTranslationX(HSD_JObj *jobj)
Definition jobj.h:578
static void HSD_JObjGetRotation(HSD_JObj *jobj, Quaternion *quat)
Definition jobj.h:354
void HSD_JObjWalkTree(HSD_JObj *jobj, HSD_JObjWalkTreeCallback cb, f32 **cb_args)
Definition jobj.c:115
static void HSD_JObjAddTranslationX(HSD_JObj *jobj, float x)
Definition jobj.h:659
void HSD_JObjResolveRefsAll(HSD_JObj *, HSD_Joint *)
Definition jobj.c:706
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:590
static void HSD_JObjCopyMtx(HSD_JObj *jobj, Mtx mtx)
Definition jobj.h:702
static void HSD_JObjSetScaleZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:443
void HSD_JObjRemoveAnimByFlags(HSD_JObj *jobj, u32 flags)
Definition jobj.c:202
void HSD_JObjRemoveAnim(HSD_JObj *jobj)
Definition jobj.c:230
static void HSD_JObjSetScaleYWithMtxDirty(HSD_JObj *jobj, f32 y)
Definition jobj.h:425
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:832
void HSD_JObjRemoveAll(HSD_JObj *)
Definition jobj.c:778
static void HSD_JObjSetScale(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:378
int JObjInit(HSD_Class *o)
Definition jobj.c:1477
void HSD_JObjCheckDepend(HSD_JObj *jobj)
Definition jobj.c:34
static f32 HSD_JObjGetScaleX(HSD_JObj *jobj)
Definition jobj.h:459
void HSD_JObjSetFlags(HSD_JObj *, u32 flags)
Definition jobj.c:1001
static void HSD_JObjSetScaleZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:434
static void HSD_JObjAddRotationXWithMtxDirty(HSD_JObj *jobj, float x)
Definition jobj.h:605
static void HSD_JObjSetRotationX(HSD_JObj *jobj, f32 x)
Definition jobj.h:294
static void HSD_JObjSetTranslateX(HSD_JObj *jobj, f32 x)
Definition jobj.h:509
HSD_JObj * HSD_JObjAlloc(void)
Definition jobj.c:1053
static void HSD_JObjAddTranslationYWithMtxDirty(HSD_JObj *jobj, float y)
Definition jobj.h:677
static void HSD_JObjGetTranslation2(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:572
void JObjResetRST(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:61
HSD_JObj * HSD_JObjRemove(HSD_JObj *jobj)
Definition jobj.c:744
static void HSD_JObjGetTranslation(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:563
void HSD_JObjSetDefaultClass(HSD_ClassInfo *info)
Definition jobj.c:606
static void HSD_JObjSetScaleY(HSD_JObj *jobj, f32 y)
Definition jobj.h:416
void HSD_JObjReqAnim(HSD_JObj *jobj, f32 frame)
Definition jobj.c:278
static void HSD_JObjAddTranslationZ(HSD_JObj *jobj, float z)
Definition jobj.h:686
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:1097
static void HSD_JObjSetMtxDirtyInline(HSD_JObj *jobj)
Definition jobj.h:266
void HSD_JObjSetCurrent(HSD_JObj *jobj)
Definition jobj.c:1061
void JObjReleaseChild(HSD_JObj *jobj)
Definition jobj.c:1491
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:947
void HSD_JObjSetupMatrix(HSD_JObj *jobj)
Definition jobj.h:249
static void HSD_JObjSetRotationXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:304
void HSD_JObjRemoveAnimAllByFlags(HSD_JObj *jobj, u32 flags)
Definition jobj.c:216
static void HSD_JObjSetRotationWithMtxDirty(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:283
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)
Why does this seem to be a define while the others are inline functions?
Definition jobj.h:258
#define JOBJ_USE_QUATERNION
Definition jobj.h:79
void HSD_JObjResolveRefs(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:686
HSD_JObj * HSD_JObjReparent(HSD_JObj *jobj, HSD_JObj *parent)
Definition jobj.c:862
static void HSD_JObjAddRotationY(HSD_JObj *jobj, float y)
Definition jobj.h:614
static void HSD_JObjAddScaleY(HSD_JObj *jobj, float y)
Definition jobj.h:641
void JObjRelease(HSD_Class *o)
Definition jobj.c:1522
void HSD_JObjResetRST(HSD_JObj *jobj, HSD_Joint *joint)
Definition jobj.c:76
static void HSD_JObjSetTranslateXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:518
void(* HSD_JObjWalkTreeCallback)(HSD_JObj *, f32 **, s32)
Definition jobj.h:158
static f32 HSD_JObjGetRotationX(HSD_JObj *jobj)
Definition jobj.h:360
static void HSD_JObjGetScale(HSD_JObj *jobj, Vec3 *scale)
Definition jobj.h:452
void JObjAmnesia(HSD_ClassInfo *info)
Definition jobj.c:1540
void HSD_JObjSetMtxDirtySub(HSD_JObj *)
Definition jobj.c:1456
void HSD_JObjDispAll(HSD_JObj *jobj, Mtx vmtx, u32 flags, u32 rendermode)
Definition jobj.c:571
void HSD_JObjUnref(HSD_JObj *jobj)
Definition jobj.c:720
HSD_JObj * HSD_JObjLoadJoint(HSD_Joint *)
Definition jobj.c:671
static void HSD_JObjRef(HSD_JObj *jobj)
Definition jobj.h:709
static f32 HSD_JObjGetTranslationY(HSD_JObj *jobj)
Definition jobj.h:584
static void HSD_JObjAddScaleX(HSD_JObj *jobj, float x)
Definition jobj.h:632
static void HSD_JObjRefThis(HSD_JObj *jobj)
Definition jobj.h:714
static void HSD_JObjSetTranslateZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:554
void HSD_JObjAnimAll(HSD_JObj *)
Definition jobj.c:562
static void HSD_JObjSetRotationZWithMtxDirty(HSD_JObj *jobj, f32 z)
Definition jobj.h:344
static void HSD_JObjSetRotation(HSD_JObj *jobj, Quaternion *rotate)
Definition jobj.h:273
void(* DPCtlCallback)(int, int lo, int hi, HSD_JObj *jobj)
Definition jobj.h:159
static bool HSD_JObjMtxIsDirty(HSD_JObj *jobj)
Definition jobj.h:228
static void HSD_JObjSetTranslate(HSD_JObj *jobj, Vec3 *translate)
Definition jobj.h:477
static f32 HSD_JObjGetScaleY(HSD_JObj *jobj)
Definition jobj.h:465
static MtxPtr HSD_JObjGetMtxPtr(HSD_JObj *jobj)
Definition jobj.h:695
s32 JObjLoad(HSD_JObj *jobj, HSD_Joint *joint, HSD_JObj *parent)
Definition jobj.c:633
static f32 HSD_JObjGetRotationZ(HSD_JObj *jobj)
Definition jobj.h:372
#define JOBJ_USER_DEF_MTX
Definition jobj.h:88
static void HSD_JObjSetScaleXWithMtxDirty(HSD_JObj *jobj, f32 x)
Definition jobj.h:407
void JObjAnimAll(HSD_JObj *jobj)
Definition jobj.c:547
static void HSD_JObjSetTranslateZ(HSD_JObj *jobj, f32 z)
Definition jobj.h:545
void HSD_JObjSetFlagsAll(HSD_JObj *, u32 flags)
Definition jobj.c:1014
void HSD_JObjClearFlagsAll(HSD_JObj *, u32 flags)
Definition jobj.c:1040
#define HSD_ASSERT(line, cond)
Definition mnvibration.c:5
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:43
static unsigned long int next
Definition rand.c:3
#define NULL
Definition stddef.h:19
u32 flags
Definition dobj.h:23
HSD_Class parent
Definition dobj.h:18
HSD_AObj * aobj
Definition dobj.h:22
void(* release_child)(HSD_JObj *jobj)
Definition jobj.h:154
s32(* load)(HSD_JObj *jobj, HSD_Joint *joint, HSD_JObj *jobj_2)
Definition jobj.h:149
HSD_ObjInfo parent
Definition jobj.h:148
void(* disp)(HSD_JObj *jobj, Mtx vmtx, Mtx pmtx, HSD_TrspMask trsp_mask, u32 rendermode)
Definition jobj.h:152
void(* make_mtx)(HSD_JObj *jobj)
Definition jobj.h:150
void(* make_pmtx)(HSD_JObj *jobj, Mtx mtx, Mtx rmtx)
Definition jobj.h:151
u32 flags
Definition jobj.h:112
union HSD_JObj::@140100343326260066157231264312360267130371306225 u
HSD_JObj * parent
Definition jobj.h:110
HSD_Spline * spline
Definition jobj.h:116
Vec3 translate
Definition jobj.h:120
Mtx mtx
Definition jobj.h:121
HSD_SList * ptcl
Definition jobj.h:114
Vec3 scale
Definition jobj.h:119
Quaternion rotate
Definition jobj.h:118
MtxPtr envelopemtx
Definition jobj.h:123
HSD_AObj * aobj
Definition jobj.h:124
struct HSD_DObj * dobj
Definition jobj.h:115
u32 id
Definition jobj.h:126
HSD_Obj object
Definition jobj.h:108
HSD_JObj * next
Definition jobj.h:109
HSD_JObj * child
Definition jobj.h:111
HSD_RObj * robj
Definition jobj.h:125
Vec3 * scl
Definition jobj.h:122
Vec3 scale
Definition jobj.h:141
HSD_RObjDesc * robjdesc
Definition jobj.h:144
char * class_name
Definition jobj.h:131
union HSD_Joint::@377102274010177013356207347041224013117260206021 u
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
HSD_TrspMask
Definition forward.h:142