mirror of
https://github.com/GTAmodding/re3.git
synced 2021-02-19 17:49:54 +01:00
implemented CVector2D::NormaliseSafe for SkidMarks
This commit is contained in:
parent
fd229ed47e
commit
6ef7924e01
@ -11,16 +11,18 @@ public:
|
||||
float Magnitude(void) const { return Sqrt(x*x + y*y); }
|
||||
float MagnitudeSqr(void) const { return x*x + y*y; }
|
||||
|
||||
void Normalise(void){
|
||||
void Normalise(void);
|
||||
|
||||
void NormaliseSafe(void) {
|
||||
float sq = MagnitudeSqr();
|
||||
//if(sq > 0.0f){
|
||||
if(sq > 0.0f){
|
||||
float invsqrt = RecipSqrt(sq);
|
||||
x *= invsqrt;
|
||||
y *= invsqrt;
|
||||
//}else
|
||||
// x = 1.0f;
|
||||
}else
|
||||
y = 1.0f;
|
||||
}
|
||||
|
||||
|
||||
const CVector2D &operator+=(CVector2D const &right) {
|
||||
x += right.x;
|
||||
y += right.y;
|
||||
|
@ -4,6 +4,19 @@
|
||||
|
||||
// TODO: move more stuff into here
|
||||
|
||||
void
|
||||
CVector2D::Normalise(void)
|
||||
{
|
||||
float sq = MagnitudeSqr();
|
||||
assert(sq != 0.0f); // just be safe here
|
||||
//if(sq > 0.0f){
|
||||
float invsqrt = RecipSqrt(sq);
|
||||
x *= invsqrt;
|
||||
y *= invsqrt;
|
||||
//}else
|
||||
// x = 1.0f;
|
||||
}
|
||||
|
||||
void
|
||||
CMatrix::SetRotate(float xAngle, float yAngle, float zAngle)
|
||||
{
|
||||
|
@ -214,7 +214,8 @@ CSkidmarks::RegisterOne(uintptr id, CVector pos, float fwdX, float fwdY, bool *i
|
||||
aSkidmarks[i].m_pos[aSkidmarks[i].m_last] = pos;
|
||||
|
||||
CVector2D dist = aSkidmarks[i].m_pos[aSkidmarks[i].m_last] - aSkidmarks[i].m_pos[aSkidmarks[i].m_last-1];
|
||||
dist.Normalise();
|
||||
dist.NormaliseSafe();
|
||||
fwd.NormaliseSafe();
|
||||
CVector2D right(dist.y, -dist.x);
|
||||
float turn = DotProduct2D(fwd, right);
|
||||
turn = Abs(turn) + 1.0f;
|
||||
|
Loading…
Reference in New Issue
Block a user