1#pragma once
2
3#include <math/seadQuat.h>
4
5#include "Library/Fluid/IUseFluidSurface.h"
6
7namespace al {
8class LiveActor;
9struct ActorInitInfo;
10
11// TODO: Finish this
12class RippleCtrl : public IUseFluidSurface {
13public:
14 RippleCtrl(LiveActor* parent);
15
16 static RippleCtrl* tryCreate(LiveActor* parent);
17
18 void init(const ActorInitInfo& info);
19 void calcPosQuat(sead::Quatf* quat) const;
20 void calcOffsetedTrans(sead::Vector3f* trans) const;
21 void tryCreateFlowMap();
22 void initAfterPlacement();
23 void update();
24 bool calcIsInArea(const sead::Vector3f&) const override;
25 bool isCollide(s32, s32) const;
26 void calcPos(sead::Vector3f*, const sead::Vector3f&) const override;
27 const sead::Vector3f& getCollidePos(s32, s32) const;
28 void calcNormal(sead::Vector3f*, const sead::Vector3f&) const override;
29 bool tryAddRipple(const sead::Vector3f&, f32, f32) override;
30 bool tryAddRippleWithRange(const sead::Vector3f&, f32, f32, f32, f32) override;
31 bool tryAddQuadRipple(const sead::Vector3f&, const sead::Vector3f&, const sead::Vector3f&,
32 const sead::Vector3f&, f32) override;
33 void setFieldScale(f32) override;
34 const char* getTypeName() const override;
35 void forceResetCount();
36
37private:
38 unsigned char padding[0x128 - sizeof(IUseFluidSurface)];
39};
40} // namespace al
41