From 88e9b7fd5ff96f4f3265d2ea87488b74f413282a Mon Sep 17 00:00:00 2001 From: spartanj Date: Thu, 2 Jun 2011 03:14:19 -0300 Subject: [PATCH] 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. --- src/graphics/cbatchrenderer.cpp | 3 +++ src/ui/cuicomplexcontrol.cpp | 3 ++- src/ui/cuiwindow.cpp | 26 ++++++++++++++------------ 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/graphics/cbatchrenderer.cpp b/src/graphics/cbatchrenderer.cpp index a810143be..6fbe40968 100755 --- a/src/graphics/cbatchrenderer.cpp +++ b/src/graphics/cbatchrenderer.cpp @@ -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; } diff --git a/src/ui/cuicomplexcontrol.cpp b/src/ui/cuicomplexcontrol.cpp index 39743ba88..92e616863 100644 --- a/src/ui/cuicomplexcontrol.cpp +++ b/src/ui/cuicomplexcontrol.cpp @@ -162,7 +162,8 @@ void cUIComplexControl::OnParentSizeChange( const eeVector2i& SizeChange ) { } } - Size( newSize ); + if ( newSize != mSize ) + Size( newSize ); cUIControlAnim::OnParentSizeChange( SizeChange ); } diff --git a/src/ui/cuiwindow.cpp b/src/ui/cuiwindow.cpp index bc2271e70..465956b41 100644 --- a/src/ui/cuiwindow.cpp +++ b/src/ui/cuiwindow.cpp @@ -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(); }