Merge branch 'BitmapText-attribute' of https://github.com/sigatrev/stepmania

This commit is contained in:
Kyzentun
2014-08-25 02:37:26 -06:00
3 changed files with 35 additions and 9 deletions
+9 -4
View File
@@ -288,7 +288,7 @@ void Actor::Draw()
this->PreDraw();
ASSERT( m_pTempState != NULL );
if( m_pTempState->diffuse[0].a != 0 || m_pTempState->diffuse[1].a != 0 || m_pTempState->diffuse[2].a != 0 || m_pTempState->diffuse[3].a != 0 || m_pTempState->glow.a != 0 ) // This Actor is not fully transparent
if( m_pTempState->diffuse[0].a > 0 || m_pTempState->diffuse[1].a > 0 || m_pTempState->diffuse[2].a > 0 || m_pTempState->diffuse[3].a > 0 || m_pTempState->glow.a > 0 ) // This Actor is not fully transparent
{
// call the most-derived versions
this->BeginDraw();
@@ -296,9 +296,16 @@ void Actor::Draw()
this->EndDraw();
}
this->PostDraw();
m_pTempState = NULL;
}
void Actor::PostDraw() // reset internal diffuse and glow
{
m_internalDiffuse = RageColor(1, 1, 1, 1);
m_internalGlow.a = 0;
}
void Actor::PreDraw() // calculate actor properties
{
// Somthing below may set m_pTempState to tempState
@@ -468,7 +475,6 @@ void Actor::PreDraw() // calculate actor properties
{
tempState.diffuse[i] *= m_internalDiffuse;
}
m_internalDiffuse = RageColor(1, 1, 1, 1);
}
if( m_internalGlow.a > 0 )
@@ -481,10 +487,9 @@ void Actor::PreDraw() // calculate actor properties
// Blend using Screen mode
tempState.glow = tempState.glow + m_internalGlow - m_internalGlow * tempState.glow;
m_internalGlow.a = 0;
}
}
void Actor::BeginDraw() // set the world matrix
{
DISPLAY->PushMatrix();
+2
View File
@@ -244,6 +244,8 @@ public:
virtual bool EarlyAbortDraw() const { return false; }
/** @brief Calculate values that may be needed for drawing. */
virtual void PreDraw();
/** @brief Reset internal diffuse and glow. */
virtual void PostDraw();
/** @brief Start the drawing and push the transform on the world matrix stack. */
virtual void BeginDraw();
/**
+24 -5
View File
@@ -659,10 +659,20 @@ void BitmapText::DrawPrimitives()
iEnd = min( iEnd, m_aVertices.size() );
for( ; i < iEnd; i += 4 )
{
m_aVertices[i+0].c = attr.diffuse[0]; // top left
m_aVertices[i+1].c = attr.diffuse[2]; // bottom left
m_aVertices[i+2].c = attr.diffuse[3]; // bottom right
m_aVertices[i+3].c = attr.diffuse[1]; // top right
if( m_internalDiffuse != RageColor(1, 1, 1, 1) )
{
m_aVertices[i+0].c = attr.diffuse[0] * m_internalDiffuse;
m_aVertices[i+1].c = attr.diffuse[2] * m_internalDiffuse;
m_aVertices[i+2].c = attr.diffuse[3] * m_internalDiffuse;
m_aVertices[i+3].c = attr.diffuse[1] * m_internalDiffuse;
}
else
{
m_aVertices[i+0].c = attr.diffuse[0]; // top left
m_aVertices[i+1].c = attr.diffuse[2]; // bottom left
m_aVertices[i+2].c = attr.diffuse[3]; // bottom right
m_aVertices[i+3].c = attr.diffuse[1]; // top right
}
}
}
}
@@ -729,7 +739,16 @@ void BitmapText::DrawPrimitives()
iEnd = i + attr.length*4;
iEnd = min( iEnd, m_aVertices.size() );
for( ; i < iEnd; ++i )
m_aVertices[i].c = attr.glow;
{
if( m_internalGlow.a > 0 )
{
m_aVertices[i].c = attr.glow * m_internalGlow;
}
else
{
m_aVertices[i].c = attr.glow;
}
}
}
/* Draw glow using the base texture and the glow texture. Otherwise,
* glow looks too tame on BitmapText that has a stroke. - Chris Danford */