diff options
Diffstat (limited to 'src/entities/PedIK.cpp')
-rw-r--r-- | src/entities/PedIK.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/entities/PedIK.cpp b/src/entities/PedIK.cpp index ebc17097..fa773bbf 100644 --- a/src/entities/PedIK.cpp +++ b/src/entities/PedIK.cpp @@ -6,6 +6,20 @@ WRAPPER bool CPedIK::PointGunInDirection(float phi, float theta) { EAXJMP(0x4ED9B0); } WRAPPER bool CPedIK::PointGunAtPosition(CVector *position) { EAXJMP(0x4ED920); } +CPedIK::CPedIK(CPed *ped) +{ + m_ped = ped; + m_flags = 0; + m_headOrient.phi = 0.0f; + m_headOrient.theta = 0.0f; + m_torsoOrient.phi = 0.0f; + m_torsoOrient.theta = 0.0f; + m_upperArmOrient.phi = 0.0f; + m_upperArmOrient.theta = 0.0f; + m_lowerArmOrient.phi = 0.0f; + m_lowerArmOrient.theta = 0.0f; +} + void CPedIK::GetComponentPosition(RwV3d *pos, PedNode node) { @@ -13,11 +27,11 @@ CPedIK::GetComponentPosition(RwV3d *pos, PedNode node) RwMatrix *mat; f = m_ped->GetNodeFrame(node); - mat = &f->modelling; + mat = RwFrameGetMatrix(f); *pos = mat->pos; for (f = RwFrameGetParent(f); f; f = RwFrameGetParent(f)) - RwV3dTransformPoints(pos, pos, 1, &f->modelling); + RwV3dTransformPoints(pos, pos, 1, RwFrameGetMatrix(f)); } RwMatrix* @@ -25,10 +39,10 @@ CPedIK::GetWorldMatrix(RwFrame *source, RwMatrix *destination) { RwFrame *i; - *destination = source->modelling; + *destination = *RwFrameGetMatrix(source); for (i = RwFrameGetParent(source); i; i = RwFrameGetParent(i)) - RwMatrixTransform(destination, &i->modelling, rwCOMBINEPOSTCONCAT); + RwMatrixTransform(destination, RwFrameGetMatrix(i), rwCOMBINEPOSTCONCAT); return destination; } |