Corrected the problem with pendown() hanging the game (fixes #203)
parent
1db9d8bdca
commit
1c655aeda0
|
@ -517,7 +517,11 @@ inline Math::Vector NormalToPlane(const Math::Vector &p1, const Math::Vector &p2
|
||||||
*/
|
*/
|
||||||
inline Math::Vector SegmentPoint(const Math::Vector &p1, const Math::Vector &p2, float dist)
|
inline Math::Vector SegmentPoint(const Math::Vector &p1, const Math::Vector &p2, float dist)
|
||||||
{
|
{
|
||||||
return p1 + (p2 - p1) * dist;
|
Math::Vector direction = p2 - p1;
|
||||||
|
|
||||||
|
direction.Normalize();
|
||||||
|
|
||||||
|
return p1 + direction * dist;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns the distance between given point and a plane
|
//! Returns the distance between given point and a plane
|
||||||
|
|
|
@ -3818,9 +3818,12 @@ void CPhysics::WheelParticle(int color, float width)
|
||||||
{
|
{
|
||||||
dist1 = Math::Distance(m_wheelParticlePos[0], goal1);
|
dist1 = Math::Distance(m_wheelParticlePos[0], goal1);
|
||||||
if ( dist1 < step ) break;
|
if ( dist1 < step ) break;
|
||||||
|
|
||||||
dist2 = Math::Distance(m_wheelParticlePos[1], goal2);
|
dist2 = Math::Distance(m_wheelParticlePos[1], goal2);
|
||||||
|
|
||||||
wheel1 = Math::SegmentPoint(m_wheelParticlePos[0], goal1, step);
|
wheel1 = Math::SegmentPoint(m_wheelParticlePos[0], goal1, step);
|
||||||
wheel2 = Math::SegmentPoint(m_wheelParticlePos[1], goal2, step*dist2/dist1);
|
wheel2 = Math::SegmentPoint(m_wheelParticlePos[1], goal2, step * dist2 / dist1);
|
||||||
|
|
||||||
if ( m_linMotion.realSpeed.x >= 0.0f )
|
if ( m_linMotion.realSpeed.x >= 0.0f )
|
||||||
{
|
{
|
||||||
m_particle->CreateWheelTrace(m_wheelParticlePos[0], m_wheelParticlePos[1], wheel1, wheel2, parti);
|
m_particle->CreateWheelTrace(m_wheelParticlePos[0], m_wheelParticlePos[1], wheel1, wheel2, parti);
|
||||||
|
@ -3829,6 +3832,7 @@ void CPhysics::WheelParticle(int color, float width)
|
||||||
{
|
{
|
||||||
m_particle->CreateWheelTrace(m_wheelParticlePos[1], m_wheelParticlePos[0], wheel2, wheel1, parti);
|
m_particle->CreateWheelTrace(m_wheelParticlePos[1], m_wheelParticlePos[0], wheel2, wheel1, parti);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_wheelParticlePos[0] = wheel1;
|
m_wheelParticlePos[0] = wheel1;
|
||||||
m_wheelParticlePos[1] = wheel2;
|
m_wheelParticlePos[1] = wheel2;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue