SSBM Decomp
Loading...
Searching...
No Matches
aobj.h
Go to the documentation of this file.
1#ifndef _aobj_h_
2#define _aobj_h_
3
4#include <Runtime/platform.h>
5
6#include <sysdolphin/baselib/forward.h> // IWYU pragma: export
7
8#include <dat_macros.h>
9
14
15#define AOBJ_REWINDED (1 << 26)
16#define AOBJ_FIRST_PLAY (1 << 27)
17#define AOBJ_NO_UPDATE (1 << 28)
18#define AOBJ_LOOP (1 << 29)
19#define AOBJ_NO_ANIM (1 << 30)
20
35
36typedef union _callbackArg {
39 void* v;
41
51
62
70
71void HSD_AObjInitAllocData(void);
74void HSD_AObjSetFlags(HSD_AObj* aobj, u32 flags);
75void HSD_AObjClearFlags(HSD_AObj* aobj, u32 flags);
76void HSD_AObjSetFObj(HSD_AObj* aobj, HSD_FObj* fobj);
79void HSD_AObjReqAnim(HSD_AObj* aobj, f32 frame);
80void HSD_AObjStopAnim(HSD_AObj* aobj, void* obj, HSD_ObjUpdateFunc func);
81
82void HSD_AObjInterpretAnim(HSD_AObj* aobj, void* obj,
83 HSD_ObjUpdateFunc update_func);
84
86void HSD_AObjRemove(HSD_AObj* aobj);
88void HSD_AObjFree(HSD_AObj* aobj);
89void HSD_ForeachAnim(void* obj, HSD_Type type, HSD_TypeMask mask, void* func,
90 AObj_Arg_Type arg_type, ...);
91void HSD_AObjSetRate(HSD_AObj* aobj, f32 rate);
92void HSD_AObjSetRewindFrame(HSD_AObj* aobj, f32 frame);
93void HSD_AObjSetEndFrame(HSD_AObj* aobj, f32 frame);
94void HSD_AObjSetCurrentFrame(HSD_AObj* aobj, f32 frame);
95void _HSD_AObjForgetMemory(void* low, void* high);
96
97static inline f32 HSD_AObjGetCurrFrame(HSD_AObj* aobj)
98{
99 HSD_ASSERT(0x92, aobj);
100 return aobj->curr_frame;
101}
102
103static inline f32 HSD_AObjGetEndFrame(HSD_AObj* aobj)
104{
105 HSD_ASSERT(0xAA, aobj);
106 return aobj->end_frame;
107}
108
109#endif
void HSD_AObjReqAnim(HSD_AObj *aobj, f32 frame)
Definition aobj.c:91
void HSD_AObjInitAllocData(void)
Definition aobj.c:28
void HSD_AObjSetFObj(HSD_AObj *aobj, HSD_FObj *fobj)
Definition aobj.c:59
void HSD_ForeachAnim(void *obj, HSD_Type type, HSD_TypeMask mask, void *func, AObj_Arg_Type arg_type,...)
Definition aobj.c:428
void HSD_AObjFree(HSD_AObj *aobj)
Definition aobj.c:245
void HSD_AObjSetCurrentFrame(HSD_AObj *aobj, f32 frame)
Definition aobj.c:526
void _HSD_AObjForgetMemory(void *low, void *high)
Definition aobj.c:539
u32 HSD_AObjGetFlags(HSD_AObj *aobj)
Definition aobj.c:38
void HSD_AObjInvokeCallBacks(void)
Definition aobj.c:77
void HSD_AObjClearFlags(HSD_AObj *aobj, u32 flags)
Definition aobj.c:51
void HSD_AObjSetRate(HSD_AObj *aobj, f32 rate)
Definition aobj.c:502
HSD_AObj * HSD_AObjLoadDesc(HSD_AObjDesc *aobjdesc)
Definition aobj.c:172
void HSD_AObjRemove(HSD_AObj *aobj)
Definition aobj.c:212
void HSD_AObjInterpretAnim(HSD_AObj *aobj, void *obj, HSD_ObjUpdateFunc update_func)
Definition aobj.c:124
void HSD_AObjStopAnim(HSD_AObj *aobj, void *obj, HSD_ObjUpdateFunc func)
Definition aobj.c:107
static f32 HSD_AObjGetEndFrame(HSD_AObj *aobj)
Definition aobj.h:103
void HSD_AObjSetRewindFrame(HSD_AObj *aobj, f32 frame)
Definition aobj.c:510
void HSD_AObjSetFlags(HSD_AObj *aobj, u32 flags)
Definition aobj.c:43
static f32 HSD_AObjGetCurrFrame(HSD_AObj *aobj)
Definition aobj.h:97
HSD_AObj * HSD_AObjAlloc(void)
Definition aobj.c:234
HSD_ObjAllocData * HSD_AObjGetAllocData(void)
Definition aobj.c:33
void HSD_AObjSetEndFrame(HSD_AObj *aobj, f32 frame)
Definition aobj.c:518
void HSD_AObjInitEndCallBack(void)
Definition aobj.c:71
AObj_Arg_Type
Definition aobj.h:21
@ AOBJ_ARG_AU
Definition aobj.h:25
@ AOBJ_ARG_AO
Definition aobj.h:26
@ AOBJ_ARG_AV
Definition aobj.h:24
@ AOBJ_ARG_AOTU
Definition aobj.h:33
@ AOBJ_ARG_A
Definition aobj.h:22
@ AOBJ_ARG_AOU
Definition aobj.h:29
@ AOBJ_ARG_AOT
Definition aobj.h:30
@ AOBJ_ARG_AOTV
Definition aobj.h:32
@ AOBJ_ARG_AOV
Definition aobj.h:28
@ AOBJ_ARG_AF
Definition aobj.h:23
@ AOBJ_ARG_AOTF
Definition aobj.h:31
@ AOBJ_ARG_AOF
Definition aobj.h:27
Annotations describing how archive data is laid out, for the parts a C declaration cannot express: ho...
unsigned int u32
Definition types.h:13
float f32
Definition types.h:18
#define HSD_ASSERT(line, cond)
Definition mnvibration.c:6
HSD_Type
Definition object.h:18
HSD_TypeMask
Definition object.h:40
Definition aobj.h:52
f32 end_frame
Definition aobj.h:54
void *obj_id DAT_TYPE(HSD_Joint)
The descriptor of the object to animate, whose address is the key that object is registered under onc...
u32 flags
Definition aobj.h:53
HSD_FObjDesc * fobjdesc
Definition aobj.h:55
Definition aobj.h:42
f32 rewind_frame
Definition aobj.h:45
f32 framerate
Definition aobj.h:47
f32 curr_frame
Definition aobj.h:44
f32 end_frame
Definition aobj.h:46
u32 flags
Definition aobj.h:43
HSD_JObj * jobj
Definition aobj.h:49
HSD_FObj * fobj
Definition aobj.h:48
Definition aobj.h:63
u32 flags
Definition aobj.h:68
HSD_AnimJoint * next
Definition aobj.h:65
HSD_AnimJoint * child
Definition aobj.h:64
HSD_RObjAnimJoint * robj_anim
Definition aobj.h:67
HSD_AObjDesc * aobjdesc
Definition aobj.h:66
Definition fobj.h:59
Definition fobj.h:38
Definition jobj.h:106
Definition jobj.h:129
Definition objalloc.h:19
Definition robj.h:88
void(* HSD_ObjUpdateFunc)(void *obj, enum_t type, HSD_ObjData *fval)
Definition forward.h:111
Definition aobj.h:36
u32 d
Definition aobj.h:38
f32 f
Definition aobj.h:37
void * v
Definition aobj.h:39