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 <platform.h>
5
6#include "baselib/forward.h" // IWYU pragma: export
7
8#include "baselib/objalloc.h"
9
10#include <dolphin/mtx.h>
11
12#define ROBJ_TYPE_MASK 0x70000000
13#define REFTYPE_EXP 0x00000000
14#define REFTYPE_JOBJ 0x10000000
15#define REFTYPE_LIMIT 0x20000000
16#define REFTYPE_BYTECODE 0x30000000
17#define REFTYPE_IKHINT 0x40000000
18
24
29
30struct HSD_IKHint {
33};
34
39
40struct HSD_Exp {
41 union {
42 f32 (*func)(void*);
48};
49
51 f32 (*func)(void*);
53};
54
59
71
84
89
90void _HSD_RObjForgetMemory(void* low, void* high);
91void HSD_RObjInitAllocData(void);
95void HSD_RObjFree(HSD_RObj* robj);
96
97void HSD_RObjSetFlags(HSD_RObj* robj, u32 flags);
98HSD_RObj* HSD_RObjGetByType(HSD_RObj* robj, u32 type, u32 subtype);
99void HSD_RObjAnimAll(HSD_RObj* robj);
100void HSD_RObjRemoveAnimAllByFlags(HSD_RObj* robj, u32 flags);
102void HSD_RObjReqAnimAllByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
103void HSD_RObjReqAnimAll(HSD_RObj* robj, f32 startframe);
105
111void HSD_RObjSetConstraintObj(HSD_RObj* robj, void* obj);
113int HSD_RObjGetGlobalPosition(HSD_RObj* robj, int, Vec3* translate);
114
115void HSD_RObjRemoveAnimByFlags(HSD_RObj* robj, u32 flags);
116void HSD_RObjReqAnimByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
118void HSD_RObjAnim(HSD_RObj* robj);
119
121void HSD_RvalueRemove(HSD_Rvalue* rvalue);
122void HSD_RvalueRemoveAll(HSD_Rvalue* rvalue);
125
126static inline bool RObjHasFlags(HSD_RObj* robj)
127{
128 if ((robj->flags & ROBJ_TYPE_MASK) == 0) {
129 return true;
130 }
131 return false;
132}
133
134static inline bool RObjHasFlags2(HSD_RObj* robj)
135{
136 if ((robj->flags & 0x80000000) != 0) {
137 return true;
138 }
139 return false;
140}
141
142static inline bool RObjHasLimitReftype(HSD_RObj* robj)
143{
144 if ((robj->flags & ROBJ_TYPE_MASK) == REFTYPE_LIMIT) {
145 return true;
146 }
147 return false;
148}
149
150#endif
void * obj
Definition pobj.c:43
void HSD_RObjAnimAll(HSD_RObj *robj)
Definition robj.c:109
HSD_ObjAllocData * HSD_RvalueObjGetAllocData(void)
Definition robj.c:40
void HSD_RObjAnim(HSD_RObj *robj)
Definition robj.c:100
void HSD_RObjResolveRefs(HSD_RObj *, HSD_RObjDesc *)
Definition robj.c:573
void HSD_RObjRemoveAnimAll(HSD_RObj *robj)
Definition robj.c:145
void HSD_RObjRemoveAnimByFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:122
HSD_RObj * HSD_RObjGetByType(HSD_RObj *robj, u32 type, u32 subtype)
Definition robj.c:52
void HSD_RObjRemoveAnimAllByFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:134
void HSD_RObjSetFlags(HSD_RObj *robj, u32 flags)
Definition robj.c:45
HSD_RObj * HSD_RObjAlloc(void)
Definition robj.c:675
static bool RObjHasLimitReftype(HSD_RObj *robj)
Definition robj.h:142
void HSD_RObjSetConstraintObj(HSD_RObj *robj, void *obj)
Definition robj.c:917
void HSD_RObjFree(HSD_RObj *robj)
Definition robj.c:683
void HSD_RObjAddAnim(HSD_RObj *robj, HSD_RObjAnimJoint *anim)
Definition robj.c:177
void HSD_RObjResolveRefsAll(HSD_RObj *, HSD_RObjDesc *)
Definition robj.c:590
void HSD_RObjUpdateAll(HSD_RObj *robj, void *obj, HSD_ObjUpdateFunc)
Definition robj.c:549
static bool RObjHasFlags(HSD_RObj *robj)
Definition robj.h:126
#define ROBJ_TYPE_MASK
Definition robj.h:12
void HSD_RObjReqAnimByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:150
HSD_RObj * HSD_RObjLoadDesc(HSD_RObjDesc *)
Definition robj.c:601
void HSD_RObjInitAllocData(void)
Definition robj.c:29
void HSD_RObjReqAnimAll(HSD_RObj *robj, f32 startframe)
Definition robj.c:172
void HSD_RObjAddAnimAll(HSD_RObj *robj, HSD_RObjAnimJoint *anim)
Definition robj.c:189
HSD_ObjAllocData * HSD_RObjGetAllocData(void)
Definition robj.c:35
HSD_Rvalue * HSD_RvalueAlloc(void)
Definition robj.c:821
int HSD_RObjGetGlobalPosition(HSD_RObj *robj, int, Vec3 *translate)
Definition robj.c:213
void HSD_RObjRemove(HSD_RObj *)
Definition robj.c:647
void HSD_RvalueRemove(HSD_Rvalue *rvalue)
Definition robj.c:829
#define REFTYPE_LIMIT
Definition robj.h:15
void _HSD_RObjForgetMemory(void *low, void *high)
Definition robj.c:941
void HSD_RvalueResolveRefs(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:895
void HSD_RvalueRemoveAll(HSD_Rvalue *rvalue)
Definition robj.c:837
static bool RObjHasFlags2(HSD_RObj *robj)
Definition robj.h:134
void HSD_RObjRemoveAll(HSD_RObj *)
Definition robj.c:665
void HSD_RvalueResolveRefsAll(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:905
void HSD_RObjReqAnimAllByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:161
Definition aobj.h:51
Definition aobj.h:41
Definition robj.h:55
u8 * bytecode
Definition robj.h:56
HSD_RvalueList * rvalue
Definition robj.h:57
Definition robj.h:50
f32(* func)(void *)
Definition robj.h:51
HSD_RvalueList * rvalue
Definition robj.h:52
Definition robj.h:40
f32(* func)(void *)
Definition robj.h:42
u8 * bytecode
Definition robj.h:43
HSD_Rvalue * rvalue
Definition robj.h:45
u32 nb_args
Definition robj.h:46
u8 is_bytecode
Definition robj.h:47
union HSD_Exp::@365 expr
Definition robj.h:35
f32 rotate_x
Definition robj.h:37
f32 bone_length
Definition robj.h:36
Definition robj.h:30
f32 bone_length
Definition robj.h:31
f32 rotate_x
Definition robj.h:32
Definition jobj.h:107
Definition jobj.h:130
Definition objalloc.h:21
Definition robj.h:85
HSD_AObjDesc * aobjdesc
Definition robj.h:87
HSD_RObjAnimJoint * next
Definition robj.h:86
Definition robj.h:72
u32 i
Definition robj.h:76
HSD_IKHintDesc * ik_hint
Definition robj.h:79
HSD_ByteCodeExpDesc * bcexp
Definition robj.h:78
HSD_RObjDesc * next
Definition robj.h:73
HSD_Joint * joint
Definition robj.h:80
u32 flags
Definition robj.h:74
f32 limit
Definition robj.h:81
HSD_ExpDesc * exp
Definition robj.h:77
union HSD_RObjDesc::@367 u
Definition robj.h:60
f32 limit
Definition robj.h:66
union HSD_RObj::@366 u
HSD_IKHint ik_hint
Definition robj.h:67
HSD_Exp exp
Definition robj.h:65
HSD_AObj * aobj
Definition robj.h:69
HSD_RObj * next
Definition robj.h:61
u32 flags
Definition robj.h:62
HSD_JObj * jobj
Definition robj.h:64
Definition robj.h:25
HSD_Joint * joint
Definition robj.h:27
u32 flags
Definition robj.h:26
Definition robj.h:19
HSD_JObj * jobj
Definition robj.h:22
HSD_Rvalue * next
Definition robj.h:20
u32 flags
Definition robj.h:21
void(* HSD_ObjUpdateFunc)(void *obj, enum_t type, HSD_ObjData *fval)
Definition forward.h:107