cleanup: don't keep extra source data around; use vector

This commit is contained in:
Glenn Maynard
2005-09-11 23:40:11 +00:00
parent d27c554ef1
commit b452163c3a
+17 -33
View File
@@ -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<RageSpriteVertex> m_Quads;
RageSpriteVertex *m_pCircles;
vector<RageSpriteVertex> 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