SSBM Decomp
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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/forward.h" // IWYU pragma: export
7
8#include "baselib/class.h"
9#include "baselib/object.h"
10
11#include <dolphin/mtx.h>
12
20
26
29 int (*load)(HSD_WObj* wobj, HSD_WObjDesc* desc);
30};
31
36
38
39#define HSD_WOBJ_INFO(i) ((HSD_WObjInfo*) (i))
40#define HSD_WOBJ_METHOD(o) HSD_WOBJ_INFO(HSD_OBJECT_METHOD(o))
41
42static inline void HSD_WObjUnref(HSD_WObj* wobj)
43{
44 if (wobj == NULL) {
45 return;
46 }
47
48 if (ref_DEC(wobj) != 0) {
49 if (wobj != NULL) {
50 HSD_OBJECT_METHOD(wobj)->release((HSD_Class*) wobj);
51 HSD_OBJECT_METHOD(wobj)->destroy((HSD_Class*) wobj);
52 }
53 }
54}
55
56static inline void HSD_WObjClearFlags(HSD_WObj* wobj, u32 flags)
57{
58 wobj->flags &= ~flags;
59}
60
62void HSD_WObjReqAnim(HSD_WObj* wobj, f32 frame);
63void HSD_WObjAddAnim(HSD_WObj* wobj, HSD_WObjAnim* anim);
65void HSD_WObjInit(HSD_WObj* wobj, HSD_WObjDesc* desc);
68void HSD_WObjSetPosition(HSD_WObj*, Vec3*);
72void HSD_WObjGetPosition(HSD_WObj*, Vec3*);
75
76#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:50
Definition aobj.h:40
Definition class.h:32
Definition class.h:14
Definition object.h:66
Definition object.h:60
Definition robj.h:87
Definition robj.h:74
Definition robj.h:62
Definition wobj.h:32
HSD_RObjAnimJoint * robjanim
Definition wobj.h:34
HSD_AObjDesc * aobjdesc
Definition wobj.h:33
Definition wobj.h:21
char * class_name
Definition wobj.h:22
HSD_RObjDesc * robjdesc
Definition wobj.h:24
Vec3 pos
Definition wobj.h:23
Definition wobj.h:27
int(* load)(HSD_WObj *wobj, HSD_WObjDesc *desc)
Definition wobj.h:29
HSD_ObjInfo parent
Definition wobj.h:28
Definition wobj.h:13
HSD_AObj * aobj
Definition wobj.h:17
HSD_Obj parent
Definition wobj.h:14
Vec3 pos
Definition wobj.h:16
u32 flags
Definition wobj.h:15
HSD_RObj * robj
Definition wobj.h:18
static void HSD_WObjUnref(HSD_WObj *wobj)
Definition wobj.h:42
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:56