SSBM Decomp
Loading...
Searching...
No Matches
wobj.h
Go to the documentation of this file.
1#ifndef SYSDOLPHIN_BASELIB_WOBJ_H
2#define SYSDOLPHIN_BASELIB_WOBJ_H
3
4#include <platform.h>
5
6#include "baselib/class.h"
7
8#include "baselib/forward.h" // IWYU pragma: export
9
10#include "baselib/object.h"
11
12#include <dolphin/mtx.h>
13
21
27
30 int (*load)(HSD_WObj* wobj, HSD_WObjDesc* desc);
31};
32
37
39
40#define HSD_WOBJ_INFO(i) ((HSD_WObjInfo*) (i))
41#define HSD_WOBJ_METHOD(o) HSD_WOBJ_INFO(HSD_OBJECT_METHOD(o))
42
43static inline void HSD_WObjUnref(HSD_WObj* wobj)
44{
45 if (wobj == NULL) {
46 return;
47 }
48
49 if (ref_DEC(wobj) != 0) {
50 if (wobj != NULL) {
51 HSD_OBJECT_METHOD(wobj)->release((HSD_Class*) wobj);
52 HSD_OBJECT_METHOD(wobj)->destroy((HSD_Class*) wobj);
53 }
54 }
55}
56
57static inline void HSD_WObjClearFlags(HSD_WObj* wobj, u32 flags)
58{
59 wobj->flags &= ~flags;
60}
61
63void HSD_WObjReqAnim(HSD_WObj* wobj, f32 frame);
64void HSD_WObjAddAnim(HSD_WObj* wobj, HSD_WObjAnim* anim);
66void HSD_WObjInit(HSD_WObj* wobj, HSD_WObjDesc* desc);
69void HSD_WObjSetPosition(HSD_WObj*, Vec3*);
73void HSD_WObjGetPosition(HSD_WObj*, Vec3*);
76
77#endif
static bool ref_DEC(void *o)
Definition object.h:74
#define HSD_OBJECT_METHOD(o)
Definition object.h:15
#define NULL
Definition stddef.h:19
Definition aobj.h:51
Definition aobj.h:41
Definition class.h:32
Definition class.h:14
Definition object.h:66
Definition object.h:60
Definition robj.h:85
Definition robj.h:72
Definition robj.h:60
Definition wobj.h:33
HSD_RObjAnimJoint * robjanim
Definition wobj.h:35
HSD_AObjDesc * aobjdesc
Definition wobj.h:34
Definition wobj.h:22
char * class_name
Definition wobj.h:23
HSD_RObjDesc * robjdesc
Definition wobj.h:25
Vec3 pos
Definition wobj.h:24
Definition wobj.h:28
int(* load)(HSD_WObj *wobj, HSD_WObjDesc *desc)
Definition wobj.h:30
HSD_ObjInfo parent
Definition wobj.h:29
Definition wobj.h:14
HSD_AObj * aobj
Definition wobj.h:18
HSD_Obj parent
Definition wobj.h:15
Vec3 pos
Definition wobj.h:17
u32 flags
Definition wobj.h:16
HSD_RObj * robj
Definition wobj.h:19
static void HSD_WObjUnref(HSD_WObj *wobj)
Definition wobj.h:43
void HSD_WObjSetPositionX(HSD_WObj *, f32)
Definition wobj.c:163
void HSD_WObjInterpretAnim(HSD_WObj *wobj)
Definition wobj.c:90
void HSD_WObjSetDefaultClass(HSD_ClassInfo *info)
Definition wobj.c:123
HSD_WObjInfo hsdWObj
Definition wobj.c:16
void HSD_WObjReqAnim(HSD_WObj *wobj, f32 frame)
Definition wobj.c:29
void HSD_WObjSetPositionZ(HSD_WObj *, f32)
Definition wobj.c:199
void HSD_WObjSetPosition(HSD_WObj *, Vec3 *)
Definition wobj.c:152
void HSD_WObjInit(HSD_WObj *wobj, HSD_WObjDesc *desc)
Definition wobj.c:109
HSD_WObj * HSD_WObjLoadDesc(HSD_WObjDesc *desc)
Definition wobj.c:133
void HSD_WObjRemoveAnim(HSD_WObj *wobj)
Definition wobj.c:20
void HSD_WObjSetPositionY(HSD_WObj *, f32)
Definition wobj.c:181
void HSD_WObjAddAnim(HSD_WObj *wobj, HSD_WObjAnim *anim)
Definition wobj.c:37
void HSD_WObjGetPosition(HSD_WObj *, Vec3 *)
Definition wobj.c:217
HSD_WObj * HSD_WObjAlloc(void)
Definition wobj.c:235
void WObjSetupPosition(HSD_WObj *wobj)
static void HSD_WObjClearFlags(HSD_WObj *wobj, u32 flags)
Definition wobj.h:57