OdysseyDecomp/lib/al/Library/Shadow/ShadowMaskCtrl.h
MonsterDruide1 946fe5cf06
Library/LiveActor: Implement ActorInitFunction (#741)
Co-authored-by: Aubrey Taylor <aubrey@hall.ly>
2025-10-02 21:02:05 +02:00

48 lines
1.2 KiB
C++

#pragma once
#include <container/seadPtrArray.h>
#include <math/seadMatrix.h>
namespace al {
class ShadowMaskBase;
class LiveActor;
struct ActorInitInfo;
class ByamlIter;
class ShadowMaskCastOvalCylinder;
class ShadowMaskCube;
class ShadowMaskCylinder;
class ShadowMaskSphere;
class ShadowMaskCtrl {
public:
ShadowMaskCtrl(bool);
void appendShadowMask(ShadowMaskBase*);
ShadowMaskBase* findShadowMask(const char*);
void hide();
bool init(LiveActor*, const ActorInitInfo&, const ByamlIter&);
bool init(LiveActor*, s32);
void initAfterPlacement();
void initShadowMaskNum(s32);
void invalidate();
bool isHide();
void setupShadowMaskCastOvalCylinderParam(ShadowMaskCastOvalCylinder*);
void setupShadowMaskCubeParam(ShadowMaskCube*);
void setupShadowMaskCylinderParam(ShadowMaskCylinder*);
void setupShadowMaskSphereParam(ShadowMaskSphere*);
void show();
void validate();
s32 getShadowMaskNum() const { return mShadowMasks.size(); }
ShadowMaskBase* getShadowMask(s32 index) const { return mShadowMasks[index]; }
private:
sead::PtrArray<ShadowMaskBase> mShadowMasks;
sead::Matrix34f mMtx;
void* mLiveActor;
bool mIsIgnoreShadowMaskYaml;
};
} // namespace al