From 0d003a2d2a8807983f23372dd15eabd403cd4b1c Mon Sep 17 00:00:00 2001 From: Woazboat Date: Wed, 29 Apr 2015 00:14:42 +0200 Subject: Changed Tracer::m_NormalTable to static array Was previously instantiated for every trace --- src/Tracer.cpp | 27 ++++++++++++++++++++------- src/Tracer.h | 4 +++- 2 files changed, 23 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/Tracer.cpp b/src/Tracer.cpp index e604f4a5b..bd5fcebc5 100644 --- a/src/Tracer.cpp +++ b/src/Tracer.cpp @@ -13,16 +13,29 @@ +const std::array& cTracer::m_NormalTable(void) +{ + static std::array* table = + new std::array + { + { + Vector3f(-1, 0, 0), // 1: -x + Vector3f( 0, 0, -1), // 2: -z + Vector3f( 1, 0, 0), // 3: +x + Vector3f( 0, 0, 1), // 4: +z + Vector3f( 0, 1, 0), // 5: +y + Vector3f( 0, -1, 0) // 6: -y + } + }; + + return *table; +}; + + cTracer::cTracer(cWorld * a_World): m_World(a_World) { - m_NormalTable[0].Set(-1, 0, 0); - m_NormalTable[1].Set( 0, 0, -1); - m_NormalTable[2].Set( 1, 0, 0); - m_NormalTable[3].Set( 0, 0, 1); - m_NormalTable[4].Set( 0, 1, 0); - m_NormalTable[5].Set( 0, -1, 0); } @@ -241,7 +254,7 @@ bool cTracer::Trace(const Vector3f & a_Start, const Vector3f & a_Direction, int int Normal = GetHitNormal(a_Start, End, pos); if (Normal > 0) { - HitNormal = m_NormalTable[Normal-1]; + HitNormal = m_NormalTable()[Normal - 1]; } return true; } diff --git a/src/Tracer.h b/src/Tracer.h index ec87d449e..cf54fa66c 100644 --- a/src/Tracer.h +++ b/src/Tracer.h @@ -3,6 +3,8 @@ #include "Vector3.h" +#include + @@ -64,7 +66,7 @@ private: float SigNum( float a_Num); cWorld* m_World; - Vector3f m_NormalTable[6]; + static const std::array & m_NormalTable(void); Vector3f dir; Vector3f tDelta; -- cgit v1.2.3