1#pragma once
2
3#include "Library/Effect/EffectSystemInfo.h"
4
5namespace agl {
6class DrawContext;
7}
8
9namespace sead {
10class Heap;
11}
12
13namespace al {
14class CameraDirector;
15class EffectCameraHolder;
16class EffectEnvParam;
17class EffectLayoutDrawer;
18class EffectShaderHolder;
19class EffectSystemInfo;
20class ExecuteDirector;
21class GraphicsSystemInfo;
22
23class EffectSystem {
24public:
25 static EffectSystem* initializeSystem(agl::DrawContext*, sead::Heap*);
26
27 EffectSystem();
28
29 void initScene();
30 void startScene(ExecuteDirector*);
31 void endScene();
32 void endInit();
33 void setCameraDirector(CameraDirector*);
34 void setGraphicsSystemInfo(const GraphicsSystemInfo*);
35
36 void set_69(bool val) { _69 = val; }
37
38 EffectSystemInfo* getEffectSystemInfo() { return &mEffectSystemInfo; }
39
40 const EffectSystemInfo* getEffectSystemInfo() const { return &mEffectSystemInfo; }
41
42private:
43 sead::Heap* mHeap;
44 EffectSystemInfo mEffectSystemInfo;
45 EffectCameraHolder* mEffectCameraHolder;
46 s32 mExecutorSize;
47 void* mExecutorList;
48 s32 mResourcePathSize;
49 s32 mResourcePathCapacity;
50 const char** mResourcePaths;
51 void* filler[3];
52 bool _68;
53 bool _69;
54 bool _6a;
55 void* filler2[99];
56 s32 mEffectLayoutDrawerSize;
57 EffectLayoutDrawer** mEffectLayoutDrawerList;
58 EffectShaderHolder* mEffectShaderHolder;
59 void* filler3[4];
60 agl::DrawContext* mDrawContext;
61 EffectEnvParam* mEffectEnvParam;
62 void* filler4;
63};
64
65static_assert(sizeof(EffectSystem) == 0x3d8);
66
67} // namespace al
68