| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <math/seadQuat.h> |
| 4 | #include <math/seadVector.h> |
| 5 | |
| 6 | namespace al { |
| 7 | struct ActorInitInfo; |
| 8 | class PlacementInfo; |
| 9 | |
| 10 | // TODO: I'm not sure about this |
| 11 | struct ConveyerKey { |
| 12 | void* _0[5]; |
| 13 | const PlacementInfo& placementInfo; |
| 14 | }; |
| 15 | |
| 16 | class ConveyerKeyKeeper { |
| 17 | public: |
| 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 | |
| 30 | private: |
| 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 |