1#pragma once
2
3#include <math/seadMatrix.h>
4
5#include "Library/LiveActor/LiveActor.h"
6
7namespace al {
8struct ActorInitInfo;
9class HitSensor;
10class MtxConnector;
11class SensorMsg;
12} // namespace al
13
14class ActorDimensionKeeper;
15class CoinStateCountUp;
16class ExternalForceKeeper;
17class CoinRotateCalculator;
18
19class CoinCollectEmpty : public al::LiveActor {
20public:
21 CoinCollectEmpty(const char* name, const char* archiveName);
22
23 void init(const al::ActorInitInfo& initInfo) override;
24 void initAfterPlacement() override;
25 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
26 al::HitSensor* self) override;
27 void endClipped() override;
28 void appear() override;
29 void control() override;
30
31 void rotate();
32
33 void exeWait();
34 void exeGot();
35 void exeCountUp();
36
37private:
38 CoinStateCountUp* mStateCountUp = nullptr;
39 ExternalForceKeeper* mExternalForceKeeper = nullptr;
40 CoinRotateCalculator* mRotateCalculator = nullptr;
41 al::MtxConnector* mMtxConnector = nullptr;
42 const char* mArchiveName = nullptr;
43 sead::Matrix34f mWaterSurfaceMatrix = sead::Matrix34f::ident;
44 bool mIsNotInWater = false;
45};
46