SSBM Decomp
Loading...
Searching...
No Matches
lobj.h
Go to the documentation of this file.
1#ifndef SYSDOLPHIN_BASELIB_LOBJ_H
2#define SYSDOLPHIN_BASELIB_LOBJ_H
3
4#include <platform.h>
5
6#include "baselib/debug.h"
7
8#include "baselib/forward.h" // IWYU pragma: export
9
10#include "baselib/object.h"
11
12#include <dolphin/gx.h>
13#include <dolphin/gx/GXEnum.h>
14#include <dolphin/mtx.h>
15
16#define MAX_GXLIGHT 9
17
25
31
39
47
49 f32 a0;
50 f32 a1;
51 f32 a2;
52 f32 k0;
53 f32 k1;
54 f32 k2;
55};
56
57struct HSD_LObj {
58 /* 0x00 - 0x04 */ HSD_Obj parent;
59 /* 0x08 */ u16 flags;
60 /* 0x0A */ u16 priority;
61 /* 0x0C */ HSD_LObj* next;
62 /* 0x10 */ GXColor color;
63 /* 0x14 */ GXColor hw_color;
64 /* 0x18 */ HSD_WObj* position;
65 /* 0x1C */ HSD_WObj* interest;
66 /* 0x20 - 0x34 */ union {
70 } u;
71 /* 0x38 */ f32 shininess;
72 /* 0x3C - 0x44 */ Vec3 lvec;
73 /* 0x48 */ HSD_AObj* aobj;
74 /* 0x4C */ GXLightID id;
75 /* 0x50 */ GXLightObj lightobj;
76 /* 0x90 */ GXLightID spec_id;
77 /* 0x94 */ GXLightObj spec_lightobj;
78};
79
81 /* 0x00 */ char* class_name;
82 /* 0x04 */ HSD_LightDesc* next;
83 /* 0x08 */ u16 flags;
84 /* 0x0A */ u16 attnflags;
85 /* 0x0C */ GXColor color;
88 union {
89 void* p;
94 } u;
95};
96
103
106 int (*load)(HSD_LObj* lobj, HSD_LightDesc* ldesc);
107};
108
109#define HSD_LOBJ(o) ((HSD_LObj*) (o))
110#define HSD_LOBJ_INFO(i) ((HSD_LObjInfo*) (i))
111#define HSD_LOBJ_METHOD(o) HSD_LOBJ_INFO(HSD_OBJECT_METHOD((o)))
112
114{
115 HSD_ASSERT(367, lobj);
116 return lobj->priority;
117}
118
119extern HSD_LObjInfo hsdLobj;
120
121u32 HSD_LObjGetFlags(HSD_LObj* lobj);
122void HSD_LObjSetFlags(HSD_LObj* lobj, u32 flags);
123void HSD_LObjClearFlags(HSD_LObj* lobj, u32 flags);
124GXLightID HSD_LObjGetLightMaskDiffuse(void);
128void HSD_LObjSetActive(HSD_LObj* lobj);
129s32 HSD_LObjGetNbActive(void);
130HSD_LObj* HSD_LObjGetActiveByID(GXLightID id);
132void HSD_LObjClearActive(void);
133
134void LObjUpdateFunc(void* obj, enum_t type, HSD_ObjData* val);
135
136void HSD_LObjAddAnim(HSD_LObj* lobj, HSD_LightAnim* lanim);
137void HSD_LObjAddAnimAll(HSD_LObj* lobj, HSD_LightAnim* lanim);
138void HSD_LObjAnim(HSD_LObj* lobj);
139void HSD_LObjAnimAll(HSD_LObj* lobj);
140void HSD_LObjReqAnim(HSD_LObj* lobj, f32 startframe);
141void HSD_LObjReqAnimAll(HSD_LObj* lobj, f32 startframe);
142void HSD_LObjGetLightVector(HSD_LObj* lobj, Vec3* dir);
143void HSD_LObjSetup(HSD_LObj* lobj, GXColor color, f32 shininess);
144
145bool HSD_LObjGetPosition(HSD_LObj*, Vec3*);
146bool HSD_LObjGetInterest(HSD_LObj*, Vec3*);
147
150void HSD_LObjSetPositionWObj(HSD_LObj* lobj, HSD_WObj* wobj);
151void HSD_LObjSetInterestWObj(HSD_LObj* lobj, HSD_WObj* wobj);
152
153u32 HSD_LightID2Index(GXLightID);
155s32 HSD_Index2LightID(u32);
156void HSD_LObjRemoveAll(HSD_LObj* lobj);
157void HSD_LObjSetPosition(HSD_LObj* lobj, Vec3* position);
158void HSD_LObjSetInterest(HSD_LObj* lobj, Vec3* interest);
159void HSD_LObj_803668EC(HSD_LObj* lobj);
160void HSD_LObjSetupInit(HSD_CObj* arg0);
161
162void HSD_LObjSetColor(HSD_LObj* lobj, GXColor color);
163void HSD_LObjGetColor(HSD_LObj* lobj, GXColor* color);
164void HSD_LObjSetSpot(HSD_LObj* lobj, f32 cutoff, s32 point_func);
165void HSD_LObjSetDistAttn(HSD_LObj* lobj, f32 ref_dist, f32 ref_br,
166 s32 dist_func);
167void HSD_LObjSetAttnA(HSD_LObj* lobj, f32 a0, f32 a1, f32 a2);
168void HSD_LObjSetAttnK(HSD_LObj* lobj, f32 k0, f32 k1, f32 k2);
169void HSD_LObjSetAttn(HSD_LObj* lobj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1,
170 f32 k2);
171
172void HSD_LObjSetupSpecularInit(Mtx pmtx);
173u32 HSD_LObjGetType(HSD_LObj* lobj);
174void HSD_LObjAddCurrent(HSD_LObj* lobj);
175void HSD_LObjUnrefThis(HSD_LObj* lobj);
179
184
185static inline HSD_LObj* HSD_LObjGetNext(HSD_LObj* lobj)
186{
187 if (lobj == NULL) {
188 return NULL;
189 } else {
190 return lobj->next;
191 }
192}
193
194#endif
#define HSD_ASSERT(line, cond)
Definition debug.h:19
void HSD_LObjGetColor(HSD_LObj *lobj, GXColor *color)
Definition lobj.c:804
void HSD_LObjSetAttn(HSD_LObj *lobj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2)
Definition lobj.c:849
void HSD_LObj_803668EC(HSD_LObj *lobj)
Definition lobj.c:700
void HSD_LObjSetColor(HSD_LObj *lobj, GXColor color)
Definition lobj.c:799
void LObjUpdateFunc(void *obj, enum_t type, HSD_ObjData *val)
Definition lobj.c:129
void HSD_LObjAnim(HSD_LObj *lobj)
Definition lobj.c:199
void HSD_LObjClearFlags(HSD_LObj *lobj, u32 flags)
Definition lobj.c:45
void HSD_LObjSetCurrentAll(HSD_LObj *lobj)
Definition lobj.c:675
void HSD_LObjReqAnimAll(HSD_LObj *lobj, f32 startframe)
Definition lobj.c:232
void HSD_LObjDeleteCurrentAll(HSD_LObj *lobj)
Definition lobj.c:663
void HSD_LObjSetDistAttn(HSD_LObj *lobj, f32 ref_dist, f32 ref_br, s32 dist_func)
Definition lobj.c:817
void HSD_LObjSetSpot(HSD_LObj *lobj, f32 cutoff, s32 point_func)
Definition lobj.c:809
void HSD_LObjSetPosition(HSD_LObj *lobj, Vec3 *position)
Definition lobj.c:858
s32 HSD_LObjGetLightMaskSpecular(void)
Definition lobj.c:68
void HSD_LObjSetFlags(HSD_LObj *lobj, u32 flags)
Definition lobj.c:37
void HSD_LObjAddAnim(HSD_LObj *lobj, HSD_LightAnim *lanim)
Definition lobj.c:1021
void HSD_LObjSetPositionWObj(HSD_LObj *lobj, HSD_WObj *wobj)
Definition lobj.c:932
HSD_LObj * HSD_LObjGetActiveByIndex(s32 idx)
Definition lobj.c:109
s32 HSD_LObjGetNbActive(void)
Definition lobj.c:94
HSD_WObj * HSD_LObjGetPositionWObj(HSD_LObj *lobj)
Definition lobj.c:916
u32 HSD_LObjGetFlags(HSD_LObj *lobj)
Definition lobj.c:32
void HSD_LObjRemoveAll(HSD_LObj *lobj)
Definition lobj.c:785
void HSD_LObjSetInterest(HSD_LObj *lobj, Vec3 *interest)
Definition lobj.c:877
void HSD_LObjDeleteCurrent(HSD_LObj *lobj)
Definition lobj.c:630
void HSD_LObjReqAnim(HSD_LObj *lobj, f32 startframe)
Definition lobj.c:221
void HSD_LObjSetDefaultClass(HSD_LObjInfo *info)
Definition lobj.c:896
void HSD_LObjClearActive(void)
Definition lobj.c:118
void HSD_LObjSetAttnA(HSD_LObj *lobj, f32 a0, f32 a1, f32 a2)
Definition lobj.c:827
bool HSD_LObjGetPosition(HSD_LObj *, Vec3 *)
Definition lobj.c:868
HSD_LObjInfo * HSD_LObjGetDefaultClass(void)
Definition lobj.c:904
void HSD_LObjUnrefThis(HSD_LObj *lobj)
Definition lobj.c:620
HSD_LObj * HSD_LObjLoadDesc(HSD_LightDesc *ldesc)
Definition lobj.c:998
u32 HSD_LightID2Index(GXLightID)
Definition lobj.c:721
void HSD_LObjSetInterestWObj(HSD_LObj *lobj, HSD_WObj *wobj)
Definition lobj.c:942
void HSD_LObjSetAttnK(HSD_LObj *lobj, f32 k0, f32 k1, f32 k2)
Definition lobj.c:838
HSD_LObjInfo hsdLobj
GXLightID HSD_LObjGetLightMaskDiffuse(void)
Definition lobj.c:53
void HSD_LObjAddCurrent(HSD_LObj *lobj)
Definition lobj.c:596
static HSD_LObj * HSD_LObjGetNext(HSD_LObj *lobj)
Definition lobj.h:185
void HSD_LObjSetupInit(HSD_CObj *arg0)
Definition lobj.c:477
u32 HSD_LObjGetType(HSD_LObj *lobj)
Definition lobj.c:73
HSD_LObj * HSD_LObjGetCurrentByType(u16 type)
Definition lobj.c:707
HSD_LObj * HSD_LObjGetActiveByID(GXLightID id)
Definition lobj.c:99
u8 HSD_LObjGetPriority(HSD_LObj *lobj)
Definition lobj.h:113
s32 HSD_LObjGetLightMaskAlpha(void)
Definition lobj.c:63
s32 HSD_Index2LightID(u32)
Definition lobj.c:759
void HSD_LObjGetLightVector(HSD_LObj *lobj, Vec3 *dir)
Definition lobj.c:248
s32 HSD_LObjGetLightMaskAttnFunc(void)
Definition lobj.c:58
bool HSD_LObjGetInterest(HSD_LObj *, Vec3 *)
Definition lobj.c:887
void HSD_LObjAddAnimAll(HSD_LObj *lobj, HSD_LightAnim *lanim)
Definition lobj.c:1037
void HSD_LObjAnimAll(HSD_LObj *lobj)
Definition lobj.c:208
void HSD_LObjSetup(HSD_LObj *lobj, GXColor color, f32 shininess)
Definition lobj.c:267
void HSD_LObjSetActive(HSD_LObj *lobj)
Definition lobj.c:78
HSD_LObj * HSD_LObjAlloc(void)
Definition lobj.c:909
HSD_WObj * HSD_LObjGetInterestWObj(HSD_LObj *lobj)
Definition lobj.c:924
void HSD_LObjSetupSpecularInit(Mtx pmtx)
Definition lobj.c:306
int enum_t
The underlying type of an enum, used as a placeholder.
Definition platform.h:9
void * obj
Definition pobj.c:43
f32 shininess
Definition state.c:46
#define NULL
Definition stddef.h:19
Definition aobj.h:51
Definition aobj.h:41
Definition cobj.h:39
Definition lobj.h:104
HSD_ObjInfo parent
Definition lobj.h:105
int(* load)(HSD_LObj *lobj, HSD_LightDesc *ldesc)
Definition lobj.h:106
Definition lobj.h:57
HSD_LightAttn attn
Definition lobj.h:69
HSD_LightSpot spot
Definition lobj.h:68
u16 priority
Definition lobj.h:60
HSD_LightPoint point
Definition lobj.h:67
u16 flags
Definition lobj.h:59
GXColor color
Definition lobj.h:62
HSD_WObj * interest
Definition lobj.h:65
HSD_Obj parent
Definition lobj.h:58
HSD_WObj * position
Definition lobj.h:64
GXLightID id
Definition lobj.h:74
Vec3 lvec
Definition lobj.h:72
HSD_LObj * next
Definition lobj.h:61
GXLightObj spec_lightobj
Definition lobj.h:77
union HSD_LObj::@358 u
HSD_AObj * aobj
Definition lobj.h:73
GXColor hw_color
Definition lobj.h:63
GXLightObj lightobj
Definition lobj.h:75
GXLightID spec_id
Definition lobj.h:76
f32 shininess
Definition lobj.h:71
Definition lobj.h:97
HSD_AObjDesc * aobjdesc
Definition lobj.h:99
HSD_LightAnim * next
Definition lobj.h:98
HSD_WObjAnim * position_anim
Definition lobj.h:100
HSD_WObjAnim * interest_anim
Definition lobj.h:101
Definition lobj.h:48
f32 a0
Definition lobj.h:49
f32 k2
Definition lobj.h:54
f32 k1
Definition lobj.h:53
f32 a2
Definition lobj.h:51
f32 k0
Definition lobj.h:52
f32 a1
Definition lobj.h:50
Definition lobj.h:80
void * p
Definition lobj.h:89
HSD_WObjDesc * position
Definition lobj.h:86
u16 flags
Definition lobj.h:83
HSD_WObjDesc * interest
Definition lobj.h:87
GXColor color
Definition lobj.h:85
HSD_LightSpotDesc * spot
Definition lobj.h:92
f32 * shininess
Definition lobj.h:90
union HSD_LightDesc::@359 u
HSD_LightPointDesc * point
Definition lobj.h:91
u16 attnflags
Definition lobj.h:84
char * class_name
Definition lobj.h:81
HSD_LightDesc * next
Definition lobj.h:82
HSD_LightAttn * attn
Definition lobj.h:93
Definition lobj.h:26
f32 ref_br
Definition lobj.h:27
u32 dist_func
Definition lobj.h:29
f32 ref_dist
Definition lobj.h:28
Definition lobj.h:18
f32 cutoff
Definition lobj.h:19
f32 ref_dist
Definition lobj.h:22
u32 point_func
Definition lobj.h:20
f32 ref_br
Definition lobj.h:21
u32 dist_func
Definition lobj.h:23
Definition lobj.h:40
u32 spot_func
Definition lobj.h:42
f32 ref_br
Definition lobj.h:43
f32 ref_dist
Definition lobj.h:44
u32 dist_func
Definition lobj.h:45
f32 cutoff
Definition lobj.h:41
Definition lobj.h:32
u32 spot_func
Definition lobj.h:34
f32 ref_br
Definition lobj.h:35
f32 ref_dist
Definition lobj.h:36
u32 dist_func
Definition lobj.h:37
f32 cutoff
Definition lobj.h:33
Definition object.h:66
Definition object.h:60
Definition wobj.h:33
Definition wobj.h:22
Definition wobj.h:14
Definition fobj.h:65