1#pragma once
2
3#include <basis/seadTypes.h>
4#include <math/seadVector.h>
5
6namespace sead {
7class Color4f;
8}
9
10namespace al {
11class LiveActor;
12class ShadowMaskBase;
13class DepthShadowMapInfo;
14class OccSphere;
15
16enum class ShadowMaskDrawCategory : s32 {};
17
18bool isExistShadow(LiveActor* actor);
19bool isExistShadowMaskCtrl(LiveActor* actor);
20bool isExistShadowMask(LiveActor* actor, const char* maskName);
21bool isExistDepthShadow(LiveActor* actor);
22bool isExistDepthShadowMapCtrl(LiveActor* actor);
23bool isExistAnyShadowCtrl(LiveActor* actor);
24bool isHideShadowMask(const LiveActor* actor);
25void hideShadow(LiveActor* actor);
26void showShadow(LiveActor* actor);
27void showShadowMask(LiveActor* actor);
28void showShadowMask(LiveActor* actor, ShadowMaskBase* mask);
29void showShadowMask(LiveActor* actor, const char* maskName);
30void showShadowMask(LiveActor* actor, ShadowMaskDrawCategory drawCategory);
31void hideShadowMask(LiveActor* actor);
32void hideShadowMask(LiveActor* actor, ShadowMaskBase* mask);
33void hideShadowMask(LiveActor* actor, const char* maskName);
34void hideShadowMask(LiveActor* actor, ShadowMaskDrawCategory drawCategory);
35bool isHideShadowMask(LiveActor* actor, const char* maskName);
36void showDepthShadowMap(LiveActor* actor, s32 mapIdx);
37void showDepthShadowMap(const LiveActor* actor, DepthShadowMapInfo* map);
38void showDepthShadowMap(LiveActor* actor, const char* mapName);
39void hideDepthShadowMap(LiveActor* actor, s32 mapIdx);
40void hideDepthShadowMap(const LiveActor* actor, DepthShadowMapInfo* map);
41void hideDepthShadowMap(LiveActor* actor, const char* mapName);
42bool isHideDepthShadowMap(LiveActor* actor, const char* mapName);
43bool isHideDepthShadowMap(LiveActor* actor, s32 mapIdx);
44s32 getDepthShadowMapNum(LiveActor* actor);
45void validateShadowMask(LiveActor* actor);
46void validateShadowMask(LiveActor* actor, ShadowMaskBase* mask);
47void validateShadowMask(LiveActor* actor, const char* maskName);
48void invalidateShadowMask(LiveActor* actor);
49void invalidateShadowMask(LiveActor* actor, ShadowMaskBase* mask);
50void invalidateShadowMask(LiveActor* actor, const char* maskName);
51void validateDepthShadowMap(LiveActor* actor);
52void validateDepthShadowMap(LiveActor* actor, DepthShadowMapInfo* map);
53void validateDepthShadowMap(LiveActor* actor, const char* mapName);
54void invalidateDepthShadowMap(LiveActor* actor);
55void invalidateDepthShadowMap(LiveActor* actor, DepthShadowMapInfo* map);
56void invalidateDepthShadowMap(LiveActor* actor, const char* mapName);
57void invalidateShadowMask(LiveActor* actor, ShadowMaskDrawCategory drawCategory);
58void invalidateShadowMaskIntensityAll(LiveActor* actor);
59void setShadowMaskFixed(LiveActor* actor, bool isFixed);
60void setShadowMaskDropDir(LiveActor* actor, const sead::Vector3f& dropDir);
61void setShadowMaskDropDir(LiveActor* actor, const sead::Vector3f& dropDir, const char* maskName);
62void setShadowMaskDropDirActorDown(LiveActor* actor);
63void setShadowMaskSize(LiveActor* actor, const char* maskName, const sead::Vector3f& size);
64void setShadowMaskSize(LiveActor* actor, const char* maskName, f32 sizeX, f32 sizeY, f32 sizeZ);
65void setShadowTextureOffset(LiveActor* actor, const char* maskName, f32 offsetX, f32 offsetY);
66void onShadowTextureScroll(LiveActor* actor, const char* maskName);
67void offShadowTextureScroll(LiveActor* actor, const char* maskName);
68void calcShadowMaskSize(sead::Vector3f* size, LiveActor* actor, const char* maskName);
69f32 getShadowMaskDropLength(const LiveActor* actor, const char* maskName);
70void setShadowMaskDropLength(LiveActor* actor, f32 dropLength);
71void setShadowMaskDropLength(LiveActor* actor, f32 dropLength, const char* maskName);
72void setShadowMaskDropLengthScaleWithDrawCategory(LiveActor* actor, f32 dropLengthScale,
73 ShadowMaskDrawCategory drawCategory);
74void setShadowMaskDropLengthWithDrawCategory(LiveActor* actor, f32 dropLength,
75 ShadowMaskDrawCategory drawCategory);
76void setShadowMaskDropLengthEvenWithTarget(ShadowMaskBase* targetMask, const char* maskName,
77 const sead::Vector3f&);
78void setShadowMaskDropLengthEvenWithTarget(ShadowMaskBase* targetMask, const ShadowMaskBase* mask,
79 const sead::Vector3f&);
80void setShadowMaskDropLengthEvenWithDrawCategory(LiveActor*, ShadowMaskDrawCategory drawCategory,
81 const LiveActor*, const char* maskName);
82void setShadowMaskDropLengthEvenPlaneNormal(const LiveActor* actor, const sead::Vector3f&);
83s32 getDepthShadowMapWidth(const LiveActor* actor, const char* mapName);
84s32 getDepthShadowMapHeight(const LiveActor* actor, const char* mapName);
85void setDepthShadowMapSize(const LiveActor* actor, s32 width, s32 height, const char* mapName);
86f32 getDepthShadowMapLength(const LiveActor* actor, const char* mapName);
87void setDepthShadowMapLength(const LiveActor* actor, f32 length, const char* mapName);
88void setDepthShadowMapLengthFromActorTransFlag(const LiveActor* actor, bool isSetShadowLength,
89 const char* mapName);
90void setDepthShadowMapBoundingBox(const LiveActor* actor, const sead::Vector3f& boundMin,
91 const sead::Vector3f& boundMax, const char* mapName);
92void setDepthShadowMapMaskTypeNone(const LiveActor* actor, const char* mapName);
93void setDepthShadowMapMaskTypeSelf(const LiveActor* actor, const char* mapName);
94void setEnableDepthShadowMapBottomGradation(const LiveActor* actor, const char* mapName,
95 bool isEnableBottomGradation);
96bool isEnableDepthShadowMapBottomGradation(const LiveActor* actor, const char* mapName);
97void setDepthShadowMapBottomGradationLength(const LiveActor* actor, const char* mapName,
98 f32 length);
99f32 getDepthShadowMapBottomGradationLength(const LiveActor* actor, const char* mapName);
100bool isAppendSubActorDepthShadowMap(const LiveActor* actor);
101f32 getShadowMaskDropLengthMax(const LiveActor* actor);
102void setShadowMaskColor(const LiveActor* actor, const char* maskName, const sead::Color4f& color);
103const sead::Color4f& getShadowMaskColor(const LiveActor* actor, const char* maskName);
104void setShadowMaskIntensity(const LiveActor* actor, const char* maskName, f32 intensity);
105f32 getShadowMaskIntensity(const LiveActor* actor, const char* maskName);
106f32 getShadowMaskTextureFixedScale(const LiveActor* actor, const char* maskName);
107void setShadowMaskTextureFixedScale(const LiveActor* actor, const char* maskName, f32 scale);
108const sead::Vector3f& getShadowMaskOffset(const LiveActor* actor, const char* maskName);
109void setShadowMaskOffset(const LiveActor* actor, const sead::Vector3f& offset,
110 const char* maskName);
111bool isExistOcclusionLightPosPtr(const LiveActor* actor, const char* occSphereName);
112void setOcclusionLightPosPtr(const LiveActor* actor, const char* occSphereName,
113 const sead::Vector3f* lightPosPtr);
114void setOcclusionAddOffset(const LiveActor* actor, const char* occSphereName,
115 const sead::Vector3f& offset);
116void enableOcclusion(const LiveActor* actor, const char* occSphereName);
117void disableOcclusion(const LiveActor* actor, const char* occSphereName);
118bool isEnableOcclusion(const LiveActor* actor, const char* occSphereName);
119void calcSphereDoBoundingInfo(sead::Vector3f*, sead::Vector3f*, f32*, f32*, const LiveActor* actor,
120 const char* occSphereName, f32);
121void calcOcclusionSpherePos(sead::Vector3f* pos, const LiveActor* actor, const char* occSphereName);
122void changeOcclusionGroup(const LiveActor* actor, const char* occSphereName, const char* groupName);
123OccSphere* getOcclusionSphere(const LiveActor* actor, const char* occSphereName);
124void setOcclusionIgnoreHostHide(const LiveActor* actor, bool isIgnoreHostHide);
125bool findIsInShade(const LiveActor* actor, const sead::Vector3f& pos);
126void requestDepthShadowMapLightDir(const LiveActor* actor, const sead::Vector3f& lightDir,
127 const char* mapName);
128void resetRequestDepthShadowMapLightDir(const LiveActor* actor, const char* mapName);
129bool isRequestDepthShadowMapLightDir(const LiveActor* actor, const char* mapName);
130void onDepthShadowModel(LiveActor* actor);
131void offDepthShadowModel(LiveActor* actor);
132void updateDepthShadowMapCtrlShapeVisible(LiveActor* actor);
133} // namespace al
134