mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-05-13 10:48:59 +00:00
51 lines
1.5 KiB
C++
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
|