SSBM Decomp
Loading...
Searching...
No Matches
pobj.h
Go to the documentation of this file.
1#ifndef _pobj_h_
2#define _pobj_h_
3
4#include <Runtime/platform.h>
5
6#include <sysdolphin/baselib/forward.h> // IWYU pragma: export
7
8#include <dat_macros.h>
9
10#include <dolphin/gx/GXEnum.h>
11#include <dolphin/mtx.h>
15
16#define HSD_MTX_RIGID 1
17#define HSD_MTX_ENVELOPE 2
18
33
35typedef HSD_EnvelopeDesc* HSD_EnvelopeList DAT_TERMINATED(0);
36
39typedef u8 HSD_DisplayList DAT_BLOB;
40
43typedef u8 HSD_VertexArray DAT_BLOB;
44
52 HSD_DisplayList* display DAT_COUNT(n_display << 5);
54 HSD_Joint* joint DAT_IF((flags & 0x3000) == POBJ_SKIN);
55 HSD_ShapeSetDesc* shape_set DAT_IF((flags & 0x3000) == POBJ_SHAPEANIM);
56 HSD_EnvelopeList* envelope_p DAT_TERMINATED(0)
57 DAT_IF((flags & 0x3000) == POBJ_ENVELOPE);
58 } u;
59};
60
71
77
82
98
109
114
120
123 void (*disp)(HSD_PObj* pobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
124 void (*setup_mtx)(HSD_PObj* pobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
125 s32 (*load)(HSD_PObj* pobj, HSD_PObjDesc* desc);
126};
127
128extern HSD_PObjInfo hsdPObj;
129
130#define HSD_POBJ(o) ((HSD_PObj*) (o))
131#define HSD_POBJ_INFO(i) ((HSD_PObjInfo*) (i))
132#define HSD_POBJ_METHOD(o) HSD_POBJ_INFO(HSD_CLASS_METHOD(o))
133
138
141void HSD_PObjReqAnimByFlags(HSD_PObj* pobj, f32 startframe, u32 flags);
142void HSD_PObjReqAnimAllByFlags(HSD_PObj* pobj, f32 startframe, u32 flags);
143void HSD_ClearVtxDesc(void);
145
146void HSD_PObjClearMtxMark(void* obj, u32 mark);
147void HSD_PObjSetMtxMark(int idx, void* obj, u32 mark);
148void HSD_PObjGetMtxMark(int idx, void** obj, u32* mark);
151void HSD_PObjAnim(HSD_PObj* pobj);
157
159
160void HSD_PObjDisp(HSD_PObj* pobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
161
162#endif
static f32 verts[20][3]
Definition GXDraw.c:341
GXAttrType
Definition GXEnum.h:115
GXCompType
Definition GXEnum.h:375
GXCompCnt
Definition GXEnum.h:363
GXAttr
Definition GXEnum.h:84
@ GX_VA_NULL
Definition GXEnum.h:112
Annotations describing how archive data is laid out, for the parts a C declaration cannot express: ho...
#define DAT_BLOB
On a typedef of u8: the bytes are data of one format the archive doesn't break down further,...
Definition dat_macros.h:103
f32 Mtx[3][4]
Definition mtx.h:50
signed int s32
Definition types.h:12
unsigned int u32
Definition types.h:13
float f32
Definition types.h:18
unsigned short int u16
Definition types.h:7
unsigned char u8
Definition types.h:5
HSD_PObjInfo hsdPObj
Definition pobj.c:25
void HSD_PObjFree(HSD_PObj *)
Definition pobj.c:366
void HSD_PObjRemoveAnimByFlags(HSD_PObj *pobj, u32 flags)
Definition pobj.c:50
u32 HSD_PObjGetFlags(HSD_PObj *pobj)
Definition pobj.c:42
void HSD_PObjReqAnimAllByFlags(HSD_PObj *pobj, f32 startframe, u32 flags)
Definition pobj.c:120
HSD_PObj * HSD_PObjAlloc(void)
Definition pobj.c:359
void HSD_PObjSetDefaultClass(HSD_PObjInfo *info)
Definition pobj.c:351
void HSD_PObjDisp(HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
Definition pobj.c:1229
void HSD_PObjAnimAll(HSD_PObj *)
Definition pobj.c:162
void HSD_PObjAnim(HSD_PObj *pobj)
Definition pobj.c:155
void HSD_ClearVtxDesc(void)
Definition pobj.c:429
void HSD_PObjResolveRefs(HSD_PObj *, HSD_PObjDesc *)
Definition pobj.c:394
void HSD_PObjClearMtxMark(void *obj, u32 mark)
Definition pobj.c:953
void HSD_PObjGetMtxMark(int idx, void **obj, u32 *mark)
Definition pobj.c:976
HSD_PObjInfo * HSD_PObjGetDefaultClass(void)
Definition pobj.c:346
HSD_EnvelopeDesc *HSD_EnvelopeList DAT_TERMINATED(0)
Envelopes of one vertex matrix, up to one with a null joint.
Definition pobj.h:35
void HSD_PObjRemoveAnimAllByFlags(HSD_PObj *pobj, u32 flags)
Definition pobj.c:63
void HSD_PObjRemoveAll(HSD_PObj *)
Definition pobj.c:335
HSD_PObj * HSD_PObjLoadDesc(HSD_PObjDesc *)
Definition pobj.c:309
void HSD_PObjReqAnimByFlags(HSD_PObj *pobj, f32 startframe, u32 flags)
Definition pobj.c:109
void HSD_PObjRemove(HSD_PObj *)
Definition pobj.c:330
void HSD_PObjAddAnimAll(HSD_PObj *, HSD_ShapeAnim *)
Definition pobj.c:94
void HSD_PObjResolveRefsAll(HSD_PObj *, HSD_PObjDesc *)
Definition pobj.c:420
void HSD_PObjAddAnim(HSD_PObj *, HSD_ShapeAnim *)
Definition pobj.c:76
void HSD_PObjSetMtxMark(int idx, void *obj, u32 mark)
Definition pobj.c:963
static Mtx vmtx
Definition psdisp.c:54
Definition aobj.h:52
Definition aobj.h:42
Definition class.h:32
Definition class.h:14
Definition pobj.h:78
HSD_Joint * joint
Definition pobj.h:79
f32 weight
Definition pobj.h:80
Definition pobj.h:72
HSD_Envelope * next
Definition pobj.h:73
f32 weight
Definition pobj.h:75
HSD_JObj * jobj
Definition pobj.h:74
Definition jobj.h:106
Definition jobj.h:129
Definition pobj.h:45
char * class_name
Definition pobj.h:46
u16 flags
Definition pobj.h:49
union HSD_PObjDesc::HSD_PObjDesc_u u
HSD_VtxDescList *verts DAT_TERMINATED(GX_VA_NULL)
HSD_PObjDesc * next
Definition pobj.h:47
HSD_DisplayList *display DAT_COUNT(n_display<< 5)
As GXCallDisplayList takes it (PObjDispSimplePrimitive).
u16 n_display
Definition pobj.h:50
Definition pobj.h:121
void(* setup_mtx)(HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
Definition pobj.h:124
void(* disp)(HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
Definition pobj.h:123
s32(* load)(HSD_PObj *pobj, HSD_PObjDesc *desc)
Definition pobj.h:125
HSD_ClassInfo parent
Definition pobj.h:122
Definition pobj.h:19
u16 flags
Definition pobj.h:23
HSD_VtxDescList * verts
Definition pobj.h:22
u8 * display
u8 primitive, u16 vtxcnt, u16* indices
Definition pobj.h:26
union HSD_PObj::HSD_PObjUnion u
HSD_PObj * next
Definition pobj.h:21
u16 n_display
Definition pobj.h:24
HSD_Class parent
Definition pobj.h:20
Definition list.h:6
Definition dobj.h:36
Definition pobj.h:115
HSD_ShapeAnimJoint * child
Definition pobj.h:116
HSD_ShapeAnimJoint * next
Definition pobj.h:117
HSD_ShapeAnimDObj * shapeanimdobj
Definition pobj.h:118
Definition pobj.h:110
HSD_AObjDesc * aobjdesc
Definition pobj.h:112
HSD_ShapeAnim * next
Definition pobj.h:111
Definition pobj.h:99
s32 nb_normal_index
Definition pobj.h:105
HSD_VtxDescList * normal_desc
Definition pobj.h:106
u8 **normal_idx_list DAT_COUNT(nb_shape)
u16 nb_shape
Definition pobj.h:101
s32 nb_vertex_index
Definition pobj.h:102
u8 **vertex_idx_list DAT_COUNT(nb_shape)
HSD_VtxDescList * vertex_desc
Definition pobj.h:103
u16 flags
Definition pobj.h:100
Definition pobj.h:83
int nb_vertex_index
Definition pobj.h:86
s32 nb_normal_index
Definition pobj.h:89
u16 flags
Definition pobj.h:84
u8 **vertex_idx_list DAT_COUNT(nb_shape)
u8 **normal_idx_list DAT_COUNT(nb_shape)
u16 nb_shape
Definition pobj.h:85
HSD_VtxDescList * normal_desc
Definition pobj.h:90
HSD_VtxDescList * vertex_desc
Definition pobj.h:87
HSD_AObj * aobj
Definition pobj.h:96
Definition pobj.h:61
u16 stride
Definition pobj.h:67
HSD_VertexArray * vertex
Definition pobj.h:69
GXCompCnt comp_cnt
Definition pobj.h:64
GXCompType comp_type
Definition pobj.h:65
u8 frac
Definition pobj.h:66
GXAttrType attr_type
Definition pobj.h:63
GXAttr attr
Definition pobj.h:62
#define POBJ_ENVELOPE
Definition forward.h:126
#define POBJ_SHAPEANIM
Definition forward.h:125
#define POBJ_SKIN
Definition forward.h:124
Definition pobj.h:53
HSD_Joint *joint DAT_IF((flags &0x3000)==POBJ_SKIN)
HSD_EnvelopeList *envelope_p DAT_TERMINATED(0) DAT_IF((flags &0x3000)
HSD_ShapeSetDesc *shape_set DAT_IF((flags &0x3000)==POBJ_SHAPEANIM)
Definition pobj.h:27
HSD_JObj * jobj
Definition pobj.h:28
HSD_ShapeSet * shape_set
Definition pobj.h:29
HSD_SList * envelope_list
Definition pobj.h:30
f32 bl
Definition pobj.h:94
f32 * bp
Definition pobj.h:93