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/forward.h" // IWYU pragma: export
7
8#include "baselib/class.h"
9#include "baselib/object.h"
10
11#include <dolphin/mtx/types.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);
75
76#endif
static bool ref_DEC(void *o)
Definition object.h:74
#define HSD_OBJECT_METHOD(o)
Definition object.h:15
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
float f32
A 32-bit floating-point number.
Definition platform.h:62
#define NULL
A null pointer.
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:86
Definition robj.h:73
Definition robj.h:61
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
Definition types.h:13
static void HSD_WObjUnref(HSD_WObj *wobj)
Definition wobj.h:42
void HSD_WObjSetPositionX(HSD_WObj *, f32)
Definition wobj.c:164
void HSD_WObjInterpretAnim(HSD_WObj *wobj)
Definition wobj.c:91
void HSD_WObjSetDefaultClass(HSD_ClassInfo *info)
Definition wobj.c:124
HSD_WObjInfo hsdWObj
Definition wobj.c:17
void HSD_WObjReqAnim(HSD_WObj *wobj, f32 frame)
Definition wobj.c:30
void HSD_WObjSetPositionZ(HSD_WObj *, f32)
Definition wobj.c:200
void HSD_WObjSetPosition(HSD_WObj *, Vec3 *)
Definition wobj.c:153
void HSD_WObjInit(HSD_WObj *wobj, HSD_WObjDesc *desc)
Definition wobj.c:110
HSD_WObj * HSD_WObjLoadDesc(HSD_WObjDesc *desc)
Definition wobj.c:134
void HSD_WObjRemoveAnim(HSD_WObj *wobj)
Definition wobj.c:21
void HSD_WObjSetPositionY(HSD_WObj *, f32)
Definition wobj.c:182
void HSD_WObjAddAnim(HSD_WObj *wobj, HSD_WObjAnim *anim)
Definition wobj.c:38
void HSD_WObjGetPosition(HSD_WObj *, Vec3 *)
Definition wobj.c:218
HSD_WObj * HSD_WObjAlloc(void)
Definition wobj.c:236
void WObjSetupPosition(HSD_WObj *wobj)
static void HSD_WObjClearFlags(HSD_WObj *wobj, u32 flags)
Definition wobj.h:56