#pragma once #include #include #include "Library/Nerve/NerveExecutor.h" namespace al { struct ActorInitInfo; struct AnimScaleParam { AnimScaleParam(); AnimScaleParam(f32 a, f32 b, f32 c, f32 d, f32 e, f32 f, f32 g, s32 h, f32 i, f32 j, f32 k, f32 l); f32 _0 = 0.2f; f32 _4 = 0.91f; f32 _8 = 0.2f; f32 _c = 1.8f; f32 _10 = 0.06f; f32 _14 = 0.12f; f32 _18 = 0.91f; s32 _1c = 20; f32 _20 = 0.25f; f32 _24 = 0.9f; f32 _28 = 5.2f; f32 _2c = 0.05f; }; static_assert(sizeof(AnimScaleParam) == 0x30); class AnimScaleController : public NerveExecutor { public: AnimScaleController(const AnimScaleParam*); void setAnimScaleParam(const AnimScaleParam*); void startAnim(); void startVibration(); void startHitReaction(); void startAndSetScaleY(f32); void startAndSetScaleAnsVelocityY(f32, f32); void startAndSetScaleVelocityY(f32); void startAndAddScaleVelocityY(f32); void startCrush(); void stopAnim(); void stopAndReset(); void resetScale(); void stopAndSetScale(const sead::Vector3f&); void setScaleVelocityY(f32); void addScaleVelocityY(f32); void exeStop(); void exeAnim(); void updateScale(f32, f32); bool tryStop(); void exeVibration(); void exeHitReaction(); void exeCrush(); bool isHitReaction(s32) const; void setOriginalScale(const sead::Vector3f&); void update(); const sead::Vector3f& getScale() { return mScale; } private: AnimScaleParam* mParam; sead::Vector3f _18; sead::Vector3f mOriginalScale; sead::Vector3f mScale; f32 mScaleVelocityY; }; static_assert(sizeof(AnimScaleController) == 0x40); } // namespace al