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
8
9#include "baselib/aobj.h"
10#include "baselib/jobj.h"
11#include "baselib/objalloc.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
55
60
72
85
90
91void _HSD_RObjForgetMemory(void* low, void* high);
92void HSD_RObjInitAllocData(void);
96void HSD_RObjFree(HSD_RObj* robj);
97
98void HSD_RObjSetFlags(HSD_RObj* robj, u32 flags);
99HSD_RObj* HSD_RObjGetByType(HSD_RObj* robj, u32 type, u32 subtype);
100void HSD_RObjAnimAll(HSD_RObj* robj);
101void HSD_RObjRemoveAnimAllByFlags(HSD_RObj* robj, u32 flags);
103void HSD_RObjReqAnimAllByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
104void HSD_RObjReqAnimAll(HSD_RObj* robj, f32 startframe);
106
112void HSD_RObjSetConstraintObj(HSD_RObj* robj, void* obj);
114int HSD_RObjGetGlobalPosition(HSD_RObj* robj, int, Vec3* translate);
115
116void HSD_RObjRemoveAnimByFlags(HSD_RObj* robj, u32 flags);
117void HSD_RObjReqAnimByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
119void HSD_RObjAnim(HSD_RObj* robj);
120
122void HSD_RvalueRemove(HSD_Rvalue* rvalue);
123void HSD_RvalueRemoveAll(HSD_Rvalue* rvalue);
126
127static inline bool RObjHasFlags(HSD_RObj* robj)
128{
129 if ((robj->flags & ROBJ_TYPE_MASK) == 0) {
130 return true;
131 }
132 return false;
133}
134
135static inline bool RObjHasFlags2(HSD_RObj* robj)
136{
137 if ((robj->flags & 0x80000000) != 0) {
138 return true;
139 }
140 return false;
141}
142
143static inline bool RObjHasLimitReftype(HSD_RObj* robj)
144{
145 bool has_flags;
146 u32 flags = (robj->flags & ROBJ_TYPE_MASK);
147 if (flags == REFTYPE_LIMIT) {
148 has_flags = true;
149 } else {
150 has_flags = false;
151 }
152 return has_flags;
153}
154
155#endif
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
float f32
A 32-bit floating-point number.
Definition platform.h:62
unsigned char u8
An unsigned 8-bit integer.
Definition platform.h:20
void * obj
Definition pobj.c:49
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:443
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:545
static bool RObjHasLimitReftype(HSD_RObj *robj)
Definition robj.h:143
void HSD_RObjSetConstraintObj(HSD_RObj *robj, void *obj)
Definition robj.c:665
void HSD_RObjFree(HSD_RObj *robj)
Definition robj.c:553
void HSD_RObjAddAnim(HSD_RObj *robj, HSD_RObjAnimJoint *anim)
Definition robj.c:177
void HSD_RObjResolveRefsAll(HSD_RObj *, HSD_RObjDesc *)
Definition robj.c:460
void HSD_RObjUpdateAll(HSD_RObj *robj, void *obj, HSD_ObjUpdateFunc)
Definition robj.c:419
static bool RObjHasFlags(HSD_RObj *robj)
Definition robj.h:127
#define ROBJ_TYPE_MASK
Definition robj.h:13
void HSD_RObjReqAnimByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:150
HSD_RObj * HSD_RObjLoadDesc(HSD_RObjDesc *)
Definition robj.c:471
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:569
int HSD_RObjGetGlobalPosition(HSD_RObj *robj, int, Vec3 *translate)
Definition robj.c:213
void HSD_RObjRemove(HSD_RObj *)
Definition robj.c:517
void HSD_RvalueRemove(HSD_Rvalue *rvalue)
Definition robj.c:577
#define REFTYPE_LIMIT
Definition robj.h:16
void _HSD_RObjForgetMemory(void *low, void *high)
Definition robj.c:689
void HSD_RvalueResolveRefs(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:643
void HSD_RvalueRemoveAll(HSD_Rvalue *rvalue)
Definition robj.c:585
static bool RObjHasFlags2(HSD_RObj *robj)
Definition robj.h:135
void HSD_RObjRemoveAll(HSD_RObj *)
Definition robj.c:535
void HSD_RvalueResolveRefsAll(HSD_Rvalue *rvalue, HSD_RvalueList *list)
Definition robj.c:653
void HSD_RObjReqAnimAllByFlags(HSD_RObj *robj, f32 startframe, u32 flags)
Definition robj.c:161
Definition aobj.h:50
Definition aobj.h:40
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
u8 * bytecode
Definition robj.h:44
HSD_Rvalue * rvalue
Definition robj.h:46
u32 nb_args
Definition robj.h:47
f32(* func)(void)
Definition robj.h:43
u8 is_bytecode
Definition robj.h:48
union HSD_Exp::@249 expr
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:108
Definition jobj.h:130
Definition objalloc.h:21
Definition robj.h:86
HSD_AObjDesc * aobjdesc
Definition robj.h:88
HSD_RObjAnimJoint * next
Definition robj.h:87
Definition robj.h:73
u32 i
Definition robj.h:77
HSD_IKHintDesc * ik_hint
Definition robj.h:80
HSD_ByteCodeExpDesc * bcexp
Definition robj.h:79
union HSD_RObjDesc::@251 u
HSD_RObjDesc * next
Definition robj.h:74
HSD_Joint * joint
Definition robj.h:81
u32 flags
Definition robj.h:75
f32 limit
Definition robj.h:82
HSD_ExpDesc * exp
Definition robj.h:78
Definition robj.h:61
f32 limit
Definition robj.h:67
HSD_IKHint ik_hint
Definition robj.h:68
union HSD_RObj::@250 u
HSD_Exp exp
Definition robj.h:66
HSD_AObj * aobj
Definition robj.h:70
HSD_RObj * next
Definition robj.h:62
u32 flags
Definition robj.h:63
HSD_JObj * jobj
Definition robj.h:65
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
Definition types.h:13
void(* HSD_ObjUpdateFunc)(void *obj, enum_t type, HSD_ObjData *fval)
Definition forward.h:99