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 <dolphin/mtx.h>
10
11#define ROBJ_TYPE_MASK 0x70000000
12#define REFTYPE_EXP 0x00000000
13#define REFTYPE_JOBJ 0x10000000
14#define REFTYPE_LIMIT 0x20000000
15#define REFTYPE_BYTECODE 0x30000000
16#define REFTYPE_IKHINT 0x40000000
17
23
28
33
38
48
50 f32 (*func)(void*);
52};
53
58
70
83
88
89void _HSD_RObjForgetMemory(void* low, void* high);
90void HSD_RObjInitAllocData(void);
94void HSD_RObjFree(HSD_RObj* robj);
95
96void HSD_RObjSetFlags(HSD_RObj* robj, u32 flags);
97HSD_RObj* HSD_RObjGetByType(HSD_RObj* robj, u32 type, u32 subtype);
98void HSD_RObjAnimAll(HSD_RObj* robj);
101void HSD_RObjReqAnimAllByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
102void HSD_RObjReqAnimAll(HSD_RObj* robj, f32 startframe);
104
110void HSD_RObjSetConstraintObj(HSD_RObj* robj, void* obj);
113
114void HSD_RObjRemoveAnimByFlags(HSD_RObj* robj, u32 flags);
115void HSD_RObjReqAnimByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
117void HSD_RObjAnim(HSD_RObj* robj);
118
120void HSD_RvalueRemove(HSD_Rvalue* rvalue);
121void HSD_RvalueRemoveAll(HSD_Rvalue* rvalue);
124
125static inline bool RObjHasFlags(HSD_RObj* robj)
126{
127 if ((robj->flags & ROBJ_TYPE_MASK) == 0) {
128 return true;
129 }
130 return false;
131}
132
133static inline bool RObjHasFlags2(HSD_RObj* robj)
134{
135 if ((robj->flags & 0x80000000) != 0) {
136 return true;
137 }
138 return false;
139}
140
141static inline bool RObjHasLimitReftype(HSD_RObj* robj)
142{
143 if ((robj->flags & ROBJ_TYPE_MASK) == REFTYPE_LIMIT) {
144 return true;
145 }
146 return false;
147}
148
149#endif
struct Vec Vec3
unsigned long u32
Definition types.h:9
float f32
Definition types.h:13
unsigned char u8
Definition types.h:5
Vec3 translate
Definition gmresult.c:1091
void * obj
Definition pobj.c:38
void HSD_RObjAnimAll(HSD_RObj *robj)
Definition robj.c:106
HSD_ObjAllocData * HSD_RvalueObjGetAllocData(void)
Definition robj.c:37
void HSD_RObjAnim(HSD_RObj *robj)
Definition robj.c:97
void HSD_RObjResolveRefs(HSD_RObj *, HSD_RObjDesc *)
Definition robj.c:570
void HSD_RObjRemoveAnimAll(HSD_RObj *robj)
Definition robj.c:142
void HSD_RObjRemoveAnimByFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:119
HSD_RObj * HSD_RObjGetByType(HSD_RObj *robj, u32 type, u32 subtype)
Definition robj.c:49
void HSD_RObjRemoveAnimAllByFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:131
void HSD_RObjSetFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:42
HSD_RObj * HSD_RObjAlloc(void)
Definition robj.c:672
static bool RObjHasLimitReftype(HSD_RObj *robj)
Definition robj.h:141
void HSD_RObjSetConstraintObj(HSD_RObj *robj, void *obj)
Definition robj.c:912
void HSD_RObjFree(HSD_RObj *robj)
Definition robj.c:680
void HSD_RObjAddAnim(HSD_RObj *robj, HSD_RObjAnimJoint *anim)
Definition robj.c:174
void HSD_RObjResolveRefsAll(HSD_RObj *, HSD_RObjDesc *)
Definition robj.c:587
void HSD_RObjUpdateAll(HSD_RObj *robj, void *obj, HSD_ObjUpdateFunc)
Definition robj.c:546
static bool RObjHasFlags(HSD_RObj *robj)
Definition robj.h:125
#define ROBJ_TYPE_MASK
Definition robj.h:11
void HSD_RObjReqAnimByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:147
HSD_RObj * HSD_RObjLoadDesc(HSD_RObjDesc *)
Definition robj.c:598
void HSD_RObjInitAllocData(void)
Definition robj.c:26
void HSD_RObjReqAnimAll(HSD_RObj *robj, f32 startframe)
Definition robj.c:169
void HSD_RObjAddAnimAll(HSD_RObj *robj, HSD_RObjAnimJoint *anim)
Definition robj.c:186
HSD_ObjAllocData * HSD_RObjGetAllocData(void)
Definition robj.c:32
HSD_Rvalue * HSD_RvalueAlloc(void)
Definition robj.c:816
int HSD_RObjGetGlobalPosition(HSD_RObj *robj, int, Vec3 *translate)
Definition robj.c:210
void HSD_RObjRemove(HSD_RObj *)
Definition robj.c:644
void HSD_RvalueRemove(HSD_Rvalue *rvalue)
Definition robj.c:824
#define REFTYPE_LIMIT
Definition robj.h:14
void _HSD_RObjForgetMemory(void *low, void *high)
Definition robj.c:936
void HSD_RvalueResolveRefs(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:890
void HSD_RvalueRemoveAll(HSD_Rvalue *rvalue)
Definition robj.c:832
static bool RObjHasFlags2(HSD_RObj *robj)
Definition robj.h:133
void HSD_RObjRemoveAll(HSD_RObj *)
Definition robj.c:662
void HSD_RvalueResolveRefsAll(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:900
void HSD_RObjReqAnimAllByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:158
Definition aobj.h:50
Definition aobj.h:40
Definition robj.h:54
u8 * bytecode
Definition robj.h:55
HSD_RvalueList * rvalue
Definition robj.h:56
Definition robj.h:49
f32(* func)(void *)
Definition robj.h:50
HSD_RvalueList * rvalue
Definition robj.h:51
Definition robj.h:39
f32(* func)(void *)
Definition robj.h:41
u8 * bytecode
Definition robj.h:42
HSD_Rvalue * rvalue
Definition robj.h:44
union HSD_Exp::@147156147343200235146070011007127210064340123260 expr
u32 nb_args
Definition robj.h:45
u8 is_bytecode
Definition robj.h:46
Definition robj.h:34
f32 rotate_x
Definition robj.h:36
f32 bone_length
Definition robj.h:35
Definition robj.h:29
f32 bone_length
Definition robj.h:30
f32 rotate_x
Definition robj.h:31
Definition jobj.h:104
Definition jobj.h:127
Definition objalloc.h:19
Definition robj.h:84
HSD_AObjDesc * aobjdesc
Definition robj.h:86
HSD_RObjAnimJoint * next
Definition robj.h:85
Definition robj.h:71
u32 i
Definition robj.h:75
HSD_IKHintDesc * ik_hint
Definition robj.h:78
HSD_ByteCodeExpDesc * bcexp
Definition robj.h:77
HSD_RObjDesc * next
Definition robj.h:72
HSD_Joint * joint
Definition robj.h:79
u32 flags
Definition robj.h:73
f32 limit
Definition robj.h:80
HSD_ExpDesc * exp
Definition robj.h:76
union HSD_RObjDesc::@013342223025114310355243112366151271216302150212 u
Definition robj.h:59
f32 limit
Definition robj.h:65
HSD_IKHint ik_hint
Definition robj.h:66
HSD_Exp exp
Definition robj.h:64
HSD_AObj * aobj
Definition robj.h:68
union HSD_RObj::@255014130033344341117121022111140124224202077267 u
HSD_RObj * next
Definition robj.h:60
u32 flags
Definition robj.h:61
HSD_JObj * jobj
Definition robj.h:63
Definition robj.h:24
HSD_Joint * joint
Definition robj.h:26
u32 flags
Definition robj.h:25
Definition robj.h:18
HSD_JObj * jobj
Definition robj.h:21
HSD_Rvalue * next
Definition robj.h:19
u32 flags
Definition robj.h:20
void(* HSD_ObjUpdateFunc)(void *obj, enum_t type, HSD_ObjData *fval)
Definition forward.h:106