| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <gfx/seadCamera.h> |
| 4 | #include <gfx/seadProjection.h> |
| 5 | |
| 6 | #include "Library/Camera/CameraPoserFunction.h" |
| 7 | #include "Library/Nerve/NerveExecutor.h" |
| 8 | #include "Library/Yaml/ByamlIter.h" |
| 9 | |
| 10 | namespace al { |
| 11 | class CameraPoser; |
| 12 | struct CameraStartInfo; |
| 13 | |
| 14 | class CameraVerticalAbsorber : public NerveExecutor { |
| 15 | public: |
| 16 | CameraVerticalAbsorber(const CameraPoser* cameraParent, bool isCameraPosAbsorb); |
| 17 | ~CameraVerticalAbsorber(); |
| 18 | void exeAbsorb(); |
| 19 | void exeFollow(); |
| 20 | void exeFollowAbsolute(); |
| 21 | void exeFollowClimbPole(); |
| 22 | void exeFollowGround(); |
| 23 | void invalidate(); |
| 24 | bool isAbsorbing() const; |
| 25 | bool isValid() const; |
| 26 | void liberateAbsorb(); |
| 27 | void load(const ByamlIter&); |
| 28 | void makeLookAtCamera(sead::LookAtCamera*) const; |
| 29 | void start(const sead::Vector3f&, const CameraStartInfo&); |
| 30 | void tryResetAbsorbVecIfInCollision(const sead::Vector3f&); |
| 31 | void update(); |
| 32 | |
| 33 | private: |
| 34 | const CameraPoser* mCameraPoser; |
| 35 | sead::LookAtCamera mLookAtCamera; |
| 36 | sead::PerspectiveProjection mProjection; |
| 37 | sead::Vector3f mTargetInterp; |
| 38 | f32 mLerp1; |
| 39 | f32 mAbsorbScreenPosUp; |
| 40 | f32 mAbsorbScreenPosDown; |
| 41 | bool mIsAdvanceAbsorbUp; |
| 42 | f32 mAdvanceAbsorbScreenPosUp; |
| 43 | bool mIsExistCollisionUnderTarget; |
| 44 | sead::Vector3f mUnderTargetCollisionPos; |
| 45 | sead::Vector3f mUnderTargetCollisionNormal; |
| 46 | f32 mLerp2; |
| 47 | f32 mKeepInFrameOffsetUp; |
| 48 | f32 mKeepInFrameOffsetDown; |
| 49 | f32 mHighJumpJudgeSpeedV; |
| 50 | sead::Vector3f mPrevTargetTrans; |
| 51 | sead::Vector3f mTargetFront; |
| 52 | sead::Vector3f mPrevTargetFront; |
| 53 | bool mIsNoCameraPosAbsorb; |
| 54 | bool mIsInvalidated; |
| 55 | bool unk_unusedBool; |
| 56 | bool mIsStopUpdate; |
| 57 | bool mIsKeepInFrame; |
| 58 | }; |
| 59 | |
| 60 | static_assert(sizeof(CameraVerticalAbsorber) == 0x1B0); |
| 61 | |
| 62 | } // namespace al |
| 63 |