From b452163c3a2acbe6426f2363d06f34fba71538e3 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 11 Sep 2005 23:40:11 +0000 Subject: [PATCH] cleanup: don't keep extra source data around; use vector --- stepmania/src/GraphDisplay.cpp | 50 ++++++++++++---------------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/stepmania/src/GraphDisplay.cpp b/stepmania/src/GraphDisplay.cpp index 8d464c5648..b6bf0bd9be 100644 --- a/stepmania/src/GraphDisplay.cpp +++ b/stepmania/src/GraphDisplay.cpp @@ -16,28 +16,12 @@ REGISTER_ACTOR_CLASS( GraphDisplay ) enum { VALUE_RESOLUTION=100 }; -static const int iSubdivisions = 4; -static const int iCircleVertices = iSubdivisions+2; class GraphLine: public Actor { public: - GraphLine() - { - for( unsigned i = 0; i < ARRAYSIZE(m_LineStrip); ++i ) - { - m_LineStrip[i].c = RageColor( 1,1,1,1 ); - m_LineStrip[i].t = RageVector2( 0,0 ); - } - - m_pCircles = NULL; - } - - ~GraphLine() - { - delete[] m_pCircles; - } - + enum { iSubdivisions = 4 }; + enum { iCircleVertices = iSubdivisions+2 }; void DrawPrimitives() { Actor::SetGlobalRenderStates(); // set Actor-specified render states @@ -50,13 +34,14 @@ public: for( unsigned i = 0; i < m_Quads.size(); ++i ) m_Quads[i].c = this->m_pTempState->diffuse[0]; - for( unsigned i = 0; i < VALUE_RESOLUTION*iCircleVertices; ++i ) + for( unsigned i = 0; i < m_pCircles.size(); ++i ) m_pCircles[i].c = this->m_pTempState->diffuse[0]; DISPLAY->DrawQuads( &m_Quads[0], m_Quads.size() ); - for( int i = 0; i < VALUE_RESOLUTION; ++i ) - DISPLAY->DrawFan( m_pCircles+iCircleVertices*i, iCircleVertices ); + int iFans = m_pCircles.size() / iCircleVertices; + for( int i = 0; i < iFans; ++i ) + DISPLAY->DrawFan( &m_pCircles[0]+iCircleVertices*i, iCircleVertices ); } static void MakeCircle( const RageSpriteVertex &v, RageSpriteVertex *pVerts, int iSubdivisions, float fRadius ) @@ -74,17 +59,16 @@ public: } } - void Set() + void Set( const RageSpriteVertex *m_LineStrip, int iSize ) { - delete[] m_pCircles; - m_pCircles = new RageSpriteVertex[VALUE_RESOLUTION * iCircleVertices]; + m_pCircles.resize( iSize * iCircleVertices ); - for( int i = 0; i < VALUE_RESOLUTION; ++i ) + for( int i = 0; i < iSize; ++i ) { - MakeCircle( m_LineStrip[i], m_pCircles + iCircleVertices*i, iSubdivisions, 1 ); + MakeCircle( m_LineStrip[i], &m_pCircles[0] + iCircleVertices*i, iSubdivisions, 1 ); } - int iNumLines = VALUE_RESOLUTION-1; + int iNumLines = iSize-1; m_Quads.resize( iNumLines * 4 ); for( int i = 0; i < iNumLines; ++i ) { @@ -118,11 +102,9 @@ public: } - RageSpriteVertex m_LineStrip[VALUE_RESOLUTION]; - private: vector m_Quads; - RageSpriteVertex *m_pCircles; + vector m_pCircles; }; class GraphBody: public Actor @@ -243,7 +225,6 @@ void GraphDisplay::LoadFromStageStats( const StageStats &ss, const PlayerStageSt for( int i = 0; i < VALUE_RESOLUTION; ++i ) { float fLife = m_Values[i]; - LOG->Trace( "m %i: %f", i, fLife ); if( fLife < fMinLifeSoFar ) { fMinLifeSoFar = fLife; @@ -271,6 +252,7 @@ void GraphDisplay::UpdateVerts() m_quadVertices.top = -m_size.y/2; m_quadVertices.bottom = m_size.y/2; + RageSpriteVertex LineStrip[VALUE_RESOLUTION]; for( int i = 0; i < VALUE_RESOLUTION; ++i ) { const float fX = SCALE( float(i), 0.0f, float(VALUE_RESOLUTION-1), m_quadVertices.left, m_quadVertices.right ); @@ -279,10 +261,12 @@ void GraphDisplay::UpdateVerts() m_pGraphBody->m_Slices[i*2+0].p = RageVector3( fX, m_quadVertices.top, 0 ); m_pGraphBody->m_Slices[i*2+1].p = RageVector3( fX, fY, 0 ); - m_pGraphLine->m_LineStrip[i].p = RageVector3( fX, fY, 0 ); + LineStrip[i].p = RageVector3( fX, fY, 0 ); + LineStrip[i].c = RageColor( 1,1,1,1 ); + LineStrip[i].t = RageVector2( 0,0 ); } - m_pGraphLine->Set(); + m_pGraphLine->Set( LineStrip, VALUE_RESOLUTION ); } // lua start