1#pragma once
2
3#include "Library/LiveActor/LiveActor.h"
4
5namespace al {
6template <class T>
7class DeriveActorGroup;
8class ConveyerStep;
9class ConveyerKeyKeeper;
10
11class ConveyerMapParts : public LiveActor {
12public:
13 ConveyerMapParts(const char* name);
14
15 void init(const ActorInitInfo& info) override;
16 bool receiveMsg(const SensorMsg* message, HitSensor* other, HitSensor* self) override;
17 void control() override;
18 void startClipped() override;
19 void endClipped() override;
20
21 void start();
22 void stop();
23
24 void exeStandBy();
25 void exeMove();
26
27private:
28 DeriveActorGroup<ConveyerStep>* mConveyerStepGroup = nullptr;
29 ConveyerKeyKeeper* mConveyerKeyKeeper = nullptr;
30 sead::Vector3f mClippingTrans = sead::Vector3f::zero;
31 f32 mOffsetCoord = 0.0f;
32 f32 mMoveSpeed = 5.0f;
33 f32 mPartsInterval = 200.0f;
34 f32 mMaxCoord = 0.0f;
35 s32 mAddRideActiveFrames = 0;
36 s32 mRideActiveFrames = 0;
37 s32 mMaxRideActiveFrames = 30;
38 bool mIsRideOnlyMove = false;
39};
40
41static_assert(sizeof(ConveyerMapParts) == 0x148);
42} // namespace al
43