1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace sead {
6class Camera;
7}
8
9namespace agl {
10class DrawContext;
11class RenderTargetDepth;
12class TextureData;
13} // namespace agl
14
15namespace al {
16class GraphicsSystemInfo;
17class AreaObjDirector;
18class ExecuteDirector;
19class EffectSystem;
20class SceneCameraInfo;
21class PlayerHolder;
22class Projection;
23class ShaderHolder;
24class DepthShadowParam;
25class DepthShadowClipParam;
26
27class ShadowDirector {
28public:
29 ShadowDirector(s32, GraphicsSystemInfo*, AreaObjDirector*, ExecuteDirector*, EffectSystem*,
30 SceneCameraInfo*, const PlayerHolder*);
31 ~ShadowDirector();
32
33 void initShader(ShaderHolder*);
34 void endInit();
35 void initAfterPlacement();
36 void clearRequest();
37 void update();
38 void* getCurrentShadowParam(); // unknown return type
39 void* getCurrentClipParam(); // unknown return type
40 bool isUsingShadowCamera() const;
41 void preDrawGraphics();
42 void isEnableShadowPrePass() const;
43 void updateViewGpu(s32, const sead::Camera*, const Projection*);
44 void* getDepthShadow(); // unknown return type
45 void drawShadowPrePass(agl::DrawContext*, s32, const agl::RenderTargetDepth*,
46 const agl::RenderTargetDepth*, const agl::TextureData*);
47 void* getShadowPrePassSampler(s32) const; // unknown return type
48 void* getShadowPrePassTexture(s32) const; // unknown return type
49 bool isEnableDepthShadow() const;
50 void* getCurrentShadowParam() const; // unknown return type
51 void* getCurrentClipParam() const; // unknown return type
52 void* getCurrentNear() const; // unknown return type
53 void* getCurrentFar() const; // unknown return type
54 bool requestParam(s32, s32, const DepthShadowParam&);
55 bool requestParam(s32, s32, const DepthShadowClipParam&);
56};
57
58} // namespace al
59