diff options
author | _AG <gennariarmando@outlook.com> | 2019-07-07 15:16:54 +0200 |
---|---|---|
committer | _AG <gennariarmando@outlook.com> | 2019-07-07 15:16:54 +0200 |
commit | d1c6a6aaa6c17250e069d1267b27e13303d6e20f (patch) | |
tree | 76d55bfd8bcc8f72cdd4d261c0bb1eaa050e522a /src/peds/PedIK.h | |
parent | Merge branch 'master' into master (diff) | |
parent | the great reorganization (diff) | |
download | re3-d1c6a6aaa6c17250e069d1267b27e13303d6e20f.tar re3-d1c6a6aaa6c17250e069d1267b27e13303d6e20f.tar.gz re3-d1c6a6aaa6c17250e069d1267b27e13303d6e20f.tar.bz2 re3-d1c6a6aaa6c17250e069d1267b27e13303d6e20f.tar.lz re3-d1c6a6aaa6c17250e069d1267b27e13303d6e20f.tar.xz re3-d1c6a6aaa6c17250e069d1267b27e13303d6e20f.tar.zst re3-d1c6a6aaa6c17250e069d1267b27e13303d6e20f.zip |
Diffstat (limited to 'src/peds/PedIK.h')
-rw-r--r-- | src/peds/PedIK.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/peds/PedIK.h b/src/peds/PedIK.h new file mode 100644 index 00000000..e17d52eb --- /dev/null +++ b/src/peds/PedIK.h @@ -0,0 +1,40 @@ +#pragma once +#include "common.h" +#include "PedModelInfo.h" +#include "AnimBlendClumpData.h" + +struct LimbOrientation +{ + float phi; + float theta; +}; + +class CPed; + +class CPedIK +{ +public: + // TODO + enum { + FLAG_1 = 1, + FLAG_2 = 2, // related to looking somewhere + FLAG_4 = 4, // aims with arm + }; + + CPed *m_ped; + LimbOrientation m_headOrient; + LimbOrientation m_torsoOrient; + LimbOrientation m_upperArmOrient; + LimbOrientation m_lowerArmOrient; + int32 m_flags; + + CPedIK(CPed *ped); + bool PointGunInDirection(float phi, float theta); + bool PointGunAtPosition(CVector *position); + void GetComponentPosition(RwV3d *pos, PedNode node); + static RwMatrix *GetWorldMatrix(RwFrame *source, RwMatrix *destination); + void RotateTorso(AnimBlendFrameData* animBlend, LimbOrientation* limb, bool changeRoll); + void ExtractYawAndPitchLocal(RwMatrixTag*, float*, float*); + void ExtractYawAndPitchWorld(RwMatrixTag*, float*, float*); +}; +static_assert(sizeof(CPedIK) == 0x28, "CPedIK: error"); |