diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Tracer.cpp | 14 | ||||
-rw-r--r-- | src/Tracer.h | 3 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/Tracer.cpp b/src/Tracer.cpp index 816bc0fe8..aa8689814 100644 --- a/src/Tracer.cpp +++ b/src/Tracer.cpp @@ -12,6 +12,8 @@ +const float FLOAT_EPSILON = 0.0001f; //TODO: Stash this in some header where it can be reused + cTracer::cTracer(cWorld * a_World): @@ -37,7 +39,7 @@ cTracer::~cTracer() -float cTracer::SigNum(float a_Num) +int cTracer::SigNum(float a_Num) { if (a_Num < 0.f) { @@ -63,9 +65,10 @@ void cTracer::SetValues(const Vector3f & a_Start, const Vector3f & a_Direction) dir = a_Direction; // decide which direction to start walking in - step.x = (int) SigNum(dir.x); - step.y = (int) SigNum(dir.y); - step.z = (int) SigNum(dir.z); + step.x = SigNum(dir.x); + step.y = SigNum(dir.y); + step.z = SigNum(dir.z); + // normalize the direction vector dir.Normalize(); @@ -302,8 +305,7 @@ int cTracer::intersect3D_SegmentPlane(const Vector3f & a_Origin, const Vector3f float D = a_PlaneNormal.Dot(u); // dot(Pn.n, u); float N = -(a_PlaneNormal.Dot(w)); // -dot(a_Plane.n, w); - const float EPSILON = 0.0001f; - if (fabs(D) < EPSILON) + if (fabs(D) < FLOAT_EPSILON) { // segment is parallel to plane if (N == 0.0) diff --git a/src/Tracer.h b/src/Tracer.h index ec87d449e..821131539 100644 --- a/src/Tracer.h +++ b/src/Tracer.h @@ -61,7 +61,8 @@ private: /// Return 1 through 6 for the following block faces, repectively: -x, -z, x, z, y, -y int GetHitNormal( const Vector3f & start, const Vector3f & end, const Vector3i & a_BlockPos); - float SigNum( float a_Num); + /// Signum function + int SigNum( float a_Num); cWorld* m_World; Vector3f m_NormalTable[6]; |