mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 14:20:00 +00:00
implemented CVector2D::NormaliseSafe for SkidMarks
This commit is contained in:
parent
fd229ed47e
commit
6ef7924e01
|
@ -11,14 +11,16 @@ public:
|
||||||
float Magnitude(void) const { return Sqrt(x*x + y*y); }
|
float Magnitude(void) const { return Sqrt(x*x + y*y); }
|
||||||
float MagnitudeSqr(void) const { return 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();
|
float sq = MagnitudeSqr();
|
||||||
//if(sq > 0.0f){
|
if(sq > 0.0f){
|
||||||
float invsqrt = RecipSqrt(sq);
|
float invsqrt = RecipSqrt(sq);
|
||||||
x *= invsqrt;
|
x *= invsqrt;
|
||||||
y *= invsqrt;
|
y *= invsqrt;
|
||||||
//}else
|
}else
|
||||||
// x = 1.0f;
|
y = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CVector2D &operator+=(CVector2D const &right) {
|
const CVector2D &operator+=(CVector2D const &right) {
|
||||||
|
|
|
@ -4,6 +4,19 @@
|
||||||
|
|
||||||
// TODO: move more stuff into here
|
// 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
|
void
|
||||||
CMatrix::SetRotate(float xAngle, float yAngle, float zAngle)
|
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;
|
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];
|
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);
|
CVector2D right(dist.y, -dist.x);
|
||||||
float turn = DotProduct2D(fwd, right);
|
float turn = DotProduct2D(fwd, right);
|
||||||
turn = Abs(turn) + 1.0f;
|
turn = Abs(turn) + 1.0f;
|
||||||
|
|
Loading…
Reference in a new issue