1#pragma once
2
3#include <container/seadPtrArray.h>
4#include <math/seadMatrix.h>
5
6namespace al {
7
8class ShadowMaskBase;
9class LiveActor;
10struct ActorInitInfo;
11class ByamlIter;
12class ShadowMaskCastOvalCylinder;
13class ShadowMaskCube;
14class ShadowMaskCylinder;
15class ShadowMaskSphere;
16
17class ShadowMaskCtrl {
18public:
19 ShadowMaskCtrl(bool);
20 void appendShadowMask(ShadowMaskBase*);
21 ShadowMaskBase* findShadowMask(const char*);
22 void hide();
23 bool init(LiveActor*, const ActorInitInfo&, const ByamlIter&);
24 bool init(LiveActor*, s32);
25 void initAfterPlacement();
26 void initShadowMaskNum(s32);
27 void invalidate();
28 bool isHide();
29 void setupShadowMaskCastOvalCylinderParam(ShadowMaskCastOvalCylinder*);
30 void setupShadowMaskCubeParam(ShadowMaskCube*);
31 void setupShadowMaskCylinderParam(ShadowMaskCylinder*);
32 void setupShadowMaskSphereParam(ShadowMaskSphere*);
33 void show();
34 void validate();
35
36private:
37 sead::PtrArray<ShadowMaskBase> mShadowMasks;
38 sead::Matrix34f mMtx;
39 void* mLiveActor;
40 bool mIsIgnoreShadowMaskYaml;
41};
42
43} // namespace al
44