1#pragma once
2
3#include <container/seadPtrArray.h>
4#include <math/seadVector.h>
5
6#include "Library/HostIO/HioNode.h"
7
8namespace al {
9
10class Resource;
11class ByamlIter;
12class GraphicsSystemInfo;
13class LiveActor;
14class DepthShadowMapInfo;
15class ModelDrawerDepthShadowMap;
16class ModelDrawerMask;
17
18class DepthShadowMapCtrl : public HioNode {
19public:
20 DepthShadowMapCtrl(const Resource* resource);
21 virtual ~DepthShadowMapCtrl();
22
23 void actorModelDrawDepth();
24 void actorModelDrawMask();
25 void appendDepthShadowMapInfo(const char*, s32, s32, s32, f32, bool, const sead::Vector3f&,
26 bool, const sead::Vector3f&, const sead::Vector3f&, bool,
27 const char*, s32, bool, f32, f32, f32, bool, bool, f32, s32, bool,
28 bool, f32);
29 DepthShadowMapInfo* getDepthShadowMapInfo(s32 index);
30 u32 getDepthShadowMapNum();
31 void hide();
32 void init(LiveActor* actor, const ByamlIter& iter);
33 void initAfterPlacement(GraphicsSystemInfo* graphicsSystemInfo);
34 void initWithoutIter(LiveActor* actor, s32);
35 void show();
36 DepthShadowMapInfo* tryFindDepthShadowMapInfo(const char*);
37 void update();
38 void updateShapeVisible(const LiveActor* actor);
39
40private:
41 LiveActor* mLiveActor;
42 sead::Vector3f mLightDir;
43 bool mIsAppendSubActor;
44 sead::PtrArray<DepthShadowMapInfo> mDepthShadowMaps;
45 sead::PtrArray<ModelDrawerDepthShadowMap> mModelDrawerDepthShadowMaps;
46 sead::PtrArray<ModelDrawerMask> mModelDrawerMasks;
47};
48
49static_assert(sizeof(DepthShadowMapCtrl) == 0x50);
50
51} // namespace al
52