OdysseyDecomp/lib/al/Library/Shadow/ShadowDirector.h
2025-10-25 11:01:43 +02:00

73 lines
2.2 KiB
C++

#pragma once
#include <basis/seadTypes.h>
namespace sead {
class Camera;
}
namespace agl {
class DrawContext;
class RenderTargetDepth;
class TextureData;
} // namespace agl
namespace al {
class GraphicsSystemInfo;
class AreaObjDirector;
class ExecuteDirector;
class EffectSystem;
class SceneCameraInfo;
class PlayerHolder;
class Projection;
class ShaderHolder;
class DepthShadowParam;
class DepthShadowClipParam;
class DepthShadowMapDirector;
class ShadowMaskDirector;
class ShadowDirector {
public:
ShadowDirector(s32, GraphicsSystemInfo*, AreaObjDirector*, ExecuteDirector*, EffectSystem*,
SceneCameraInfo*, const PlayerHolder*);
~ShadowDirector();
void initShader(ShaderHolder*);
void endInit();
void initAfterPlacement();
void clearRequest();
void update();
void* getCurrentShadowParam(); // unknown return type
void* getCurrentClipParam(); // unknown return type
bool isUsingShadowCamera() const;
void preDrawGraphics();
bool isEnableShadowPrePass() const;
void updateViewGpu(s32, const sead::Camera*, const Projection*);
void* getDepthShadow(); // unknown return type
void drawShadowPrePass(agl::DrawContext*, s32, const agl::RenderTargetDepth*,
const agl::RenderTargetDepth*, const agl::TextureData*);
void* getShadowPrePassSampler(s32) const; // unknown return type
void* getShadowPrePassTexture(s32) const; // unknown return type
bool isEnableDepthShadow() const;
void* getCurrentShadowParam() const; // unknown return type
void* getCurrentClipParam() const; // unknown return type
void* getCurrentNear() const; // unknown return type
void* getCurrentFar() const; // unknown return type
bool requestParam(s32, s32, const DepthShadowParam&);
bool requestParam(s32, s32, const DepthShadowClipParam&);
ShadowMaskDirector* getShadowMaskDirector() const { return mShadowMaskDirector; }
DepthShadowMapDirector* getDepthShadowMapDirector() const { return mDepthShadowMapDirector; }
private:
void* _0[1];
ShadowMaskDirector* mShadowMaskDirector;
DepthShadowMapDirector* mDepthShadowMapDirector;
void* _10[0x148 / 8];
};
static_assert(sizeof(ShadowDirector) == 0x160);
} // namespace al