New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
LightMapMgr.h
Go to the documentation of this file.
1#pragma once
2
3#include <graphics/RenderObj.h>
4
5#include <container/seadSafeArray.h>
6#include <framework/seadCalculateTask.h>
7#include <framework/seadTaskMgr.h>
8#include <gfx/seadCamera.h>
9#include <gfx/seadProjection.h>
10#include <layer/aglDrawMethod.h>
11#include <lighting/aglLightMapMgr.h>
12
13#include <nw/g3d/res/g3d_ResTexture.h>
14
15class ModelG3d;
16
17class LightMapMgr : public sead::CalculateTask // vtbl Address: 0x100BBA94
18{
19 // setInstance_() Address: 0x024E3A78
20 // deleteInstance() Address: Deleted
21 // sInstance Address: 0x101D2C60
22 // SingletonDisposer_::~SingletonDisposer_() Address: 0x024E3990
24
25public:
26 static const s32 cLightMapNum = 2;
27
39 static_assert(cEnvTypeCourse_Num == 7);
40
58 static_assert(cEnvTypeCourseSelect_Num == 13);
59
61
63 static const s32 cHemisphereLightNum = cLightMapHemisphereLightNum;
64
68 static const s32 cLightMapDirectionalLightNum = 4; // max(cLightMapDirectionalLightNumMain, cLightMapDirectionalLightNumCourse, cLightMapDirectionalLightNumCourseSelect)
69
70 static const s32 cDirectionalLightNumMain = cLightMapDirectionalLightNumMain;
71 static const s32 cDirectionalLightNumCourse = cEnvTypeCourse_Num * cLightMapDirectionalLightNumCourse;
72 static const s32 cDirectionalLightNumCourseSelect = cEnvTypeCourseSelect_Num * cLightMapDirectionalLightNumCourseSelect;
73 static const s32 cDirectionalLightNumAll = cDirectionalLightNumMain + cDirectionalLightNumCourse + cDirectionalLightNumCourseSelect;
74
90 static_assert(cAmbColorType_Num == 11);
91
99 static_assert(cRenderStep_Num == 3);
100
101private:
102 class CalcObj : public RenderObjBase
103 {
104 public:
106
107 private:
109
110 friend class LightMapMgr;
111 };
112 static_assert(sizeof(CalcObj) == 8);
113
122 static_assert(cView_Num == 4);
123
124public:
125 // Address: 0x024E3A98
126 LightMapMgr(const sead::TaskConstructArg& arg);
127 // Address: 0x024E39BC
128 virtual ~LightMapMgr();
129
130 agl::lght::LightMapMgr& getLightMapMgr() { return mLightMapMgr; }
131 const agl::lght::LightMapMgr& getLightMapMgr() const { return mLightMapMgr; }
132
134 void setOverrideModelLightMap(bool enable) { mOverrideModelLightMap = enable; }
135
136 // Address: 0x024E4398
138 // Address: 0x024E4E30
140 // Address: 0x024E5008
142
143 // Address: 0x024E3DC0
144 void loadAglEnvBinary(void* data, s32 = -1);
145 // Address: 0x024E3EC0
146 void loadAglEnvBinary(const sead::SafeString& name, s32 = -1, sead::Heap* heap = nullptr);
147 // Address: 0x024E3F14
148 void loadAglEnvBinary(const sead::SafeString& name, sead::Heap* heap = nullptr);
149
150 // Address: 0x024E3FB0
152 const sead::Camera* camera, const sead::Projection* projection,
153 const sead::Camera* camera_drc = nullptr, const sead::Projection* projection_drc = nullptr
154 );
155 // Address: 0x024E3FFC
157
158 // Address: 0x024E4094
159 void loadAglLmapBinary(void* data);
160 // Address: 0x024E42D8
161 void loadAglLmapBinary(const sead::SafeString& name, sead::Heap* heap = nullptr);
162
163 // Address: 0x024E4318
164 void initialize(sead::Heap* heap = nullptr);
165
166 // Address: 0x024E5040
167 void setModelLightMap(ModelG3d* model, bool set_mdl_dl_dirty) const;
168
169 // Address: 0x024E51C0
170 void loadAglEnvBinaryWithType(const sead::SafeString& name, const sead::SafeString& type, sead::Heap* heap = nullptr);
171
172 // Address: 0x024E51C8
173 void initializeForCourseSelect(sead::Heap* heap = nullptr);
174 // Address: 0x024E53B4
176
177 // Address: 0x024E54E4
179 // Address: 0x024E5534
181
182 // Address: 0x024E5584
183 void getAmbColor(sead::Color4f* color, AmbColorType type) const;
184
185 // Address: 0x024E5900
186 void setCobModelLightMapForCourseSelect(ModelG3d* model, u8 world, u8 world_sub_letter) const;
187 // Address: 0x024E5A14
189
190 // Address: 0x024E5AF8
192
193private:
194 // Address: 0x024E3F20
196
197 // Address: 0x024E5734
198 void setModelLightMapWithName_(ModelG3d* model, const sead::SafeString& name, s32 idx_lghtmap, s32 model_light_map_index) const;
199
200 // Address: 0x024E5B0C
201 void draw_(const agl::lyr::RenderInfo& render_info, View view, bool view_dependent, const sead::Matrix34f* view_mtx, const sead::Projection* projection);
202
203 // Address: 0x024E5DB0
204 void drawMain_(const agl::lyr::RenderInfo& render_info);
205 // Address: 0x024E5DC4
206 void drawMainDRC_(const agl::lyr::RenderInfo& render_info);
207 // Address: 0x024E5DD8
208 void drawReflection_(const agl::lyr::RenderInfo& render_info);
209 // Address: 0x024E5F60
210 void drawReflectionDRC_(const agl::lyr::RenderInfo& render_info);
211
212private:
213 u32 _cc[4 / sizeof(u32)];
214 nw::g3d::res::ResTexture* mResTexture[cLightMapNumAll];
230 s32,
232 >,
236 s32,
239 const void* mAglEnvBinary1;
240 const void* mAglEnvBinary2;
242};
243static_assert(sizeof(LightMapMgr) == 0x52CC);
Definition LightMapMgr.h:103
agl::lght::LightMapMgr * mLightMapMgr
Definition LightMapMgr.h:108
void calc() override
Definition LightMapMgr.h:18
void initializeViewDependent_()
void setModelLightMapForCourseSelect(ModelG3d *model) const
const sead::Projection * mProjection
Definition LightMapMgr.h:225
AmbColorType
Definition LightMapMgr.h:76
@ cAmbColorType_Num
Definition LightMapMgr.h:88
@ cAmbColorType_WaterHalfBehindColor0
Definition LightMapMgr.h:86
@ cAmbColorType_WaterHalfFrontKonst1
Definition LightMapMgr.h:85
@ cAmbColorType_EffectColor15_0
Definition LightMapMgr.h:81
@ cAmbColorType_WaterHalfFrontKonst0
Definition LightMapMgr.h:84
@ cAmbColorType_WaterHalfFrontColor0
Definition LightMapMgr.h:83
@ cAmbColorType_EffectColor14_1
Definition LightMapMgr.h:80
@ cAmbColorType_WaterHalfBehindColor1
Definition LightMapMgr.h:87
@ cAmbColorType_EffectColor15_1
Definition LightMapMgr.h:82
@ cAmbColorType_EffectColor13_1
Definition LightMapMgr.h:78
@ cAmbColorType_EffectColor14_0
Definition LightMapMgr.h:79
@ cAmbColorType_EffectColor13_0
Definition LightMapMgr.h:77
void loadAglEnvBinaryWithType(const sead::SafeString &name, const sead::SafeString &type, sead::Heap *heap=nullptr)
void loadAglEnvBinary(const sead::SafeString &name, sead::Heap *heap=nullptr)
static const s32 cLightMapHemisphereLightNum
Definition LightMapMgr.h:62
const void * mAglEnvBinary2
Definition LightMapMgr.h:240
void loadAglLmapBinary(const sead::SafeString &name, sead::Heap *heap=nullptr)
static const s32 cLightMapNumAll
Definition LightMapMgr.h:60
const sead::Camera * mCameraDRC
Definition LightMapMgr.h:226
agl::lyr::DrawMethod mDrawMethodMain
Definition LightMapMgr.h:216
const sead::Projection * mProjectionDRC
Definition LightMapMgr.h:227
const agl::lght::LightMapMgr & getLightMapMgr() const
Definition LightMapMgr.h:131
void initialize(sead::Heap *heap=nullptr)
static const s32 cHemisphereLightNum
Definition LightMapMgr.h:63
RenderStep
Definition LightMapMgr.h:93
@ cRenderStep_CalcView
Definition LightMapMgr.h:94
@ cRenderStep_UpdateGPUBuffer
Definition LightMapMgr.h:95
@ cRenderStep_Num
Definition LightMapMgr.h:97
@ cRenderStep_LightDraw
Definition LightMapMgr.h:96
static const s32 cDirectionalLightNumCourse
Definition LightMapMgr.h:71
EnvTypeCourseSelect
Definition LightMapMgr.h:42
@ cEnvTypeCourseSelect_W6b
Definition LightMapMgr.h:51
@ cEnvTypeCourseSelect_W4a
Definition LightMapMgr.h:47
@ cEnvTypeCourseSelect_Num
Definition LightMapMgr.h:56
@ cEnvTypeCourseSelect_W8b
Definition LightMapMgr.h:54
@ cEnvTypeCourseSelect_W5b
Definition LightMapMgr.h:49
@ cEnvTypeCourseSelect_W1a
Definition LightMapMgr.h:43
@ cEnvTypeCourseSelect_W5a
Definition LightMapMgr.h:48
@ cEnvTypeCourseSelect_W2b
Definition LightMapMgr.h:45
@ cEnvTypeCourseSelect_W2a
Definition LightMapMgr.h:44
@ cEnvTypeCourseSelect_W7a
Definition LightMapMgr.h:52
@ cEnvTypeCourseSelect_W6a
Definition LightMapMgr.h:50
@ cEnvTypeCourseSelect_W9a
Definition LightMapMgr.h:55
@ cEnvTypeCourseSelect_W8a
Definition LightMapMgr.h:53
@ cEnvTypeCourseSelect_W3a
Definition LightMapMgr.h:46
agl::env::EnvObjMgr mEnvObjMgr
Definition LightMapMgr.h:222
void enter() override
bool mOverrideModelLightMap
Definition LightMapMgr.h:241
nw::g3d::res::ResTextureData mResTextureData[cLightMapNumAll]
Definition LightMapMgr.h:215
void initializeForCourseSelect(sead::Heap *heap=nullptr)
agl::lyr::DrawMethod mDrawMethodReflection
Definition LightMapMgr.h:218
View
Definition LightMapMgr.h:115
@ cView_Num
Definition LightMapMgr.h:120
@ cView_MainDRC
Definition LightMapMgr.h:117
@ cView_ReflectionDRC
Definition LightMapMgr.h:119
@ cView_Reflection
Definition LightMapMgr.h:118
@ cView_Main
Definition LightMapMgr.h:116
const void * mAglEnvBinary1
Definition LightMapMgr.h:239
void loadAglEnvBinary(void *data, s32=-1)
static const s32 cLightMapDirectionalLightNumCourse
Definition LightMapMgr.h:66
const sead::Camera * mCamera
Definition LightMapMgr.h:224
static const s32 cDirectionalLightNumAll
Definition LightMapMgr.h:73
void loadAglEnvBinary(const sead::SafeString &name, s32=-1, sead::Heap *heap=nullptr)
static const s32 cDirectionalLightNumMain
Definition LightMapMgr.h:70
LightMapMgr(const sead::TaskConstructArg &arg)
void initializeViewDependent(const sead::Camera *camera, const sead::Projection *projection, const sead::Camera *camera_drc=nullptr, const sead::Projection *projection_drc=nullptr)
const sead::SafeString & getEnvTypeCourseStr(EnvTypeCourse type) const
bool mIsViewDependent
Definition LightMapMgr.h:223
void drawMainDRC_(const agl::lyr::RenderInfo &render_info)
static const s32 cLightMapDirectionalLightNum
Definition LightMapMgr.h:68
void draw_(const agl::lyr::RenderInfo &render_info, View view, bool view_dependent, const sead::Matrix34f *view_mtx, const sead::Projection *projection)
void initializeViewIndependent()
sead::SafeArray< s32, cAmbColorType_Num > mAmbientLightTypeIndex
Definition LightMapMgr.h:238
nw::g3d::res::ResTexture * mResTexture[cLightMapNumAll]
Definition LightMapMgr.h:214
static const s32 cDirectionalLightNumCourseSelect
Definition LightMapMgr.h:72
void drawMain_(const agl::lyr::RenderInfo &render_info)
void loadAglEnvBinaryWithLerpForCourseSelect(f32 t)
u32 _cc[4/sizeof(u32)]
Definition LightMapMgr.h:213
CalcObj mCalcObj
Definition LightMapMgr.h:221
agl::lyr::DrawMethod mDrawMethodMainDRC
Definition LightMapMgr.h:217
static const s32 cLightMapDirectionalLightNumCourseSelect
Definition LightMapMgr.h:67
void calc() override
void drawReflectionDRC_(const agl::lyr::RenderInfo &render_info)
void drawReflection_(const agl::lyr::RenderInfo &render_info)
agl::lght::LightMapMgr mLightMapMgr
Definition LightMapMgr.h:220
void loadAglLmapBinary(void *data)
const agl::TextureSampler & getLightmap1(EnvTypeCourse type) const
virtual ~LightMapMgr()
void setOverrideModelLightMap(bool enable)
Definition LightMapMgr.h:134
const agl::TextureSampler & getLightmap2(EnvTypeCourse type) const
void setCobModelLightMapForCourseSelect(ModelG3d *model, u8 world, u8 world_sub_letter) const
void setModelLightMap(ModelG3d *model, bool set_mdl_dl_dirty) const
static const s32 cLightMapDirectionalLightNumMain
Definition LightMapMgr.h:65
agl::lyr::DrawMethod mDrawMethodReflectionDRC
Definition LightMapMgr.h:219
void getAmbColor(sead::Color4f *color, AmbColorType type) const
EnvTypeCourse
Definition LightMapMgr.h:29
@ cEnvTypeCourse_Enemy
Definition LightMapMgr.h:30
@ cEnvTypeCourse_Player
Definition LightMapMgr.h:34
@ cEnvTypeCourse_DistantView
Definition LightMapMgr.h:35
@ cEnvTypeCourse_Item
Definition LightMapMgr.h:33
@ cEnvTypeCourse_MapObj
Definition LightMapMgr.h:32
@ cEnvTypeCourse_Effect
Definition LightMapMgr.h:36
@ cEnvTypeCourse_Num
Definition LightMapMgr.h:37
@ cEnvTypeCourse_Boss
Definition LightMapMgr.h:31
void prepare() override
agl::lght::LightMapMgr & getLightMapMgr()
Definition LightMapMgr.h:130
bool overrideModelLightMap() const
Definition LightMapMgr.h:133
void setModelLightMapWithName_(ModelG3d *model, const sead::SafeString &name, s32 idx_lghtmap, s32 model_light_map_index) const
Definition ModelG3d.h:27