mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <math/seadMatrix.h>
|
|
#include <math/seadVector.h>
|
|
|
|
namespace al {
|
|
|
|
class JointAimInfo {
|
|
public:
|
|
JointAimInfo();
|
|
void makeTurnQuat(sead::Quatf* quat, const sead::Vector3f& targetDir) const;
|
|
void makeTurnQuatCircle(sead::Quatf* quat, const sead::Vector3f& targetDir) const;
|
|
void makeTurnQuatOval(sead::Quatf* quat, const sead::Vector3f& targetDir) const;
|
|
void makeTurnQuatRect(sead::Quatf* quat, const sead::Vector3f& targetDir) const;
|
|
void setBaseAimLocalDir(const sead::Vector3f& aim);
|
|
void setBaseUpLocalDir(const sead::Vector3f& up);
|
|
void setBaseSideLocalDir(const sead::Vector3f& side);
|
|
void setBaseOffsetLocal(const sead::Vector3f& offset);
|
|
void setBaseMtxPtr(const sead::Matrix34f* mtxPtr);
|
|
void setTargetPos(const sead::Vector3f& pos);
|
|
void setPowerRate(f32 rate);
|
|
void setLimitDegreeCircle(f32 degree);
|
|
// TODO: rename params
|
|
void setLimitDegreeOval(f32 a, f32 b, f32 c, f32 d);
|
|
// TODO: rename params
|
|
void setLimitDegreeRect(f32 a, f32 b, f32 c, f32 d);
|
|
void setEnableBackAim(bool enable);
|
|
void addPowerRate(f32 rate);
|
|
void subPowerRate(f32 rate);
|
|
void setInterpoleRate(f32 rate);
|
|
|
|
private:
|
|
sead::Vector3f mTargetPos = sead::Vector3f::zero;
|
|
sead::Vector3f mBaseAimLocalDir = sead::Vector3f::ez;
|
|
sead::Vector3f mBaseSideLocalDir = sead::Vector3f::ex;
|
|
sead::Vector3f mBaseUpLocalDir = sead::Vector3f::ey;
|
|
sead::Vector3f mBaseOffsetLocal = sead::Vector3f::zero;
|
|
const sead::Matrix34f* mBaseMtxPtr = nullptr;
|
|
f32 mPowerRate = 1.0f;
|
|
f32 mInterpoleRate = 0.1f;
|
|
f32 _50 = 30.0f;
|
|
f32 _54 = 30.0f;
|
|
f32 _58 = 30.0f;
|
|
f32 _5c = 30.0f;
|
|
s32 _60 = 0;
|
|
bool mIsEnableBackAim = false;
|
|
};
|
|
|
|
static_assert(sizeof(JointAimInfo) == 0x68);
|
|
|
|
} // namespace al
|