summaryrefslogtreecommitdiffstats
path: root/src/entities/PedIK.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities/PedIK.cpp')
-rw-r--r--src/entities/PedIK.cpp22
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;
}