SSBM Decomp
Loading...
Searching...
No Matches
robj.h
Go to the documentation of this file.
1#ifndef _robj_h_
2#define _robj_h_
3
4#include <Runtime/platform.h>
5
6#include <sysdolphin/baselib/forward.h> // IWYU pragma: export
7
8#include <dat_macros.h>
9
10#include <dolphin/mtx.h>
12
13#define ROBJ_TYPE_MASK 0x70000000
14#define REFTYPE_EXP 0x00000000
15#define REFTYPE_JOBJ 0x10000000
16#define REFTYPE_LIMIT 0x20000000
17#define REFTYPE_BYTECODE 0x30000000
18#define REFTYPE_IKHINT 0x40000000
19
25
30
35
40
50
52 f32 (*func)(void*);
54};
55
60
72
87
92
93void _HSD_RObjForgetMemory(void* low, void* high);
94void HSD_RObjInitAllocData(void);
98void HSD_RObjFree(HSD_RObj* robj);
99
100void HSD_RObjSetFlags(HSD_RObj* robj, u32 flags);
101HSD_RObj* HSD_RObjGetByType(HSD_RObj* robj, u32 type, u32 subtype);
102void HSD_RObjAnimAll(HSD_RObj* robj);
103void HSD_RObjRemoveAnimAllByFlags(HSD_RObj* robj, u32 flags);
105void HSD_RObjReqAnimAllByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
106void HSD_RObjReqAnimAll(HSD_RObj* robj, f32 startframe);
108
114void HSD_RObjSetConstraintObj(HSD_RObj* robj, void* obj);
115void HSD_RObjUpdateAll(HSD_RObj* robj, void* obj, HSD_ObjUpdateFunc);
116int HSD_RObjGetGlobalPosition(HSD_RObj* robj, int, Vec3* translate);
117
118void HSD_RObjRemoveAnimByFlags(HSD_RObj* robj, u32 flags);
119void HSD_RObjReqAnimByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
121void HSD_RObjAnim(HSD_RObj* robj);
122
124void HSD_RvalueRemove(HSD_Rvalue* rvalue);
125void HSD_RvalueRemoveAll(HSD_Rvalue* rvalue);
128
129static inline bool RObjHasFlags(HSD_RObj* robj)
130{
131 if ((robj->flags & ROBJ_TYPE_MASK) == 0) {
132 return true;
133 }
134 return false;
135}
136
137static inline bool RObjHasFlags2(HSD_RObj* robj)
138{
139 if ((robj->flags & 0x80000000) != 0) {
140 return true;
141 }
142 return false;
143}
144
145static inline bool RObjHasLimitReftype(HSD_RObj* robj)
146{
147 if ((robj->flags & ROBJ_TYPE_MASK) == REFTYPE_LIMIT) {
148 return true;
149 }
150 return false;
151}
152
153#endif
Annotations describing how archive data is laid out, for the parts a C declaration cannot express: ho...
struct Vec Vec3
unsigned int u32
Definition types.h:13
float f32
Definition types.h:18
unsigned char u8
Definition types.h:5
void HSD_RObjAnimAll(HSD_RObj *robj)
Definition robj.c:105
HSD_ObjAllocData * HSD_RvalueObjGetAllocData(void)
Definition robj.c:38
void HSD_RObjAnim(HSD_RObj *robj)
Definition robj.c:96
void HSD_RObjResolveRefs(HSD_RObj *, HSD_RObjDesc *)
Definition robj.c:569
void HSD_RObjRemoveAnimAll(HSD_RObj *robj)
Definition robj.c:141
void HSD_RObjRemoveAnimByFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:118
HSD_RObj * HSD_RObjGetByType(HSD_RObj *robj, u32 type, u32 subtype)
Definition robj.c:50
void HSD_RObjRemoveAnimAllByFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:130
void HSD_RObjSetFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:43
HSD_RObj * HSD_RObjAlloc(void)
Definition robj.c:671
static bool RObjHasLimitReftype(HSD_RObj *robj)
Definition robj.h:145
void HSD_RObjSetConstraintObj(HSD_RObj *robj, void *obj)
Definition robj.c:909
void HSD_RObjFree(HSD_RObj *robj)
Definition robj.c:679
void HSD_RObjAddAnim(HSD_RObj *robj, HSD_RObjAnimJoint *anim)
Definition robj.c:173
void HSD_RObjResolveRefsAll(HSD_RObj *, HSD_RObjDesc *)
Definition robj.c:586
#define REFTYPE_IKHINT
Definition robj.h:18
void HSD_RObjUpdateAll(HSD_RObj *robj, void *obj, HSD_ObjUpdateFunc)
Definition robj.c:544
static bool RObjHasFlags(HSD_RObj *robj)
Definition robj.h:129
#define ROBJ_TYPE_MASK
Definition robj.h:13
void HSD_RObjReqAnimByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:146
#define REFTYPE_JOBJ
Definition robj.h:15
HSD_RObj * HSD_RObjLoadDesc(HSD_RObjDesc *)
Definition robj.c:597
void HSD_RObjInitAllocData(void)
Definition robj.c:27
void HSD_RObjReqAnimAll(HSD_RObj *robj, f32 startframe)
Definition robj.c:168
#define REFTYPE_EXP
Definition robj.h:14
void HSD_RObjAddAnimAll(HSD_RObj *robj, HSD_RObjAnimJoint *anim)
Definition robj.c:185
HSD_ObjAllocData * HSD_RObjGetAllocData(void)
Definition robj.c:33
HSD_Rvalue * HSD_RvalueAlloc(void)
Definition robj.c:813
#define REFTYPE_BYTECODE
Definition robj.h:17
int HSD_RObjGetGlobalPosition(HSD_RObj *robj, int, Vec3 *translate)
Definition robj.c:209
void HSD_RObjRemove(HSD_RObj *)
Definition robj.c:643
void HSD_RvalueRemove(HSD_Rvalue *rvalue)
Definition robj.c:821
#define REFTYPE_LIMIT
Definition robj.h:16
void _HSD_RObjForgetMemory(void *low, void *high)
Definition robj.c:933
void HSD_RvalueResolveRefs(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:887
void HSD_RvalueRemoveAll(HSD_Rvalue *rvalue)
Definition robj.c:829
static bool RObjHasFlags2(HSD_RObj *robj)
Definition robj.h:137
void HSD_RObjRemoveAll(HSD_RObj *)
Definition robj.c:661
void HSD_RvalueResolveRefsAll(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:897
void HSD_RObjReqAnimAllByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:157
Definition aobj.h:52
Definition aobj.h:42
Definition robj.h:56
u8 * bytecode
Definition robj.h:57
HSD_RvalueList * rvalue
Definition robj.h:58
Definition robj.h:51
f32(* func)(void *)
Definition robj.h:52
HSD_RvalueList * rvalue
Definition robj.h:53
Definition robj.h:41
union HSD_Exp::HSD_Exp_expr expr
HSD_Rvalue * rvalue
Definition robj.h:46
u32 nb_args
Definition robj.h:47
u8 is_bytecode
Definition robj.h:48
Definition robj.h:36
f32 rotate_x
Definition robj.h:38
f32 bone_length
Definition robj.h:37
Definition robj.h:31
f32 bone_length
Definition robj.h:32
f32 rotate_x
Definition robj.h:33
Definition jobj.h:106
Definition jobj.h:129
Definition objalloc.h:19
Definition robj.h:88
HSD_AObjDesc * aobjdesc
Definition robj.h:90
HSD_RObjAnimJoint * next
Definition robj.h:89
Definition robj.h:73
HSD_RObjDesc * next
Definition robj.h:74
u32 flags
Definition robj.h:75
union HSD_RObjDesc::HSD_RObjDesc_u u
Definition robj.h:61
union HSD_RObj::HSD_RObj_u u
HSD_AObj * aobj
Definition robj.h:70
HSD_RObj * next
Definition robj.h:62
u32 flags
Definition robj.h:63
Definition robj.h:26
HSD_Joint * joint
Definition robj.h:28
u32 flags
Definition robj.h:27
Definition robj.h:20
HSD_JObj * jobj
Definition robj.h:23
HSD_Rvalue * next
Definition robj.h:21
u32 flags
Definition robj.h:22
void(* HSD_ObjUpdateFunc)(void *obj, enum_t type, HSD_ObjData *fval)
Definition forward.h:111
Definition robj.h:42
f32(* func)(void *)
Definition robj.h:43
u8 * bytecode
Definition robj.h:44
Definition robj.h:76
HSD_ExpDesc *exp DAT_IF((flags &ROBJ_TYPE_MASK)==REFTYPE_EXP)
HSD_ByteCodeExpDesc *bcexp DAT_IF((flags &ROBJ_TYPE_MASK)==REFTYPE_BYTECODE)
HSD_Joint *joint DAT_IF((flags &ROBJ_TYPE_MASK)==REFTYPE_JOBJ)
HSD_IKHintDesc *ik_hint DAT_IF((flags &ROBJ_TYPE_MASK)==REFTYPE_IKHINT)
f32 limit DAT_IF((flags &ROBJ_TYPE_MASK)==REFTYPE_LIMIT)
Definition robj.h:64
HSD_JObj * jobj
Definition robj.h:65
HSD_Exp exp
Definition robj.h:66
f32 limit
Definition robj.h:67
HSD_IKHint ik_hint
Definition robj.h:68