SSBM Decomp
Loading...
Searching...
No Matches
cobj.h
Go to the documentation of this file.
1#ifndef _cobj_h_
2#define _cobj_h_
3
4#include <platform.h>
5#include <placeholder.h>
6
7#include "baselib/forward.h" // IWYU pragma: export
8
9#include "baselib/object.h"
10
11#include <dolphin/gx/GXEnum.h>
12#include <dolphin/mtx.h>
13
14#define PROJ_PERSPECTIVE 1
15#define PROJ_FRUSTUM 2
16#define PROJ_ORTHO 3
17
18typedef struct _Scissor {
19 u16 left;
20 u16 right;
21 u16 top;
22 u16 bottom;
23} Scissor;
24
25typedef struct _HSD_RectS16 {
26 s16 xmin;
27 s16 xmax;
28 s16 ymin;
29 s16 ymax;
31
32typedef struct _HSD_RectF32 {
33 f32 xmin;
34 f32 xmax;
35 f32 ymin;
36 f32 ymax;
38
39struct HSD_CObj {
40 /* +0 */ HSD_Obj parent;
41 /* +8 */ u32 flags;
43 /* +1C */ Scissor scissor;
44 /* +24 */ HSD_WObj* eyepos;
45 /* +28 */ HSD_WObj* interest;
46 union {
47 /* +2C */ f32 roll;
48 /* +2C */ Vec3 up;
49 } u;
50 /* +38 */ f32 near;
51 /* +3C */ f32 far;
52 union {
53 struct {
54 f32 fov;
55 f32 aspect;
57
58 struct {
59 f32 top;
60 f32 bottom;
61 f32 left;
62 f32 right;
64
65 struct {
66 f32 top;
67 f32 bottom;
68 f32 left;
69 f32 right;
72 /* +50 */ u8 projection_type;
73 /* +54 */ Mtx view_mtx;
74 /* +84 */ HSD_AObj* aobj;
75 /* +88 */ Mtx* proj_mtx;
76};
77
79 char* class_name; // 0x00
80 u16 flags; // 0x04
81 u16 projection_type; // 0x06
86 f32 roll; // 0x20
87 Vec3* up_vector; // 0x24
88 f32 nnear; // 0x28
89 f32 ffar; // 0x2C
90};
91
93 char* class_name; // 0x00
94 u16 flags; // 0x04
95 u16 projection_type; // 0x06
100 f32 roll; // 0x20
101 Vec3* up_vector; // 0x24
102 f32 nnear; // 0x28
103 f32 ffar; // 0x2C
104 f32 top;
106 f32 left;
107 f32 right;
108};
109
111 char* class_name; // 0x00
112 u16 flags; // 0x04
113 u16 projection_type; // 0x06
118 f32 roll; // 0x20
119 Vec3* up_vector; // 0x24
120 f32 nnear; // 0x28
121 f32 ffar; // 0x2C
122 f32 fov;
124};
125
133
136 int (*load)(HSD_CObj* cobj, HSD_CObjDesc* desc);
137};
138
144
145typedef struct _cobj_Unk1 cobj_Unk1;
146
147#define HSD_COBJ(o) ((HSD_CObj*) (o))
148#define HSD_COBJ_INFO(i) ((HSD_CObjInfo*) (i))
149#define HSD_COBJ_METHOD(o) HSD_COBJ_INFO(HSD_OBJECT_METHOD(o))
150
151void HSD_CObjEraseScreen(HSD_CObj* cobj, s32 enable_color, s32 enable_alpha,
152 s32 enable_depth);
153void HSD_CObjRemoveAnim(HSD_CObj* cobj);
155void HSD_CObjSetInterestWObj(HSD_CObj* cobj, HSD_WObj* interest);
157void HSD_CObjSetEyePositionWObj(HSD_CObj* cobj, HSD_WObj* eyepos);
158void HSD_CObjSetInterest(HSD_CObj* cobj, Vec3*);
159void HSD_CObjSetEyePosition(HSD_CObj* cobj, Vec3*);
161void HSD_CObjEndCurrent(void);
162void HSD_CObjSetViewportfx4(HSD_CObj*, f32, f32, f32, f32);
163void HSD_CObjGetEyePosition(HSD_CObj* cobj, Vec3* cam_pos);
164int HSD_CObjGetEyeVector(HSD_CObj* cobj, Vec3* eye);
165int HSD_CObjGetUpVector(HSD_CObj* cobj, Vec3* up);
166void HSD_CObjGetInterest(HSD_CObj* cobj, Vec3* interest);
168
169void HSD_CObjRemoveAnimByFlags(HSD_CObj* cobj, u32 flags);
170void HSD_CObjAddAnim(HSD_CObj* cobj, HSD_CameraAnim* canim);
171void HSD_CObjAnim(HSD_CObj* cobj);
172void HSD_CObjReqAnim(HSD_CObj* cobj, f32 startframe);
173GXProjectionType makeProjectionMtx(HSD_CObj* cobj, Mtx mtx);
176void HSD_CObjSetUpVector(HSD_CObj* cobj, Vec3* up);
177int HSD_CObjGetLeftVector(HSD_CObj* cobj, Vec3* left);
178void HSD_CObjSetMtxDirty(HSD_CObj* cobj);
180void HSD_CObjGetViewingMtx(HSD_CObj* cobj, Mtx mtx);
184void HSD_CObjSetRoll(HSD_CObj* cobj, f32);
185f32 HSD_CObjGetFov(HSD_CObj* cobj);
187f32 HSD_CObjGetAspect(HSD_CObj* cobj);
188void HSD_CObjSetAspect(HSD_CObj* cobj, f32 aspect);
189f32 HSD_CObjGetTop(HSD_CObj* cobj);
190void HSD_CObjSetTop(HSD_CObj* cobj, f32 top);
191f32 HSD_CObjGetBottom(HSD_CObj* cobj);
192void HSD_CObjSetBottom(HSD_CObj* cobj, f32 bottom);
193f32 HSD_CObjGetLeft(HSD_CObj* cobj);
194void HSD_CObjSetLeft(HSD_CObj* cobj, f32 left);
195f32 HSD_CObjGetRight(HSD_CObj* cobj);
196void HSD_CObjSetRight(HSD_CObj* cobj, f32 right);
198void HSD_CObjSetNear(HSD_CObj* cobj, f32 near);
200void HSD_CObjSetFar(HSD_CObj* cobj, f32 far);
203void HSD_CObjSetScissorx4(HSD_CObj*, u16 left, u16 right, u16 top, u16 bottom);
205void HSD_CObjSetViewport(HSD_CObj* cobj, HSD_RectS16* viewport);
209void HSD_CObjSetPerspective(HSD_CObj* cobj, f32 fov, f32 aspect);
210void HSD_CObjSetFrustum(HSD_CObj*, f32 top, f32 bottom, f32 left, f32 right);
211void HSD_CObjSetOrtho(HSD_CObj*, f32 top, f32 bottom, f32 left, f32 right);
212void HSD_CObjGetPerspective(HSD_CObj* cobj, f32* top, f32* bottom);
213void HSD_CObjGetOrtho(HSD_CObj*, f32* top, f32* bottom, f32* left, f32* right);
214u32 HSD_CObjGetFlags(HSD_CObj* cobj);
215void HSD_CObjSetFlags(HSD_CObj*, u32);
216void HSD_CObjClearFlags(HSD_CObj*, u32);
218void HSD_CObjInit(HSD_CObj* cobj, HSD_CObjDesc* desc);
221
222static inline MtxPtr HSD_CObjGetViewingMtxPtrDirect(HSD_CObj* cobj)
223{
224 return cobj->view_mtx;
225}
226
227#endif
void HSD_CObjSetRight(HSD_CObj *cobj, f32 right)
int HSD_CObjGetUpVector(HSD_CObj *cobj, Vec3 *up)
Definition cobj.c:679
void HSD_CObjGetInterest(HSD_CObj *cobj, Vec3 *interest)
Definition cobj.c:555
HSD_WObj * HSD_CObjGetEyePositionWObj(HSD_CObj *cobj)
Definition cobj.c:543
MtxPtr HSD_CObjGetInvViewingMtxPtr(HSD_CObj *cobj)
Definition cobj.c:798
void HSD_CObjGetEyePosition(HSD_CObj *cobj, Vec3 *cam_pos)
Definition cobj.c:567
void HSD_CObjRemoveAnimByFlags(HSD_CObj *cobj, u32 flags)
Definition cobj.c:78
HSD_WObj * HSD_CObjGetInterestWObj(HSD_CObj *cobj)
Definition cobj.c:531
void HSD_CObjSetMtxDirty(HSD_CObj *cobj)
Definition cobj.c:763
void HSD_CObjAnim(HSD_CObj *cobj)
Definition cobj.c:176
void HSD_CObjSetInterestWObj(HSD_CObj *cobj, HSD_WObj *interest)
Definition cobj.c:537
void HSD_CObjSetUpVector(HSD_CObj *cobj, Vec3 *up)
Definition cobj.c:698
void HSD_CObjSetProjectionType(HSD_CObj *, u32)
Definition cobj.c:1112
HSD_CObj * HSD_CObjGetCurrent(void)
Definition cobj.c:1210
void HSD_CObjEndCurrent(void)
Definition cobj.c:525
void HSD_CObjSetViewportfx4(HSD_CObj *, f32, f32, f32, f32)
void HSD_CObjSetFlags(HSD_CObj *, u32)
Definition cobj.c:1194
void HSD_CObjSetInterest(HSD_CObj *cobj, Vec3 *)
Definition cobj.c:561
void HSD_CObjEraseScreen(HSD_CObj *cobj, s32 enable_color, s32 enable_alpha, s32 enable_depth)
Definition cobj.c:37
void HSD_CObjAddAnim(HSD_CObj *cobj, HSD_CameraAnim *canim)
Definition cobj.c:103
f32 HSD_CObjGetTop(HSD_CObj *cobj)
Definition cobj.c:855
f32 HSD_CObjGetFov(HSD_CObj *cobj)
Definition cobj.c:823
void HSD_CObjGetScissor(HSD_CObj *cobj, Scissor *)
Definition cobj.c:1034
void HSD_CObjInit(HSD_CObj *cobj, HSD_CObjDesc *desc)
Definition cobj.c:1281
void HSD_CObjSetScissorx4(HSD_CObj *, u16 left, u16 right, u16 top, u16 bottom)
Definition cobj.c:1050
f32 HSD_CObjGetAspect(HSD_CObj *cobj)
Definition cobj.c:839
void HSD_CObjSetFov(HSD_CObj *, f32)
HSD_CObj * HSD_CObjAlloc(void)
Definition cobj.c:1225
void HSD_CObjSetEyePositionWObj(HSD_CObj *cobj, HSD_WObj *eyepos)
Definition cobj.c:549
MtxPtr HSD_CObjGetViewingMtxPtr(HSD_CObj *cobj)
Definition cobj.c:792
u32 HSD_CObjGetFlags(HSD_CObj *cobj)
Definition cobj.c:1189
int HSD_CObjGetEyeVector(HSD_CObj *cobj, Vec3 *eye)
Definition cobj.c:579
f32 HSD_CObjGetEyeDistance(HSD_CObj *cobj)
Definition cobj.c:600
void HSD_CObjSetViewportf(HSD_CObj *cobj, HSD_RectF32 *)
Definition cobj.c:1084
f32 HSD_CObjGetRight(HSD_CObj *cobj)
Definition cobj.c:968
int HSD_CObjGetLeftVector(HSD_CObj *cobj, Vec3 *left)
Definition cobj.c:723
void HSD_CObjSetRoll(HSD_CObj *cobj, f32)
void HSD_CObjSetTop(HSD_CObj *cobj, f32 top)
void HSD_CObjSetDefaultClass(HSD_ClassInfo *info)
Definition cobj.c:1215
void HSD_CObjReqAnim(HSD_CObj *cobj, f32 startframe)
HSD_CObj * HSD_CObjLoadDesc(HSD_CObjDesc *desc)
Definition cobj.c:1289
void HSD_CObjGetPerspective(HSD_CObj *cobj, f32 *top, f32 *bottom)
void HSD_CObjRemoveAnim(HSD_CObj *cobj)
Definition cobj.c:94
f32 HSD_CObjGetFar(HSD_CObj *)
Definition cobj.c:1019
static MtxPtr HSD_CObjGetViewingMtxPtrDirect(HSD_CObj *cobj)
Definition cobj.h:222
void HSD_CObjSetScissor(HSD_CObj *cobj, Scissor *)
Definition cobj.c:1042
bool HSD_CObjMtxIsDirty(HSD_CObj *)
Definition cobj.c:768
MtxPtr HSD_CObjGetInvViewingMtxPtrDirect(HSD_CObj *cobj)
Definition cobj.c:780
void HSD_CObjSetupViewingMtx(HSD_CObj *cobj)
Definition cobj.c:466
int HSD_CObjGetProjectionType(HSD_CObj *)
Definition cobj.c:1104
f32 HSD_CObjGetNear(HSD_CObj *)
Definition cobj.c:1004
f32 HSD_CObjGetLeft(HSD_CObj *cobj)
Definition cobj.c:932
f32 HSD_CObjGetBottom(HSD_CObj *cobj)
Definition cobj.c:897
void HSD_CObjSetBottom(HSD_CObj *cobj, f32 bottom)
bool HSD_CObjSetCurrent(HSD_CObj *)
Definition cobj.c:489
void HSD_CObjGetViewingMtx(HSD_CObj *cobj, Mtx mtx)
Definition cobj.c:775
GXProjectionType makeProjectionMtx(HSD_CObj *cobj, Mtx mtx)
Definition cobj.c:202
void HSD_CObjSetEyePosition(HSD_CObj *cobj, Vec3 *)
Definition cobj.c:573
void HSD_CObjSetOrtho(HSD_CObj *, f32 top, f32 bottom, f32 left, f32 right)
void HSD_CObjSetViewport(HSD_CObj *cobj, HSD_RectS16 *viewport)
Definition cobj.c:1073
void HSD_CObjSetNear(HSD_CObj *cobj, f32 near)
void HSD_CObjSetLeft(HSD_CObj *cobj, f32 left)
void HSD_CObjGetViewportf(HSD_CObj *cobj, HSD_RectF32 *)
Definition cobj.c:1062
void HSD_CObjSetAspect(HSD_CObj *cobj, f32 aspect)
struct _cobj_Unk1 cobj_Unk1
Definition cobj.h:145
void HSD_CObjSetFrustum(HSD_CObj *, f32 top, f32 bottom, f32 left, f32 right)
void HSD_CObjSetFar(HSD_CObj *cobj, f32 far)
void HSD_CObjClearFlags(HSD_CObj *, u32)
Definition cobj.c:1202
void HSD_CObjSetPerspective(HSD_CObj *cobj, f32 fov, f32 aspect)
void HSD_CObjGetOrtho(HSD_CObj *, f32 *top, f32 *bottom, f32 *left, f32 *right)
Mtx mtx
Definition ftparts.c:62
Definition aobj.h:50
Definition aobj.h:40
Definition cobj.h:134
HSD_ObjInfo parent
Definition cobj.h:135
int(* load)(HSD_CObj *cobj, HSD_CObjDesc *desc)
Definition cobj.h:136
Definition cobj.h:39
Mtx view_mtx
Definition cobj.h:73
f32 near
Definition cobj.h:50
union HSD_CObj::@308 u
f32 right
Definition cobj.h:62
Vec3 up
Definition cobj.h:48
f32 bottom
Definition cobj.h:60
HSD_WObj * eyepos
Definition cobj.h:44
HSD_Obj parent
Definition cobj.h:40
HSD_RectF32 viewport
Definition cobj.h:42
u8 projection_type
Definition cobj.h:72
f32 left
Definition cobj.h:61
Scissor scissor
Definition cobj.h:43
f32 top
Definition cobj.h:59
struct HSD_CObj::@309::@311 frustum
f32 aspect
Definition cobj.h:55
Mtx * proj_mtx
Definition cobj.h:75
struct HSD_CObj::@309::@310 perspective
union HSD_CObj::@309 projection_param
struct HSD_CObj::@309::@312 ortho
f32 roll
Definition cobj.h:47
HSD_WObj * interest
Definition cobj.h:45
f32 fov
Definition cobj.h:54
f32 far
Definition cobj.h:51
HSD_AObj * aobj
Definition cobj.h:74
u32 flags
Definition cobj.h:41
Definition cobj.h:139
HSD_WObjAnim * interest_anim
Definition cobj.h:142
HSD_AObjDesc * aobjdesc
Definition cobj.h:140
HSD_WObjAnim * eye_anim
Definition cobj.h:141
Definition cobj.h:78
f32 roll
Definition cobj.h:86
u16 projection_type
Definition cobj.h:81
u16 flags
Definition cobj.h:80
Vec3 * up_vector
Definition cobj.h:87
f32 ffar
Definition cobj.h:89
HSD_RectS16 viewport
Definition cobj.h:82
HSD_WObjDesc * eyepos
Definition cobj.h:84
Scissor scissor
Definition cobj.h:83
char * class_name
Definition cobj.h:79
HSD_WObjDesc * interest
Definition cobj.h:85
f32 nnear
Definition cobj.h:88
Definition cobj.h:92
f32 ffar
Definition cobj.h:103
u16 flags
Definition cobj.h:94
HSD_RectS16 viewport
Definition cobj.h:96
f32 right
Definition cobj.h:107
HSD_WObjDesc * eyepos
Definition cobj.h:98
HSD_WObjDesc * interest
Definition cobj.h:99
f32 bottom
Definition cobj.h:105
Scissor scissor
Definition cobj.h:97
f32 left
Definition cobj.h:106
u16 projection_type
Definition cobj.h:95
Vec3 * up_vector
Definition cobj.h:101
f32 roll
Definition cobj.h:100
char * class_name
Definition cobj.h:93
f32 nnear
Definition cobj.h:102
f32 top
Definition cobj.h:104
Definition cobj.h:110
f32 roll
Definition cobj.h:118
u16 flags
Definition cobj.h:112
u16 projection_type
Definition cobj.h:113
HSD_RectS16 viewport
Definition cobj.h:114
f32 aspect
Definition cobj.h:123
HSD_WObjDesc * eyepos
Definition cobj.h:116
f32 fov
Definition cobj.h:122
HSD_WObjDesc * interest
Definition cobj.h:117
f32 nnear
Definition cobj.h:120
char * class_name
Definition cobj.h:111
Vec3 * up_vector
Definition cobj.h:119
f32 ffar
Definition cobj.h:121
Scissor scissor
Definition cobj.h:115
Definition class.h:32
Definition object.h:66
Definition object.h:60
Definition cobj.h:32
f32 xmin
Definition cobj.h:33
f32 xmax
Definition cobj.h:34
f32 ymin
Definition cobj.h:35
f32 ymax
Definition cobj.h:36
Definition cobj.h:25
s16 ymin
Definition cobj.h:28
s16 xmax
Definition cobj.h:27
s16 xmin
Definition cobj.h:26
s16 ymax
Definition cobj.h:29
Definition wobj.h:32
Definition wobj.h:21
Definition wobj.h:13
Definition cobj.h:18
u16 top
Definition cobj.h:21
u16 bottom
Definition cobj.h:22
u16 right
Definition cobj.h:20
u16 left
Definition cobj.h:19
Definition cobj.h:126
HSD_CameraDescFrustum frustum
Definition cobj.h:129
HSD_CameraDescPerspective perspective
Definition cobj.h:131
HSD_CameraDescFrustum ortho
Definition cobj.h:130
char * class_name
Definition cobj.h:127
HSD_CameraDescCommon common
Definition cobj.h:128