| 1 | #pragma once |
| 2 | |
| 3 | #include <basis/seadTypes.h> |
| 4 | #include <math/seadBoundBox.h> |
| 5 | #include <math/seadMatrix.h> |
| 6 | #include <math/seadQuat.h> |
| 7 | #include <math/seadVector.h> |
| 8 | |
| 9 | namespace al { |
| 10 | class AreaObj; |
| 11 | class FireSurfaceFinder; |
| 12 | class IUseFluidSurface; |
| 13 | class LiveActor; |
| 14 | class NatureDirector; |
| 15 | class WaterSurfaceFinder; |
| 16 | |
| 17 | void registerFluidSurfaceObj(IUseFluidSurface*, const LiveActor*); |
| 18 | bool isExistFluidSurface(const LiveActor*); |
| 19 | void setWaterRippleFieldScale(const LiveActor*, f32); |
| 20 | bool isInWaterPos(const LiveActor*, const sead::Vector3f&); |
| 21 | bool isInWater(const LiveActor*); |
| 22 | bool isInWaterNoIgnore(const LiveActor*, const sead::Vector3f&); |
| 23 | bool isInSodaWater(const LiveActor*, const sead::Vector3f&); |
| 24 | bool isInIceWaterPos(const LiveActor*, const sead::Vector3f&); |
| 25 | bool isInIceWater(const LiveActor*); |
| 26 | bool isInFirePos(const LiveActor*, const sead::Vector3f&); |
| 27 | bool isInFire(const LiveActor*); |
| 28 | bool isInCloudPos(const LiveActor*, const sead::Vector3f&); |
| 29 | bool isInCloud(const LiveActor*); |
| 30 | bool tryAddRippleMiddle(const LiveActor*); |
| 31 | bool tryAddRippleLarge(const LiveActor*); |
| 32 | bool isWaterAreaIgnore(const AreaObj*); |
| 33 | const char* getFireMaterialCode(const LiveActor*); |
| 34 | |
| 35 | bool calcFindWaterSurface(sead::Vector3f*, sead::Vector3f*, const LiveActor*, const sead::Vector3f&, |
| 36 | const sead::Vector3f&, f32); |
| 37 | bool calcFindWaterSurfaceFlat(sead::Vector3f*, sead::Vector3f*, const LiveActor*, |
| 38 | const sead::Vector3f&, const sead::Vector3f&, f32); |
| 39 | bool calcFindWaterSurfaceDisplacement(sead::Vector3f*, sead::Vector3f*, const LiveActor*, |
| 40 | const sead::Vector3f&, const sead::Vector3f&, f32); |
| 41 | bool calcFindWaterSurfaceOverGround(sead::Vector3f*, sead::Vector3f*, const LiveActor*, |
| 42 | const sead::Vector3f&, const sead::Vector3f&, f32); |
| 43 | bool calcFindFireSurface(sead::Vector3f*, sead::Vector3f*, const LiveActor*, const sead::Vector3f&, |
| 44 | const sead::Vector3f&, f32); |
| 45 | bool calcFindCloudSurface(sead::Vector3f*, sead::Vector3f*, const LiveActor*, const sead::Vector3f&, |
| 46 | const sead::Vector3f&, f32); |
| 47 | |
| 48 | bool tryAddRipple(const NatureDirector*, const sead::Vector3f&, f32, f32); |
| 49 | bool tryAddRippleTiny(const LiveActor*); |
| 50 | bool tryAddRippleSmall(const LiveActor*, const sead::Vector3f&); |
| 51 | bool tryAddRippleTiny(const LiveActor*, const sead::Vector3f&); |
| 52 | bool tryAddRippleSmall(const LiveActor*); |
| 53 | bool tryAddRippleMiddle(const LiveActor*); |
| 54 | bool tryAddRippleMiddle(const LiveActor*, const sead::Vector3f&); |
| 55 | bool tryAddRippleLarge(const LiveActor*); |
| 56 | bool tryAddRippleLarge(const LiveActor*, const sead::Vector3f&); |
| 57 | bool tryAddRippleWithRange(const LiveActor*, const sead::Vector3f&, f32, f32, f32, f32); |
| 58 | bool tryAddRipple(const LiveActor*, const sead::Vector3f&, f32, f32); |
| 59 | bool tryAddRippleRandomBlur(const LiveActor*, const sead::Vector3f&, f32, f32, f32); |
| 60 | bool tryAddQuadRipple(const LiveActor*, const sead::Vector3f&, const sead::Vector3f&, |
| 61 | const sead::Vector3f&, const sead::Vector3f&, f32); |
| 62 | bool tryAddQuadRipple(const LiveActor*, const sead::BoundBox3f&, const sead::Vector3f&, |
| 63 | const sead::Quatf&, f32, f32); |
| 64 | bool tryAddQuadRippleByBoxRotateY(const LiveActor*, const sead::BoundBox3f&, const sead::Vector3f&, |
| 65 | f32, f32, f32); |
| 66 | |
| 67 | void approachWaterSurfaceSpringDumper(LiveActor*, const WaterSurfaceFinder*, f32, f32, f32, f32, |
| 68 | f32); |
| 69 | void approachFireSurfaceSpringDumper(LiveActor*, const FireSurfaceFinder*, f32, f32, f32, f32, f32); |
| 70 | void approachWaterSurfaceRate(LiveActor*, const WaterSurfaceFinder*, f32, f32, f32); |
| 71 | void approachFireSurfaceRate(LiveActor*, const FireSurfaceFinder*, f32, f32, f32); |
| 72 | |
| 73 | void keepWaterSurfaceHeight(LiveActor*, const WaterSurfaceFinder*, f32); |
| 74 | void syncWaterSurfaceTrans(LiveActor*, const WaterSurfaceFinder*); |
| 75 | void syncFireSurfaceTrans(LiveActor*, const FireSurfaceFinder*); |
| 76 | void syncWaterSurfaceTransH(LiveActor*, const WaterSurfaceFinder*); |
| 77 | void blendWaterSurfaceTransH(LiveActor*, const WaterSurfaceFinder*, f32); |
| 78 | void syncWaterSurfaceUp(LiveActor*, const WaterSurfaceFinder*, f32); |
| 79 | void syncFireSurfaceUp(LiveActor*, const FireSurfaceFinder*, f32); |
| 80 | void calcMatrixFromActorPoseAndWaterSurfaceH(sead::Matrix34f*, const WaterSurfaceFinder*, |
| 81 | const LiveActor*); |
| 82 | |
| 83 | bool calcFindFireSurface(sead::Vector3f*, sead::Vector3f*, const LiveActor*, const sead::Vector3f&, |
| 84 | const sead::Vector3f&, f32); |
| 85 | } // namespace al |
| 86 | |
| 87 | namespace alNatureUtil { |
| 88 | |
| 89 | bool calcFindDistanceWaterSurfaceToGround(f32*, const al::LiveActor*, const sead::Vector3f&, f32); |
| 90 | |
| 91 | } // namespace alNatureUtil |
| 92 | |