OdysseyDecomp/lib/al/Library/MapObj/RollingCubeMapParts.h

51 lines
1.5 KiB
C++

#pragma once
#include "Library/LiveActor/LiveActor.h"
namespace al {
class RollingCubePoseKeeper;
class PartsModel;
class RollingCubeMapParts : public LiveActor {
public:
RollingCubeMapParts(const char* name);
void init(const ActorInitInfo& info) override;
void kill() override;
bool receiveMsg(const SensorMsg* message, HitSensor* other, HitSensor* self) override;
void control() override;
void appearAndSetStart();
void setNerveNextMovement(bool isNextFallKey);
bool isNextFallKey() const;
void exeWait();
void exeStart();
void exeRotate();
s32 getMovementTime() const;
void setNerveNextLand();
void exeSlide();
bool updateSlide();
void exeFall();
void setNerveNextFallLand();
void exeLand();
s32 getLandTime() const;
void exeFallLand();
void exeStop();
bool isStop() const;
private:
RollingCubePoseKeeper* mRollingCubePoseKeeper = nullptr;
sead::Matrix34f* mMoveLimitMtx = nullptr;
PartsModel* mMoveLimitPartsModel = nullptr;
sead::Matrix34f mLandEffectMtx = sead::Matrix34f::ident;
sead::Quatf mInitialPoseQuat = sead::Quatf::unit;
sead::Vector3f mInitialPoseTrans = sead::Vector3f::zero;
sead::Quatf mCurrentPoseQuat = sead::Quatf::unit;
sead::Vector3f mCurrentPoseTrans = sead::Vector3f::zero;
sead::Vector3f mClippingTrans = sead::Vector3f::zero;
s32 mMovementTime = 0;
bool mIsStoppable = false;
};
static_assert(sizeof(RollingCubeMapParts) == 0x1a0);
} // namespace al