func_tracktrain: Do avelocity rotation a bit better. Still need to figure out turning faster.
This commit is contained in:
parent
cdfae26413
commit
d562e4d742
1 changed files with 28 additions and 9 deletions
|
@ -57,6 +57,7 @@ class func_tracktrain:NSRenderableEntity
|
||||||
float m_flDamage;
|
float m_flDamage;
|
||||||
float m_flHeight;
|
float m_flHeight;
|
||||||
float m_flStartSpeed;
|
float m_flStartSpeed;
|
||||||
|
float m_flBank;
|
||||||
string m_strMoveSnd;
|
string m_strMoveSnd;
|
||||||
string m_strStopSnd;
|
string m_strStopSnd;
|
||||||
|
|
||||||
|
@ -185,16 +186,34 @@ func_tracktrain::PathMove(void)
|
||||||
|
|
||||||
velocity = (vecVelocity * (1 / flTravelTime));
|
velocity = (vecVelocity * (1 / flTravelTime));
|
||||||
|
|
||||||
vector angledest;
|
vector vecAngleDest;
|
||||||
/* get the difference in perspective */
|
vector vecDiff;
|
||||||
angledest = vectoangles(eNode.origin - vecWorldPos);
|
vector vecAngleDiff;
|
||||||
angledest[1] += 180.0f; /* this is an evil hack */
|
|
||||||
angledest = (angledest - angles);
|
|
||||||
angledest[0] = 0;
|
|
||||||
angledest[1] = Math_FixDelta(angledest[1]);
|
|
||||||
angledest[2] = 0;
|
|
||||||
|
|
||||||
avelocity = angledest;
|
vecDiff = eNode.origin - origin;
|
||||||
|
|
||||||
|
/* the direction we're aiming for */
|
||||||
|
vecAngleDest = vectoangles(vecDiff);
|
||||||
|
|
||||||
|
vecAngleDest[1] += 180.0f; /* this is an evil hack */
|
||||||
|
|
||||||
|
/* we only care about YAW */
|
||||||
|
vecAngleDest[0] = -Math_FixDelta(vecAngleDest[0]);
|
||||||
|
vecAngleDest[1] = Math_FixDelta(vecAngleDest[1]);
|
||||||
|
vecAngleDest[2] = 0;
|
||||||
|
|
||||||
|
vecAngleDiff = vecAngleDest - angles;
|
||||||
|
vecAngleDiff[2] = 0;
|
||||||
|
|
||||||
|
print(sprintf("vecAngleDiff: %v\n", vecAngleDiff));
|
||||||
|
|
||||||
|
if (vecAngleDiff[1] == 0)
|
||||||
|
angles = vecAngleDest;
|
||||||
|
else
|
||||||
|
avelocity = (vecAngleDiff * (1 / flTravelTime));
|
||||||
|
|
||||||
|
if (!eNode)
|
||||||
|
avelocity = [0,0,0];
|
||||||
|
|
||||||
think = PathNext;
|
think = PathNext;
|
||||||
nextthink = (ltime + flTravelTime);
|
nextthink = (ltime + flTravelTime);
|
||||||
|
|
Loading…
Reference in a new issue