1#pragma once
2
3#include <gfx/seadColor.h>
4#include <math/seadBoundBox.h>
5#include <math/seadMatrix.h>
6#include <math/seadQuat.h>
7#include <nn/g3d/ResFile.h>
8#include <nn/gfx/gfx_DescriptorSlot.h>
9
10namespace agl {
11class UniformBlock;
12}
13
14namespace nn::gfx {
15class ResTexture;
16}
17
18namespace al {
19class LayoutTextureRenderObj;
20class LiveActor;
21class ClippingDirector;
22
23void updateMaterialCodeGround(LiveActor* actor, const char*);
24void updateMaterialCodeAll(LiveActor* actor);
25void updateMaterialCodeArea(LiveActor* actor);
26void updateMaterialCodeWet(LiveActor* actor, bool);
27void updateMaterialCodeWater(LiveActor* actor);
28void updateMaterialCodeWater(LiveActor* actor, bool);
29void updateMaterialCodePuddle(LiveActor* actor);
30void updateMaterialCodePuddle(LiveActor* actor, bool);
31void resetMaterialCode(LiveActor* actor);
32void showModel(LiveActor* actor);
33void showModelIfHide(LiveActor* actor);
34bool isHideModel(const LiveActor* actor);
35void hideModel(LiveActor* actor);
36void hideModelIfShow(LiveActor* actor);
37bool isExistModel(const LiveActor* actor);
38void switchShowHideModelIfNearCamera(LiveActor* actor, f32);
39bool blinkModel(LiveActor* actor, s32, s32, s32);
40void calcViewModelSystem(LiveActor* actor);
41void calcViewModel(LiveActor* actor);
42void showSilhouetteModel(LiveActor* actor);
43void hideSilhouetteModel(LiveActor* actor);
44bool isSilhouetteModelHidden(const LiveActor* actor);
45void showSilhouetteModelIfHide(LiveActor* actor);
46void hideSilhouetteModelIfShow(LiveActor* actor);
47void setModelAlphaMask(LiveActor* actor, f32);
48f32 getModelAlphaMask(const LiveActor* actor);
49bool isModelAlphaMask(const LiveActor* actor);
50void updateModelAlphaMaskCameraDistance(LiveActor* actor, f32, f32, f32, f32);
51bool isExistZPrePass(const LiveActor* actor);
52bool isEnableZPrePass(const LiveActor* actor);
53void validateZPrePass(LiveActor* actor);
54void invalidateZPrePass(LiveActor* actor);
55void invalidateOcclusionQuery(LiveActor* actor);
56void validateOcclusionQuery(LiveActor* actor);
57bool isValidOcclusionQuery(const LiveActor* actor);
58void setFixedModelFlag(LiveActor* actor);
59void tryInitFixedModelGpuBuffer(LiveActor* actor);
60void setIgnoreUpdateDrawClipping(LiveActor* actor, bool value);
61void setNeedSetBaseMtxAndCalcAnimFlag(LiveActor* actor, bool value);
62bool isViewDependentModel(const LiveActor* actor);
63bool isNeedUpdateModel(const LiveActor* actor);
64void setEnvTextureMirror(LiveActor* actor, s32);
65void setEnvTextureProc3D(LiveActor* actor, s32);
66void forceApplyCubeMap(LiveActor* actor, const char* cubeMapName);
67void setMaterialProgrammable(LiveActor* actor);
68bool isIncludePrepassCullingShape(LiveActor* actor);
69bool isExistJoint(const LiveActor* actor, const char*);
70s32 getJointIndex(const LiveActor* actor, const char*);
71sead::Matrix34f* getJointMtxPtr(const LiveActor* actor, const char*); // return type might be const
72sead::Matrix34f* getJointMtxPtrByIndex(const LiveActor* actor, s32);
73void getJointLocalTrans(sead::Vector3f*, const LiveActor* actor, const char*);
74void calcJointPos(sead::Vector3f*, const LiveActor* actor, const char*);
75void calcJointOffsetPos(sead::Vector3f*, const LiveActor* actor, const char*,
76 const sead::Vector3f&);
77void calcJointPosByIndex(sead::Vector3f*, const LiveActor* actor, s32);
78void calcJointSideDir(sead::Vector3f*, const LiveActor* actor, const char*);
79void calcJointUpDir(sead::Vector3f*, const LiveActor* actor, const char*);
80void calcJointFrontDir(sead::Vector3f*, const LiveActor* actor, const char*);
81void calcJointScale(sead::Vector3f*, const LiveActor* actor, const char*);
82void calcJointQuat(sead::Quatf*, const LiveActor* actor, const char*);
83void multVecJointMtx(sead::Vector3f*, const sead::Vector3f&, const LiveActor* actor, const char*);
84void multVecJointInvMtx(sead::Vector3f*, const sead::Vector3f&, const LiveActor* actor,
85 const char*);
86void multMtxJointInvMtx(sead::Matrix34f*, const sead::Matrix34f&, const LiveActor* actor,
87 const char*);
88void setJointVisibility(LiveActor* actor, const char*, bool);
89bool isJointVisibility(const LiveActor* actor, const char*);
90bool isFaceJointXDirDegreeYZ(const LiveActor* actor, const char*, const sead::Vector3f&, f32, f32);
91bool isFaceJointYDirDegreeZX(const LiveActor* actor, const char*, const sead::Vector3f&, f32, f32);
92bool isFaceJointZDirDegreeXY(const LiveActor* actor, const char*, const sead::Vector3f&, f32, f32);
93void calcJointAngleXDirToTargetOnYDir(const LiveActor* actor, const char*, const sead::Vector3f&);
94void calcJointAngleXDirToTargetOnZDir(const LiveActor* actor, const char*, const sead::Vector3f&);
95void calcJointAngleYDirToTargetOnXDir(const LiveActor* actor, const char*, const sead::Vector3f&);
96void calcJointAngleYDirToTargetOnZDir(const LiveActor* actor, const char*, const sead::Vector3f&);
97void calcJointAngleZDirToTargetOnXDir(const LiveActor* actor, const char*, const sead::Vector3f&);
98void calcJointAngleZDirToTargetOnYDir(const LiveActor* actor, const char*, const sead::Vector3f&);
99const char* getMaterialName(const LiveActor* actor, s32);
100s32 getMaterialCount(const LiveActor* actor);
101bool isExistMaterial(const LiveActor* actor, const char*);
102void getMaterialObj(const LiveActor* actor, s32);
103void getMaterialObj(const LiveActor* actor, const char*);
104s32 getMaterialIndex(const LiveActor* actor, const char*);
105bool isExistMaterialTexture(const LiveActor* actor, const char*, const char*);
106void getMaterialCategory(const LiveActor* actor, s32);
107void tryGetMaterialCategory(const LiveActor* actor, s32);
108bool isOnlyMaterialCategoryObject(const LiveActor* actor);
109void showMaterial(LiveActor* actor, const char*);
110void hideMaterial(LiveActor* actor, const char*);
111void showMaterial(LiveActor* actor, s32);
112void hideMaterial(LiveActor* actor, s32);
113void showMaterialAll(LiveActor* actor);
114void tryShowMaterial(LiveActor* actor, s32);
115void tryHideMaterial(LiveActor* actor, s32);
116void tryShowMaterialAll(LiveActor* actor);
117void setModelMaterialParameterF32(const LiveActor* actor, s32, const char*, f32);
118void setModelMaterialParameterF32(const LiveActor* actor, const char*, const char*, f32);
119void setModelMaterialParameterV2F(const LiveActor* actor, s32, const char*, const sead::Vector2f&);
120void setModelMaterialParameterV2F(const LiveActor* actor, const char*, const char*,
121 const sead::Vector2f&);
122void setModelMaterialParameterV3F(const LiveActor* actor, s32, const char*, const sead::Vector3f&);
123void setModelMaterialParameterV3F(const LiveActor* actor, const char*, const char*,
124 const sead::Vector3f&);
125void setModelMaterialParameterV4F(const LiveActor* actor, s32, const char*, const sead::Vector4f&);
126void setModelMaterialParameterV4F(const LiveActor* actor, const char*, const char*,
127 const sead::Vector4f&);
128void setModelMaterialParameterRgb(const LiveActor* actor, s32, const char*, const sead::Vector3f&);
129void setModelMaterialParameterRgb(const LiveActor* actor, const char*, const char*,
130 const sead::Vector3f&);
131void setModelMaterialParameterRgb(const LiveActor* actor, s32, const char*, const sead::Color4f&);
132void setModelMaterialParameterRgb(const LiveActor* actor, const char*, const char*,
133 const sead::Color4f&);
134void setModelMaterialParameterRgba(const LiveActor* actor, s32, const char*, const sead::Color4f&);
135void setModelMaterialParameterRgba(const LiveActor* actor, const char*, const char*,
136 const sead::Color4f&);
137void setModelMaterialParameterAlpha(const LiveActor* actor, s32, const char*, f32);
138void setModelMaterialParameterAlpha(const LiveActor* actor, const char*, const char*, f32);
139void setModelMaterialParameterTextureTrans(const LiveActor* actor, const char*, s32,
140 const sead::Vector2f&);
141void getModelMaterialParameterDisplacementScale(const LiveActor* actor, const char*, s32);
142void setModelMaterialParameterDisplacementScale(const LiveActor* actor, const char*, s32, f32);
143void getModelUniformBlock(const LiveActor* actor, const char*);
144void findModelUniformBlock(const LiveActor* actor, const char*);
145void swapModelUniformBlock(agl::UniformBlock*);
146void flushModelUniformBlock(agl::UniformBlock*);
147void getModelDrawCategoryFromShaderAssign(bool*, bool*, bool*, bool*, const LiveActor* actor);
148void trySetOcclusionQueryBox(LiveActor* actor, f32);
149void trySetOcclusionQueryBox(LiveActor* actor, const sead::BoundBox3f&);
150void trySetOcclusionQueryCenter(LiveActor* actor, const sead::Vector3f*);
151const char* getModelName(const LiveActor* actor);
152bool isModelName(const LiveActor* actor, const char*);
153f32 calcModelBoundingSphereRadius(const LiveActor* actor);
154void getBoundingSphereCenterAndRadius(sead::Vector3f*, f32*, const LiveActor* actor);
155void calcModelBoundingBox(sead::BoundBox3f*, const LiveActor* actor);
156void calcModelBoundingBoxMtx(sead::Matrix34f*, const LiveActor* actor);
157void submitViewModel(const LiveActor* actor, const sead::Matrix34f&);
158void replaceMaterialTextureRef(LiveActor* actor, nn::g3d::TextureRef*, const char*, const char*);
159void replaceMaterialResTexture(LiveActor* actor, nn::gfx::ResTexture*, const char*, const char*);
160void replaceMaterialResTexture(LiveActor*, const char*, const char*, nn::gfx::DescriptorSlot,
161 const nn::gfx::TextureView*);
162void replaceMaterialLayoutTexture(LiveActor* actor, const LayoutTextureRenderObj*, const char*,
163 const char*);
164void recreateModelDisplayList(const LiveActor* actor);
165void calcPolygonNum(const LiveActor* actor, s32);
166void calcPolygonNumCurrentLod(const LiveActor* actor);
167void calcPolygonNumCurrentLodWithoutVisAnim(const LiveActor* actor);
168void getLodLevel(const LiveActor* actor);
169void getMaterialLodLevel(const LiveActor* actor);
170void getLodLevelNoClamp(const LiveActor* actor);
171s32 getLodModelCount(const LiveActor* actor);
172void forceLodLevel(LiveActor* actor, s32);
173void unforceLodLevel(LiveActor* actor);
174bool isExistLodModel(const LiveActor* actor);
175bool isEnableMaterialLod(const LiveActor* actor);
176void validateLodModel(LiveActor* actor);
177void invalidateLodModel(LiveActor* actor);
178bool isValidateLodModel(const LiveActor* actor);
179bool isExistDitherAnimator(const LiveActor* actor);
180bool isValidNearDitherAnim(const LiveActor* actor);
181void stopDitherAnimAutoCtrl(LiveActor* actor);
182void restartDitherAnimAutoCtrl(LiveActor* actor);
183void validateDitherAnim(LiveActor* actor);
184void invalidateDitherAnim(LiveActor* actor);
185void validateFarDitherIfInvalidateClipping(LiveActor* actor);
186void setDitherAnimSphereRadius(LiveActor* actor, f32);
187void setDitherAnimBoundingBox(LiveActor* actor, const sead::Vector3f&);
188void setDitherAnimMaxAlpha(LiveActor* actor, f32);
189void setDitherAnimClippingJudgeLocalOffset(LiveActor* actor, const sead::Vector3f&);
190void setDitherAnimClippingJudgeParam(LiveActor* actor, const char*);
191void resetDitherAnimClippingJudgeParam(LiveActor* actor);
192void getDitherAnimMinNearDitherAlpha(const LiveActor* actor);
193f32 getDitherAnimNearClipStartDistance(const LiveActor* actor);
194f32 getDitherAnimNearClipEndDistance(const LiveActor* actor);
195void calcDitherAnimJudgeDistance(const LiveActor* actor);
196void createUniqueShader(LiveActor* actor);
197bool isJudgedToClipFrustum(const ClippingDirector*, const sead::Vector3f&, f32, f32);
198bool isJudgedToClipFrustum(const LiveActor* actor, const sead::Vector3f&, f32, f32);
199bool isJudgedToClipFrustum(const LiveActor* actor, f32, f32);
200bool isJudgedToClipFrustumWithoutFar(const ClippingDirector*, const sead::Vector3f&, f32, f32);
201bool isJudgedToClipFrustumWithoutFar(const LiveActor* actor, const sead::Vector3f&, f32, f32);
202bool isJudgedToClipFrustumWithoutFar(const LiveActor* actor, f32, f32);
203} // namespace al
204