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 <Runtime/platform.h>
5
6#include <sysdolphin/baselib/forward.h> // IWYU pragma: export
7
8#include <dolphin/gx/GXEnum.h>
9#include <dolphin/mtx.h>
11
12#define PROJ_PERSPECTIVE 1
13#define PROJ_FRUSTUM 2
14#define PROJ_ORTHO 3
15
16typedef struct _Scissor {
21} Scissor;
22
23typedef struct _HSD_RectS16 {
29
30typedef struct _HSD_RectF32 {
36
37struct HSD_CObj {
38 /* +0 */ HSD_Obj parent;
39 /* +8 */ u32 flags;
41 /* +1C */ Scissor scissor;
42 /* +24 */ HSD_WObj* eyepos;
43 /* +28 */ HSD_WObj* interest;
44 union {
45 /* +2C */ f32 roll;
46 /* +2C */ Vec3 up;
47 } u;
48 /* +38 */ f32 near;
49 /* +3C */ f32 far;
50 union {
51 struct {
55
56 struct {
62
63 struct {
64 f32 top;
65 f32 bottom;
66 f32 left;
67 f32 right;
71 /* +54 */ Mtx view_mtx;
72 /* +84 */ HSD_AObj* aobj;
73 /* +88 */ Mtx* proj_mtx;
74};
75
89
107
123
132
137
143
144typedef struct _cobj_Unk1 cobj_Unk1;
145
146#define HSD_COBJ(o) ((HSD_CObj*) (o))
147#define HSD_COBJ_INFO(i) ((HSD_CObjInfo*) (i))
148#define HSD_COBJ_METHOD(o) HSD_COBJ_INFO(HSD_OBJECT_METHOD(o))
149
150void HSD_CObjEraseScreen(HSD_CObj* cobj, s32 enable_color, s32 enable_alpha,
151 s32 enable_depth);
152void HSD_CObjRemoveAnim(HSD_CObj* cobj);
157void HSD_CObjSetInterest(HSD_CObj* cobj, Vec3*);
160void HSD_CObjEndCurrent(void);
162void HSD_CObjGetEyePosition(HSD_CObj* cobj, Vec3* cam_pos);
163int HSD_CObjGetEyeVector(HSD_CObj* cobj, Vec3* eye);
164int HSD_CObjGetUpVector(HSD_CObj* cobj, Vec3* up);
167
168void HSD_CObjRemoveAnimByFlags(HSD_CObj* cobj, u32 flags);
169void HSD_CObjAddAnim(HSD_CObj* cobj, HSD_CameraAnim* canim);
170void HSD_CObjAnim(HSD_CObj* cobj);
171void HSD_CObjReqAnim(HSD_CObj* cobj, f32 startframe);
175void HSD_CObjSetUpVector(HSD_CObj* cobj, Vec3* up);
176int HSD_CObjGetLeftVector(HSD_CObj* cobj, Vec3* left);
177void HSD_CObjSetMtxDirty(HSD_CObj* cobj);
183void HSD_CObjSetRoll(HSD_CObj* cobj, f32);
187void HSD_CObjSetAspect(HSD_CObj* cobj, f32 aspect);
189void HSD_CObjSetTop(HSD_CObj* cobj, f32 top);
191void HSD_CObjSetBottom(HSD_CObj* cobj, f32 bottom);
193void HSD_CObjSetLeft(HSD_CObj* cobj, f32 left);
195void HSD_CObjSetRight(HSD_CObj* cobj, f32 right);
197void HSD_CObjSetNear(HSD_CObj* cobj, f32 near);
199void HSD_CObjSetFar(HSD_CObj* cobj, f32 far);
202void HSD_CObjSetScissorx4(HSD_CObj*, u16 left, u16 right, u16 top, u16 bottom);
204void HSD_CObjSetViewport(HSD_CObj* cobj, HSD_RectS16* viewport);
208void HSD_CObjSetPerspective(HSD_CObj* cobj, f32 fov, f32 aspect);
209void HSD_CObjSetFrustum(HSD_CObj*, f32 top, f32 bottom, f32 left, f32 right);
210void HSD_CObjSetOrtho(HSD_CObj*, f32 top, f32 bottom, f32 left, f32 right);
211void HSD_CObjGetPerspective(HSD_CObj* cobj, f32* top, f32* bottom);
212void HSD_CObjGetOrtho(HSD_CObj*, f32* top, f32* bottom, f32* left, f32* right);
220
222{
223 return cobj->view_mtx;
224}
225
226#endif
GXProjectionType
Definition GXEnum.h:15
void HSD_CObjSetRight(HSD_CObj *cobj, f32 right)
Definition cobj.c:1016
int HSD_CObjGetUpVector(HSD_CObj *cobj, Vec3 *up)
Definition cobj.c:688
void HSD_CObjGetInterest(HSD_CObj *cobj, Vec3 *interest)
Definition cobj.c:547
HSD_WObj * HSD_CObjGetEyePositionWObj(HSD_CObj *cobj)
Definition cobj.c:535
MtxPtr HSD_CObjGetInvViewingMtxPtr(HSD_CObj *cobj)
Definition cobj.c:813
void HSD_CObjGetEyePosition(HSD_CObj *cobj, Vec3 *cam_pos)
Definition cobj.c:559
void HSD_CObjRemoveAnimByFlags(HSD_CObj *cobj, u32 flags)
Definition cobj.c:75
HSD_WObj * HSD_CObjGetInterestWObj(HSD_CObj *cobj)
Definition cobj.c:523
void HSD_CObjSetMtxDirty(HSD_CObj *cobj)
Definition cobj.c:754
void HSD_CObjAnim(HSD_CObj *cobj)
Definition cobj.c:173
void HSD_CObjSetInterestWObj(HSD_CObj *cobj, HSD_WObj *interest)
Definition cobj.c:529
void HSD_CObjSetUpVector(HSD_CObj *cobj, Vec3 *up)
Definition cobj.c:707
void HSD_CObjSetProjectionType(HSD_CObj *, u32)
Definition cobj.c:1141
HSD_CObj * HSD_CObjGetCurrent(void)
Definition cobj.c:1239
void HSD_CObjEndCurrent(void)
Definition cobj.c:517
void HSD_CObjSetViewportfx4(HSD_CObj *, f32, f32, f32, f32)
Definition cobj.c:1121
void HSD_CObjSetFlags(HSD_CObj *, u32)
Definition cobj.c:1223
GXProjectionType makeProjectionMtx(HSD_CObj *cobj, Mtx44 mtx)
Definition cobj.c:199
void HSD_CObjSetInterest(HSD_CObj *cobj, Vec3 *)
Definition cobj.c:553
void HSD_CObjEraseScreen(HSD_CObj *cobj, s32 enable_color, s32 enable_alpha, s32 enable_depth)
Definition cobj.c:34
void HSD_CObjAddAnim(HSD_CObj *cobj, HSD_CameraAnim *canim)
Definition cobj.c:100
f32 HSD_CObjGetTop(HSD_CObj *cobj)
Definition cobj.c:884
f32 HSD_CObjGetFov(HSD_CObj *cobj)
Definition cobj.c:852
void HSD_CObjGetScissor(HSD_CObj *cobj, Scissor *)
Definition cobj.c:1063
void HSD_CObjInit(HSD_CObj *cobj, HSD_CObjDesc *desc)
Definition cobj.c:1310
void HSD_CObjSetScissorx4(HSD_CObj *, u16 left, u16 right, u16 top, u16 bottom)
Definition cobj.c:1079
f32 HSD_CObjGetAspect(HSD_CObj *cobj)
Definition cobj.c:868
void HSD_CObjSetFov(HSD_CObj *, f32)
Definition cobj.c:860
HSD_CObj * HSD_CObjAlloc(void)
Definition cobj.c:1254
void HSD_CObjSetEyePositionWObj(HSD_CObj *cobj, HSD_WObj *eyepos)
Definition cobj.c:541
MtxPtr HSD_CObjGetViewingMtxPtr(HSD_CObj *cobj)
Definition cobj.c:793
u32 HSD_CObjGetFlags(HSD_CObj *cobj)
Definition cobj.c:1218
int HSD_CObjGetEyeVector(HSD_CObj *cobj, Vec3 *eye)
Definition cobj.c:571
f32 HSD_CObjGetEyeDistance(HSD_CObj *cobj)
Definition cobj.c:592
void HSD_CObjSetViewportf(HSD_CObj *cobj, HSD_RectF32 *)
Definition cobj.c:1113
f32 HSD_CObjGetRight(HSD_CObj *cobj)
Definition cobj.c:997
int HSD_CObjGetLeftVector(HSD_CObj *cobj, Vec3 *left)
Definition cobj.c:731
void HSD_CObjSetRoll(HSD_CObj *cobj, f32)
Definition cobj.c:833
void HSD_CObjSetTop(HSD_CObj *cobj, f32 top)
Definition cobj.c:909
void HSD_CObjSetDefaultClass(HSD_ClassInfo *info)
Definition cobj.c:1244
void HSD_CObjReqAnim(HSD_CObj *cobj, f32 startframe)
Definition cobj.c:184
HSD_CObj * HSD_CObjLoadDesc(HSD_CObjDesc *desc)
Definition cobj.c:1318
void HSD_CObjGetPerspective(HSD_CObj *cobj, f32 *top, f32 *bottom)
Definition cobj.c:1185
void HSD_CObjRemoveAnim(HSD_CObj *cobj)
Definition cobj.c:91
f32 HSD_CObjGetFar(HSD_CObj *)
Definition cobj.c:1048
static MtxPtr HSD_CObjGetViewingMtxPtrDirect(HSD_CObj *cobj)
Definition cobj.h:221
void HSD_CObjSetScissor(HSD_CObj *cobj, Scissor *)
Definition cobj.c:1071
bool HSD_CObjMtxIsDirty(HSD_CObj *)
Definition cobj.c:759
MtxPtr HSD_CObjGetInvViewingMtxPtrDirect(HSD_CObj *cobj)
Definition cobj.c:781
void HSD_CObjSetupViewingMtx(HSD_CObj *cobj)
Definition cobj.c:463
int HSD_CObjGetProjectionType(HSD_CObj *)
Definition cobj.c:1133
f32 HSD_CObjGetNear(HSD_CObj *)
Definition cobj.c:1033
f32 HSD_CObjGetLeft(HSD_CObj *cobj)
Definition cobj.c:961
f32 HSD_CObjGetBottom(HSD_CObj *cobj)
Definition cobj.c:926
void HSD_CObjSetBottom(HSD_CObj *cobj, f32 bottom)
Definition cobj.c:944
bool HSD_CObjSetCurrent(HSD_CObj *)
Definition cobj.c:481
void HSD_CObjGetViewingMtx(HSD_CObj *cobj, Mtx mtx)
Definition cobj.c:776
void HSD_CObjSetEyePosition(HSD_CObj *cobj, Vec3 *)
Definition cobj.c:565
void HSD_CObjSetOrtho(HSD_CObj *, f32 top, f32 bottom, f32 left, f32 right)
Definition cobj.c:1172
void HSD_CObjSetViewport(HSD_CObj *cobj, HSD_RectS16 *viewport)
Uses s16 -> float cast literal.
Definition cobj.c:1102
void HSD_CObjSetNear(HSD_CObj *cobj, f32 near)
Definition cobj.c:1041
void HSD_CObjSetLeft(HSD_CObj *cobj, f32 left)
Definition cobj.c:980
void HSD_CObjGetViewportf(HSD_CObj *cobj, HSD_RectF32 *)
Definition cobj.c:1091
void HSD_CObjSetAspect(HSD_CObj *cobj, f32 aspect)
Definition cobj.c:876
struct _cobj_Unk1 cobj_Unk1
Definition cobj.h:144
void HSD_CObjSetFrustum(HSD_CObj *, f32 top, f32 bottom, f32 left, f32 right)
Definition cobj.c:1159
void HSD_CObjSetFar(HSD_CObj *cobj, f32 far)
Definition cobj.c:1056
void HSD_CObjClearFlags(HSD_CObj *, u32)
Definition cobj.c:1231
void HSD_CObjSetPerspective(HSD_CObj *cobj, f32 fov, f32 aspect)
Definition cobj.c:1149
void HSD_CObjGetOrtho(HSD_CObj *, f32 *top, f32 *bottom, f32 *left, f32 *right)
Definition cobj.c:1198
f32(* MtxPtr)[4]
Definition mtx.h:53
struct Vec Vec3
f32 Mtx44[4][4]
Definition mtx.h:51
f32 Mtx[3][4]
Definition mtx.h:50
unsigned long u32
Definition types.h:9
signed short int s16
Definition types.h:6
float f32
Definition types.h:13
unsigned short int u16
Definition types.h:7
signed long s32
Definition types.h:8
unsigned char u8
Definition types.h:5
Mtx mtx
Definition ftparts.static.h:8
static HSD_WObjDesc eyepos
Definition if_2FF2.c:19
static HSD_WObjDesc interest
Definition if_2FF2.c:25
u8 desc[6][3]
Definition mnruleplus.c:98
#define ASSERT_SIZE(expr, size)
Definition platform.h:161
Definition aobj.h:50
Definition aobj.h:40
Definition cobj.h:133
HSD_ObjInfo parent
Definition cobj.h:134
int(* load)(HSD_CObj *cobj, HSD_CObjDesc *desc)
Definition cobj.h:135
Definition cobj.h:37
Mtx view_mtx
Definition cobj.h:71
f32 near
Definition cobj.h:48
union HSD_CObj::@360000322223224302312170306325200023030360275173 u
f32 right
Definition cobj.h:60
Vec3 up
Definition cobj.h:46
f32 bottom
Definition cobj.h:58
HSD_WObj * eyepos
Definition cobj.h:42
HSD_Obj parent
Definition cobj.h:38
HSD_RectF32 viewport
Definition cobj.h:40
u8 projection_type
Definition cobj.h:70
f32 left
Definition cobj.h:59
Scissor scissor
Definition cobj.h:41
struct HSD_CObj::@175060377307143351056130360217322150032110025204::@354130104020106046136003102101232004105366046352 ortho
union HSD_CObj::@175060377307143351056130360217322150032110025204 projection_param
f32 top
Definition cobj.h:57
f32 aspect
Definition cobj.h:53
Mtx * proj_mtx
Definition cobj.h:73
f32 roll
Definition cobj.h:45
struct HSD_CObj::@175060377307143351056130360217322150032110025204::@237103032273262174025303042223034125173153222277 frustum
HSD_WObj * interest
Definition cobj.h:43
f32 fov
Definition cobj.h:52
struct HSD_CObj::@175060377307143351056130360217322150032110025204::@320276262202171054212240013024320240317253102323 perspective
f32 far
Definition cobj.h:49
HSD_AObj * aobj
Definition cobj.h:72
u32 flags
Definition cobj.h:39
Definition cobj.h:138
HSD_WObjAnim * interest_anim
Definition cobj.h:141
HSD_AObjDesc * aobjdesc
Definition cobj.h:139
HSD_WObjAnim * eye_anim
Definition cobj.h:140
Definition cobj.h:76
f32 roll
Definition cobj.h:84
u16 projection_type
Definition cobj.h:79
u16 flags
Definition cobj.h:78
Vec3 * up_vector
Definition cobj.h:85
f32 ffar
Definition cobj.h:87
HSD_RectS16 viewport
Definition cobj.h:80
HSD_WObjDesc * eyepos
Definition cobj.h:82
Scissor scissor
Definition cobj.h:81
char * class_name
Definition cobj.h:77
HSD_WObjDesc * interest
Definition cobj.h:83
f32 nnear
Definition cobj.h:86
Definition cobj.h:90
f32 ffar
Definition cobj.h:101
u16 flags
Definition cobj.h:92
HSD_RectS16 viewport
Definition cobj.h:94
f32 right
Definition cobj.h:105
HSD_WObjDesc * eyepos
Definition cobj.h:96
HSD_WObjDesc * interest
Definition cobj.h:97
f32 bottom
Definition cobj.h:103
Scissor scissor
Definition cobj.h:95
f32 left
Definition cobj.h:104
u16 projection_type
Definition cobj.h:93
Vec3 * up_vector
Definition cobj.h:99
f32 roll
Definition cobj.h:98
char * class_name
Definition cobj.h:91
f32 nnear
Definition cobj.h:100
f32 top
Definition cobj.h:102
Definition cobj.h:108
f32 roll
Definition cobj.h:116
u16 flags
Definition cobj.h:110
u16 projection_type
Definition cobj.h:111
HSD_RectS16 viewport
Definition cobj.h:112
f32 aspect
Definition cobj.h:121
HSD_WObjDesc * eyepos
Definition cobj.h:114
f32 fov
Definition cobj.h:120
HSD_WObjDesc * interest
Definition cobj.h:115
f32 nnear
Definition cobj.h:118
char * class_name
Definition cobj.h:109
Vec3 * up_vector
Definition cobj.h:117
f32 ffar
Definition cobj.h:119
Scissor scissor
Definition cobj.h:113
Definition class.h:32
Definition object.h:66
Definition object.h:60
Definition cobj.h:30
f32 xmin
Definition cobj.h:31
f32 xmax
Definition cobj.h:32
f32 ymin
Definition cobj.h:33
f32 ymax
Definition cobj.h:34
Definition cobj.h:23
s16 ymin
Definition cobj.h:26
s16 xmax
Definition cobj.h:25
s16 xmin
Definition cobj.h:24
s16 ymax
Definition cobj.h:27
Definition wobj.h:31
Definition wobj.h:20
Definition wobj.h:12
Definition cobj.h:16
u16 top
Definition cobj.h:19
u16 bottom
Definition cobj.h:20
u16 right
Definition cobj.h:18
u16 left
Definition cobj.h:17
Definition cobj.h:124
HSD_CameraDescFrustum frustum
Definition cobj.h:127
HSD_CameraDescPerspective perspective
Definition cobj.h:129
HSD_CameraDescFrustum ortho
Definition cobj.h:128
char * class_name
Definition cobj.h:125
HSD_CameraDescCommon common
Definition cobj.h:126