Fixed a bug on the batch renderer, now force rendering when the blend func changes.

Fixed a bug on the main window resize event of the UI, that caused a bad resizing of the childs.
Played a little bit with the ui window shadow.
This commit is contained in:
spartanj
2011-06-02 03:14:19 -03:00
parent 0a2eebfc0b
commit 88e9b7fd5f
3 changed files with 19 additions and 13 deletions

View File

@@ -69,6 +69,9 @@ void cBatchRenderer::SetTexture( const cTexture * Tex ) {
}
void cBatchRenderer::SetPreBlendFunc( const EE_PRE_BLEND_FUNC& Blend ) {
if ( Blend != mBlend )
Flush();
mBlend = Blend;
}

View File

@@ -162,7 +162,8 @@ void cUIComplexControl::OnParentSizeChange( const eeVector2i& SizeChange ) {
}
}
Size( newSize );
if ( newSize != mSize )
Size( newSize );
cUIControlAnim::OnParentSizeChange( SizeChange );
}

View File

@@ -556,27 +556,29 @@ void cUIWindow::Draw() {
cPrimitives P;
P.ForceDraw( false );
eeColorA BeginC( 150, 150, 150, 50 );
eeColorA EndC( 255, 255, 255, 0 );
eeFloat SSize = 24.f;
eeColorA BeginC( 0, 0, 0, 25 );
eeColorA EndC( 0, 0, 0, 0 );
eeFloat SSize = 16.f;
P.DrawRectangle( mScreenPos.x, mScreenPos.y, mSize.Width(), mSize.Height(), BeginC, BeginC, BeginC, BeginC );
eeVector2i ShadowPos = mScreenPos + eeVector2i( 0, 16 );
P.DrawRectangle( (eeFloat)mScreenPos.x, (eeFloat)mScreenPos.y - SSize, (eeFloat)mSize.Width(), SSize, EndC, BeginC, BeginC, EndC );
P.DrawRectangle( ShadowPos.x, ShadowPos.y, mSize.Width(), mSize.Height(), BeginC, BeginC, BeginC, BeginC );
P.DrawRectangle( (eeFloat)mScreenPos.x - SSize, (eeFloat)mScreenPos.y, SSize, mSize.Height(), EndC, EndC, BeginC, BeginC );
P.DrawRectangle( ShadowPos.x, ShadowPos.y - SSize, mSize.Width(), SSize, EndC, BeginC, BeginC, EndC );
P.DrawRectangle( mScreenPos.x + mSize.Width(), mScreenPos.y, SSize, mSize.Height(), BeginC, BeginC, EndC, EndC );
P.DrawRectangle( ShadowPos.x - SSize, ShadowPos.y, SSize, mSize.Height(), EndC, EndC, BeginC, BeginC );
P.DrawRectangle( mScreenPos.x, mScreenPos.y + mSize.Height(), mSize.Width(), SSize, BeginC, EndC, EndC, BeginC );
P.DrawRectangle( ShadowPos.x + mSize.Width(), ShadowPos.y, SSize, mSize.Height(), BeginC, BeginC, EndC, EndC );
P.DrawTriangle( eeTriangle2f( eeVector2f( mScreenPos.x + mSize.Width(), mScreenPos.y ), eeVector2f( mScreenPos.x + mSize.Width(), mScreenPos.y - SSize ), eeVector2f( mScreenPos.x + mSize.Width() + SSize, mScreenPos.y ) ), BeginC, EndC, EndC );
P.DrawRectangle( ShadowPos.x, ShadowPos.y + mSize.Height(), mSize.Width(), SSize, BeginC, EndC, EndC, BeginC );
P.DrawTriangle( eeTriangle2f( eeVector2f( mScreenPos.x, mScreenPos.y ), eeVector2f( mScreenPos.x, mScreenPos.y - SSize ), eeVector2f( mScreenPos.x - SSize, mScreenPos.y ) ), BeginC, EndC, EndC );
P.DrawTriangle( eeTriangle2f( eeVector2f( ShadowPos.x + mSize.Width(), ShadowPos.y ), eeVector2f( ShadowPos.x + mSize.Width(), ShadowPos.y - SSize ), eeVector2f( ShadowPos.x + mSize.Width() + SSize, ShadowPos.y ) ), BeginC, EndC, EndC );
P.DrawTriangle( eeTriangle2f( eeVector2f( mScreenPos.x + mSize.Width(), mScreenPos.y + mSize.Height() ), eeVector2f( mScreenPos.x + mSize.Width(), mScreenPos.y + mSize.Height() + SSize ), eeVector2f( mScreenPos.x + mSize.Width() + SSize, mScreenPos.y + mSize.Height() ) ), BeginC, EndC, EndC );
P.DrawTriangle( eeTriangle2f( eeVector2f( ShadowPos.x, ShadowPos.y ), eeVector2f( ShadowPos.x, ShadowPos.y - SSize ), eeVector2f( ShadowPos.x - SSize, ShadowPos.y ) ), BeginC, EndC, EndC );
P.DrawTriangle( eeTriangle2f( eeVector2f( mScreenPos.x, mScreenPos.y + mSize.Height() ), eeVector2f( mScreenPos.x - SSize, mScreenPos.y + mSize.Height() ), eeVector2f( mScreenPos.x, mScreenPos.y + mSize.Height() + SSize ) ), BeginC, EndC, EndC );
P.DrawTriangle( eeTriangle2f( eeVector2f( ShadowPos.x + mSize.Width(), ShadowPos.y + mSize.Height() ), eeVector2f( ShadowPos.x + mSize.Width(), ShadowPos.y + mSize.Height() + SSize ), eeVector2f( ShadowPos.x + mSize.Width() + SSize, ShadowPos.y + mSize.Height() ) ), BeginC, EndC, EndC );
P.DrawTriangle( eeTriangle2f( eeVector2f( ShadowPos.x, ShadowPos.y + mSize.Height() ), eeVector2f( ShadowPos.x - SSize, ShadowPos.y + mSize.Height() ), eeVector2f( ShadowPos.x, ShadowPos.y + mSize.Height() + SSize ) ), BeginC, EndC, EndC );
P.DrawBatch();
}