1#pragma once
2
3#include <math/seadQuat.h>
4#include <math/seadVector.h>
5
6namespace al {
7struct ActorInitInfo;
8class PlacementInfo;
9
10// TODO: I'm not sure about this
11struct ConveyerKey {
12 void* _0[5];
13 const PlacementInfo& placementInfo;
14};
15
16class ConveyerKeyKeeper {
17public:
18 ConveyerKeyKeeper();
19
20 void init(const ActorInitInfo& info);
21 void calcPosAndQuat(sead::Vector3f* pos, sead::Quatf* quat, s32* index, f32 coord) const;
22 void calcPosAndQuatByKeyIndex(sead::Vector3f* pos, sead::Quatf* quat, s32 index) const;
23 void calcClippingSphere(sead::Vector3f* clippingTrans, f32* clippingRadius, f32 offset) const;
24 const ConveyerKey* getConveyerKey(s32 index) const; // return type depends on the type of _0
25
26 s32 getConveyerKeyCount() const { return mConveyerKeyCount; }
27
28 f32 getTotalMoveDistance() const { return mTotalMoveDistance; }
29
30private:
31 ConveyerKey* mConveyerKeys; // array of a struct/class with a size of 0x30?
32 s32 mConveyerKeyCount;
33 sead::Quatf mQuat;
34 sead::Vector3f mTrans;
35 sead::Vector3f mMoveDirection;
36 f32 mTotalMoveDistance;
37};
38} // namespace al
39