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/forward.h" // IWYU pragma: export
7
8#include "baselib/debug.h"
9#include "baselib/object.h"
10
11#include <dolphin/gx/GXEnum.h>
12#include <dolphin/gx/GXLight.h>
13#include <dolphin/gx/types.h>
14#include <dolphin/mtx/types.h>
15
23
29
37
45
54
55struct HSD_LObj {
56 /* 0x00 - 0x04 */ HSD_Obj parent;
57 /* 0x08 */ u16 flags;
58 /* 0x0A */ u16 priority;
59 /* 0x0C */ HSD_LObj* next;
60 /* 0x10 */ GXColor color;
61 /* 0x14 */ GXColor hw_color;
62 /* 0x18 */ HSD_WObj* position;
63 /* 0x1C */ HSD_WObj* interest;
64 /* 0x20 - 0x34 */ union {
68 } u;
69 /* 0x38 */ f32 shininess;
70 /* 0x3C - 0x44 */ Vec3 lvec;
71 /* 0x48 */ HSD_AObj* aobj;
72 /* 0x4C */ GXLightID id;
73 /* 0x50 */ GXLightObj lightobj;
74 /* 0x90 */ GXLightID spec_id;
76};
77
79 /* 0x00 */ char* class_name;
80 /* 0x04 */ HSD_LightDesc* next;
81 /* 0x08 */ u16 flags;
82 /* 0x0A */ u16 attnflags;
83 /* 0x0C */ GXColor color;
86 union {
87 void* p;
92 } u;
93};
94
101
104 int (*load)(HSD_LObj* lobj, HSD_LightDesc* ldesc);
105};
106
107#define HSD_LOBJ(o) ((HSD_LObj*) (o))
108#define HSD_LOBJ_INFO(i) ((HSD_LObjInfo*) (i))
109#define HSD_LOBJ_METHOD(o) HSD_LOBJ_INFO(HSD_OBJECT_METHOD((o)))
110
112{
113 HSD_ASSERT(367, lobj);
114 return lobj->priority;
115}
116
117extern HSD_LObjInfo hsdLobj;
118
120void HSD_LObjSetFlags(HSD_LObj* lobj, u32 flags);
121void HSD_LObjClearFlags(HSD_LObj* lobj, u32 flags);
126void HSD_LObjSetActive(HSD_LObj* lobj);
130void HSD_LObjClearActive(void);
131
132void LObjUpdateFunc(void* obj, enum_t type, HSD_ObjData* val);
133
134void HSD_LObjAddAnim(HSD_LObj* lobj, HSD_LightAnim* lanim);
135void HSD_LObjAddAnimAll(HSD_LObj* lobj, HSD_LightAnim* lanim);
136void HSD_LObjAnim(HSD_LObj* lobj);
137void HSD_LObjAnimAll(HSD_LObj* lobj);
138void HSD_LObjReqAnim(HSD_LObj* lobj, f32 startframe);
139void HSD_LObjReqAnimAll(HSD_LObj* lobj, f32 startframe);
140void HSD_LObjGetLightVector(HSD_LObj* lobj, Vec3* dir);
141void HSD_LObjSetup(HSD_LObj* lobj, GXColor color, f32 shininess);
142
145
148void HSD_LObjSetPositionWObj(HSD_LObj* lobj, HSD_WObj* wobj);
149void HSD_LObjSetInterestWObj(HSD_LObj* lobj, HSD_WObj* wobj);
150
154void HSD_LObjRemoveAll(HSD_LObj* lobj);
155void HSD_LObjSetPosition(HSD_LObj* lobj, Vec3* position);
156void HSD_LObjSetInterest(HSD_LObj* lobj, Vec3* interest);
157void HSD_LObj_803668EC(HSD_LObj* lobj);
158void HSD_LObjSetupInit(HSD_CObj* arg0);
159
160void HSD_LObjSetColor(HSD_LObj* lobj, GXColor color);
161void HSD_LObjGetColor(HSD_LObj* lobj, GXColor* color);
162void HSD_LObjSetSpot(HSD_LObj* lobj, f32 cutoff, s32 point_func);
163void HSD_LObjSetDistAttn(HSD_LObj* lobj, f32 ref_dist, f32 ref_br,
164 s32 dist_func);
165void HSD_LObjSetAttnA(HSD_LObj* lobj, f32 a0, f32 a1, f32 a2);
166void HSD_LObjSetAttnK(HSD_LObj* lobj, f32 k0, f32 k1, f32 k2);
167void HSD_LObjSetAttn(HSD_LObj* lobj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1,
168 f32 k2);
169
172void HSD_LObjAddCurrent(HSD_LObj* lobj);
173void HSD_LObjUnrefThis(HSD_LObj* lobj);
177
182
183static inline HSD_LObj* HSD_LObjGetNext(HSD_LObj* lobj)
184{
185 if (lobj == NULL) {
186 return NULL;
187 } else {
188 return lobj->next;
189 }
190}
191
192#endif
GXLightID
Definition GXEnum.h:470
#define HSD_ASSERT(line, cond)
Definition debug.h:21
f32 Mtx[3][4]
Definition forward.h:6
void HSD_LObjGetColor(HSD_LObj *lobj, GXColor *color)
Definition lobj.c:805
void HSD_LObjSetAttn(HSD_LObj *lobj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2)
Definition lobj.c:850
void HSD_LObj_803668EC(HSD_LObj *lobj)
Definition lobj.c:701
void HSD_LObjSetColor(HSD_LObj *lobj, GXColor color)
Definition lobj.c:800
void LObjUpdateFunc(void *obj, enum_t type, HSD_ObjData *val)
Definition lobj.c:130
void HSD_LObjAnim(HSD_LObj *lobj)
Definition lobj.c:200
void HSD_LObjClearFlags(HSD_LObj *lobj, u32 flags)
Definition lobj.c:46
void HSD_LObjSetCurrentAll(HSD_LObj *lobj)
Definition lobj.c:676
void HSD_LObjReqAnimAll(HSD_LObj *lobj, f32 startframe)
Definition lobj.c:233
void HSD_LObjDeleteCurrentAll(HSD_LObj *lobj)
Definition lobj.c:664
void HSD_LObjSetDistAttn(HSD_LObj *lobj, f32 ref_dist, f32 ref_br, s32 dist_func)
Definition lobj.c:818
void HSD_LObjSetSpot(HSD_LObj *lobj, f32 cutoff, s32 point_func)
Definition lobj.c:810
void HSD_LObjSetPosition(HSD_LObj *lobj, Vec3 *position)
Definition lobj.c:859
s32 HSD_LObjGetLightMaskSpecular(void)
Definition lobj.c:69
void HSD_LObjSetFlags(HSD_LObj *lobj, u32 flags)
Definition lobj.c:38
void HSD_LObjAddAnim(HSD_LObj *lobj, HSD_LightAnim *lanim)
Definition lobj.c:1022
void HSD_LObjSetPositionWObj(HSD_LObj *lobj, HSD_WObj *wobj)
Definition lobj.c:933
HSD_LObj * HSD_LObjGetActiveByIndex(s32 idx)
Definition lobj.c:110
s32 HSD_LObjGetNbActive(void)
Definition lobj.c:95
HSD_WObj * HSD_LObjGetPositionWObj(HSD_LObj *lobj)
Definition lobj.c:917
u32 HSD_LObjGetFlags(HSD_LObj *lobj)
Definition lobj.c:33
void HSD_LObjRemoveAll(HSD_LObj *lobj)
Definition lobj.c:786
void HSD_LObjSetInterest(HSD_LObj *lobj, Vec3 *interest)
Definition lobj.c:878
void HSD_LObjDeleteCurrent(HSD_LObj *lobj)
Definition lobj.c:631
void HSD_LObjReqAnim(HSD_LObj *lobj, f32 startframe)
Definition lobj.c:222
void HSD_LObjSetDefaultClass(HSD_LObjInfo *info)
Definition lobj.c:897
void HSD_LObjClearActive(void)
Definition lobj.c:119
void HSD_LObjSetAttnA(HSD_LObj *lobj, f32 a0, f32 a1, f32 a2)
Definition lobj.c:828
bool HSD_LObjGetPosition(HSD_LObj *, Vec3 *)
Definition lobj.c:869
HSD_LObjInfo * HSD_LObjGetDefaultClass(void)
Definition lobj.c:905
void HSD_LObjUnrefThis(HSD_LObj *lobj)
Definition lobj.c:621
HSD_LObj * HSD_LObjLoadDesc(HSD_LightDesc *ldesc)
Definition lobj.c:999
u32 HSD_LightID2Index(GXLightID)
Definition lobj.c:722
void HSD_LObjSetInterestWObj(HSD_LObj *lobj, HSD_WObj *wobj)
Definition lobj.c:943
void HSD_LObjSetAttnK(HSD_LObj *lobj, f32 k0, f32 k1, f32 k2)
Definition lobj.c:839
HSD_LObjInfo hsdLobj
GXLightID HSD_LObjGetLightMaskDiffuse(void)
Definition lobj.c:54
void HSD_LObjAddCurrent(HSD_LObj *lobj)
Definition lobj.c:597
static HSD_LObj * HSD_LObjGetNext(HSD_LObj *lobj)
Definition lobj.h:183
void HSD_LObjSetupInit(HSD_CObj *arg0)
Definition lobj.c:478
u32 HSD_LObjGetType(HSD_LObj *lobj)
Definition lobj.c:74
HSD_LObj * HSD_LObjGetCurrentByType(u16 type)
Definition lobj.c:708
HSD_LObj * HSD_LObjGetActiveByID(GXLightID id)
Definition lobj.c:100
u8 HSD_LObjGetPriority(HSD_LObj *lobj)
Definition lobj.h:111
s32 HSD_LObjGetLightMaskAlpha(void)
Definition lobj.c:64
s32 HSD_Index2LightID(u32)
Definition lobj.c:760
void HSD_LObjGetLightVector(HSD_LObj *lobj, Vec3 *dir)
Definition lobj.c:249
s32 HSD_LObjGetLightMaskAttnFunc(void)
Definition lobj.c:59
bool HSD_LObjGetInterest(HSD_LObj *, Vec3 *)
Definition lobj.c:888
void HSD_LObjAddAnimAll(HSD_LObj *lobj, HSD_LightAnim *lanim)
Definition lobj.c:1038
void HSD_LObjAnimAll(HSD_LObj *lobj)
Definition lobj.c:209
void HSD_LObjSetup(HSD_LObj *lobj, GXColor color, f32 shininess)
Definition lobj.c:268
void HSD_LObjSetActive(HSD_LObj *lobj)
Definition lobj.c:79
HSD_LObj * HSD_LObjAlloc(void)
Definition lobj.c:910
HSD_WObj * HSD_LObjGetInterestWObj(HSD_LObj *lobj)
Definition lobj.c:925
void HSD_LObjSetupSpecularInit(Mtx pmtx)
Definition lobj.c:307
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
float f32
A 32-bit floating-point number.
Definition platform.h:62
unsigned short u16
An unsigned 16-bit integer.
Definition platform.h:23
int enum_t
The underlying type of an enum, used as a placeholder.
Definition platform.h:74
signed long s32
A signed 32-bit integer.
Definition platform.h:14
unsigned char u8
An unsigned 8-bit integer.
Definition platform.h:20
void * obj
Definition pobj.c:49
f32 shininess
Definition state.c:46
#define NULL
A null pointer.
Definition stddef.h:19
Definition types.h:30
Definition GXLight.h:13
Definition aobj.h:50
Definition aobj.h:40
Definition cobj.h:39
Definition lobj.h:102
HSD_ObjInfo parent
Definition lobj.h:103
int(* load)(HSD_LObj *lobj, HSD_LightDesc *ldesc)
Definition lobj.h:104
Definition lobj.h:55
HSD_LightAttn attn
Definition lobj.h:67
HSD_LightSpot spot
Definition lobj.h:66
u16 priority
Definition lobj.h:58
HSD_LightPoint point
Definition lobj.h:65
u16 flags
Definition lobj.h:57
GXColor color
Definition lobj.h:60
HSD_WObj * interest
Definition lobj.h:63
union HSD_LObj::@243 u
HSD_Obj parent
Definition lobj.h:56
HSD_WObj * position
Definition lobj.h:62
GXLightID id
Definition lobj.h:72
Vec3 lvec
Definition lobj.h:70
HSD_LObj * next
Definition lobj.h:59
GXLightObj spec_lightobj
Definition lobj.h:75
HSD_AObj * aobj
Definition lobj.h:71
GXColor hw_color
Definition lobj.h:61
GXLightObj lightobj
Definition lobj.h:73
GXLightID spec_id
Definition lobj.h:74
f32 shininess
Definition lobj.h:69
Definition lobj.h:95
HSD_AObjDesc * aobjdesc
Definition lobj.h:97
HSD_LightAnim * next
Definition lobj.h:96
HSD_WObjAnim * position_anim
Definition lobj.h:98
HSD_WObjAnim * interest_anim
Definition lobj.h:99
Definition lobj.h:46
f32 a0
Definition lobj.h:47
f32 k2
Definition lobj.h:52
f32 k1
Definition lobj.h:51
f32 a2
Definition lobj.h:49
f32 k0
Definition lobj.h:50
f32 a1
Definition lobj.h:48
Definition lobj.h:78
void * p
Definition lobj.h:87
HSD_WObjDesc * position
Definition lobj.h:84
u16 flags
Definition lobj.h:81
HSD_WObjDesc * interest
Definition lobj.h:85
GXColor color
Definition lobj.h:83
HSD_LightSpotDesc * spot
Definition lobj.h:90
f32 * shininess
Definition lobj.h:88
HSD_LightPointDesc * point
Definition lobj.h:89
union HSD_LightDesc::@244 u
u16 attnflags
Definition lobj.h:82
char * class_name
Definition lobj.h:79
HSD_LightDesc * next
Definition lobj.h:80
HSD_LightAttn * attn
Definition lobj.h:91
Definition lobj.h:24
f32 ref_br
Definition lobj.h:25
u32 dist_func
Definition lobj.h:27
f32 ref_dist
Definition lobj.h:26
Definition lobj.h:16
f32 cutoff
Definition lobj.h:17
f32 ref_dist
Definition lobj.h:20
u32 point_func
Definition lobj.h:18
f32 ref_br
Definition lobj.h:19
u32 dist_func
Definition lobj.h:21
Definition lobj.h:38
u32 spot_func
Definition lobj.h:40
f32 ref_br
Definition lobj.h:41
f32 ref_dist
Definition lobj.h:42
u32 dist_func
Definition lobj.h:43
f32 cutoff
Definition lobj.h:39
Definition lobj.h:30
u32 spot_func
Definition lobj.h:32
f32 ref_br
Definition lobj.h:33
f32 ref_dist
Definition lobj.h:34
u32 dist_func
Definition lobj.h:35
f32 cutoff
Definition lobj.h:31
Definition object.h:66
Definition object.h:60
Definition wobj.h:32
Definition wobj.h:21
Definition wobj.h:13
Definition types.h:13
Definition fobj.h:65