summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2020-06-04 17:39:18 +0200
committeraap <aap@papnet.eu>2020-06-04 17:39:26 +0200
commit95e96c86a1924a98c648fbcd251c9dca5d66c4bb (patch)
tree57e724bb453e10526346722af47c359bc90bbbab
parentfixes, mostly from miami (diff)
downloadre3-95e96c86a1924a98c648fbcd251c9dca5d66c4bb.tar
re3-95e96c86a1924a98c648fbcd251c9dca5d66c4bb.tar.gz
re3-95e96c86a1924a98c648fbcd251c9dca5d66c4bb.tar.bz2
re3-95e96c86a1924a98c648fbcd251c9dca5d66c4bb.tar.lz
re3-95e96c86a1924a98c648fbcd251c9dca5d66c4bb.tar.xz
re3-95e96c86a1924a98c648fbcd251c9dca5d66c4bb.tar.zst
re3-95e96c86a1924a98c648fbcd251c9dca5d66c4bb.zip
-rw-r--r--src/math/Quaternion.h1
-rw-r--r--src/math/math.cpp11
-rw-r--r--src/vehicles/Automobile.cpp7
3 files changed, 15 insertions, 4 deletions
diff --git a/src/math/Quaternion.h b/src/math/Quaternion.h
index 1d04bdff..dac49362 100644
--- a/src/math/Quaternion.h
+++ b/src/math/Quaternion.h
@@ -60,6 +60,7 @@ public:
}
void Slerp(const CQuaternion &q1, const CQuaternion &q2, float theta, float invSin, float t);
+ void Set(RwV3d *axis, float angle);
void Get(RwMatrix *matrix);
};
diff --git a/src/math/math.cpp b/src/math/math.cpp
index 29f18d03..0cfc2ce9 100644
--- a/src/math/math.cpp
+++ b/src/math/math.cpp
@@ -184,6 +184,17 @@ CQuaternion::Slerp(const CQuaternion &q1, const CQuaternion &q2, float theta, fl
}
void
+CQuaternion::Set(RwV3d *axis, float angle)
+{
+ float halfCos = Cos(angle*0.5f);
+ float halfSin = Sin(angle*0.5f);
+ x = axis->x*halfSin;
+ y = axis->y*halfSin;
+ z = axis->z*halfSin;
+ w = halfCos;
+}
+
+void
CQuaternion::Get(RwMatrix *matrix)
{
float x2 = x+x;
diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp
index 9fe172fa..eb1bad97 100644
--- a/src/vehicles/Automobile.cpp
+++ b/src/vehicles/Automobile.cpp
@@ -220,6 +220,7 @@ void
CAutomobile::ProcessControl(void)
{
int i;
+ float wheelRot;
CColModel *colModel;
if(bUsingSpecialColModel)
@@ -372,11 +373,9 @@ CAutomobile::ProcessControl(void)
pHandling->Transmission.CalculateGearForSimpleCar(AutoPilot.m_fMaxTrafficSpeed/50.0f, m_nCurrentGear);
- {
- float wheelRot = ProcessWheelRotation(WHEEL_STATE_NORMAL, GetForward(), m_vecMoveSpeed, 0.35f);
+ wheelRot = ProcessWheelRotation(WHEEL_STATE_NORMAL, GetForward(), m_vecMoveSpeed, 0.35f);
for(i = 0; i < 4; i++)
m_aWheelRotation[i] += wheelRot;
- }
PlayHornIfNecessary();
ReduceHornCounter();
@@ -618,7 +617,7 @@ CAutomobile::ProcessControl(void)
for(i = 0; i < 4; i++){
if(m_aSuspensionSpringRatio[i] < 1.0f){
float bias = pHandling->fSuspensionBias;
- if(i == 1 || i == 3) // rear
+ if(i == CARWHEEL_REAR_LEFT || i == CARWHEEL_REAR_RIGHT)
bias = 1.0f - bias;
ApplySpringCollision(pHandling->fSuspensionForceLevel,