浏览代码

Merge pull request #1352 from Areloch/PVS_Cleanup_807

Unnecessarily repeated expressions
Daniel Buckmaster 10 年之前
父节点
当前提交
86e0e67496
共有 38 个文件被更改,包括 465 次插入371 次删除
  1. 7 5
      Engine/source/T3D/fps/guiClockHud.cpp
  2. 7 5
      Engine/source/T3D/fps/guiHealthTextHud.cpp
  3. 7 5
      Engine/source/T3D/fps/guiShapeNameHud.cpp
  4. 6 4
      Engine/source/T3D/tsStatic.cpp
  5. 5 4
      Engine/source/environment/scatterSky.cpp
  6. 5 4
      Engine/source/forest/editor/forestSelectionTool.cpp
  7. 7 6
      Engine/source/gfx/gFont.cpp
  8. 5 4
      Engine/source/gfx/gfxTextureManager.cpp
  9. 5 4
      Engine/source/gfx/gfxVertexFormat.cpp
  10. 26 24
      Engine/source/gui/containers/guiScrollCtrl.cpp
  11. 20 18
      Engine/source/gui/containers/guiWindowCtrl.cpp
  12. 12 10
      Engine/source/gui/controls/guiBitmapBorderCtrl.cpp
  13. 7 5
      Engine/source/gui/controls/guiGameListMenuCtrl.cpp
  14. 17 12
      Engine/source/gui/controls/guiGradientCtrl.cpp
  15. 29 27
      Engine/source/gui/controls/guiPopUpCtrl.cpp
  16. 29 27
      Engine/source/gui/controls/guiPopUpCtrlEx.cpp
  17. 9 7
      Engine/source/gui/controls/guiSliderCtrl.cpp
  18. 6 4
      Engine/source/gui/core/guiControl.cpp
  19. 25 19
      Engine/source/gui/core/guiDefaultControlRender.cpp
  20. 9 8
      Engine/source/gui/editor/guiMenuBar.cpp
  21. 12 10
      Engine/source/gui/editor/guiRectHandles.cpp
  22. 27 20
      Engine/source/gui/editor/guiShapeEdPreview.cpp
  23. 8 6
      Engine/source/gui/game/guiProgressBitmapCtrl.cpp
  24. 4 3
      Engine/source/gui/utility/messageVector.cpp
  25. 6 5
      Engine/source/gui/worldEditor/terrainEditor.cpp
  26. 5 4
      Engine/source/gui/worldEditor/worldEditor.cpp
  27. 5 4
      Engine/source/lighting/common/sceneLighting.cpp
  28. 7 5
      Engine/source/postFx/postEffect.cpp
  29. 7 5
      Engine/source/scene/culling/sceneCullingState.cpp
  30. 7 6
      Engine/source/scene/sceneContainer.cpp
  31. 5 4
      Engine/source/terrain/terrCollision.cpp
  32. 25 19
      Engine/source/ts/loader/tsShapeLoader.cpp
  33. 51 40
      Engine/source/ts/tsAnimate.cpp
  34. 6 4
      Engine/source/ts/tsDump.cpp
  35. 15 10
      Engine/source/ts/tsMesh.cpp
  36. 15 12
      Engine/source/ts/tsMeshFit.cpp
  37. 12 8
      Engine/source/ts/tsThread.cpp
  38. 5 4
      Engine/source/windowManager/win32/win32WindowMgr.cpp

+ 7 - 5
Engine/source/T3D/fps/guiClockHud.cpp

@@ -113,9 +113,11 @@ void GuiClockHud::initPersistFields()
 
 void GuiClockHud::onRender(Point2I offset, const RectI &updateRect)
 {
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    // Background first
    if (mShowFill)
-      GFX->getDrawUtil()->drawRectFill(updateRect, mFillColor);
+      drawUtil->drawRectFill(updateRect, mFillColor);
 
    // Convert ms time into hours, minutes and seconds.
    S32 time = S32(getTime());
@@ -129,13 +131,13 @@ void GuiClockHud::onRender(Point2I offset, const RectI &updateRect)
    // Center the text
    offset.x += (getWidth() - mProfile->mFont->getStrWidth((const UTF8 *)buf)) / 2;
    offset.y += (getHeight() - mProfile->mFont->getHeight()) / 2;
-   GFX->getDrawUtil()->setBitmapModulation(mTextColor);
-   GFX->getDrawUtil()->drawText(mProfile->mFont, offset, buf);
-   GFX->getDrawUtil()->clearBitmapModulation();
+   drawUtil->setBitmapModulation(mTextColor);
+   drawUtil->drawText(mProfile->mFont, offset, buf);
+   drawUtil->clearBitmapModulation();
 
    // Border last
    if (mShowFrame)
-      GFX->getDrawUtil()->drawRect(updateRect, mFrameColor);
+      drawUtil->drawRect(updateRect, mFrameColor);
 }
 
 

+ 7 - 5
Engine/source/T3D/fps/guiHealthTextHud.cpp

@@ -162,10 +162,12 @@ void GuiHealthTextHud::onRender(Point2I offset, const RectI &updateRect)
       else  
          mValue = 100 - (100 * control->getDamageValue());    
    }  
+
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
   
    // If enabled draw background first  
    if (mShowFill)  
-      GFX->getDrawUtil()->drawRectFill(updateRect, mFillColor);  
+      drawUtil->drawRectFill(updateRect, mFillColor);  
   
    // Prepare text and center it  
    S32 val = (S32)mValue;    
@@ -190,11 +192,11 @@ void GuiHealthTextHud::onRender(Point2I offset, const RectI &updateRect)
       }  
    }  
   
-   GFX->getDrawUtil()->setBitmapModulation(tColor);    
-   GFX->getDrawUtil()->drawText(mProfile->mFont, offset, buf);    
-   GFX->getDrawUtil()->clearBitmapModulation();    
+   drawUtil->setBitmapModulation(tColor);    
+   drawUtil->drawText(mProfile->mFont, offset, buf);    
+   drawUtil->clearBitmapModulation();    
   
    // If enabled draw the border last  
    if (mShowFrame)  
-      GFX->getDrawUtil()->drawRect(updateRect, mFrameColor);  
+      drawUtil->drawRect(updateRect, mFrameColor);  
 }  

+ 7 - 5
Engine/source/T3D/fps/guiShapeNameHud.cpp

@@ -301,18 +301,20 @@ void GuiShapeNameHud::drawName(Point2I offset, const char *name, F32 opacity)
    offset.x -= width / 2;
    offset.y -= height / 2;
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    // Background fill first
    if (mShowLabelFill)
-      GFX->getDrawUtil()->drawRectFill(RectI(offset, extent), mLabelFillColor);
+      drawUtil->drawRectFill(RectI(offset, extent), mLabelFillColor);
 
    // Deal with opacity and draw.
    mTextColor.alpha = opacity;
-   GFX->getDrawUtil()->setBitmapModulation(mTextColor);
-   GFX->getDrawUtil()->drawText(mProfile->mFont, offset + mLabelPadding, name);
-   GFX->getDrawUtil()->clearBitmapModulation();
+   drawUtil->setBitmapModulation(mTextColor);
+   drawUtil->drawText(mProfile->mFont, offset + mLabelPadding, name);
+   drawUtil->clearBitmapModulation();
 
    // Border last
    if (mShowLabelFrame)
-      GFX->getDrawUtil()->drawRect(RectI(offset, extent), mLabelFrameColor);
+      drawUtil->drawRect(RectI(offset, extent), mLabelFrameColor);
 }
 

+ 6 - 4
Engine/source/T3D/tsStatic.cpp

@@ -1171,8 +1171,10 @@ DefineEngineMethod( TSStatic, changeMaterial, void, ( const char* mapTo, Materia
       return;
    }
 
+   TSMaterialList* shapeMaterialList = object->getShape()->materialList;
+
    // Check the mapTo name exists for this shape
-   S32 matIndex = object->getShape()->materialList->getMaterialNameList().find_next(String(mapTo));
+   S32 matIndex = shapeMaterialList->getMaterialNameList().find_next(String(mapTo));
    if (matIndex < 0)
    {
       Con::errorf("TSShape::changeMaterial failed: Invalid mapTo name '%s'", mapTo);
@@ -1190,13 +1192,13 @@ DefineEngineMethod( TSStatic, changeMaterial, void, ( const char* mapTo, Materia
 
    // Replace instances with the new material being traded in. Lets make sure that we only
    // target the specific targets per inst, this is actually doing more than we thought
-   delete object->getShape()->materialList->mMatInstList[matIndex];
-   object->getShape()->materialList->mMatInstList[matIndex] = newMat->createMatInstance();
+   delete shapeMaterialList->mMatInstList[matIndex];
+   shapeMaterialList->mMatInstList[matIndex] = newMat->createMatInstance();
 
    // Finish up preparing the material instances for rendering
    const GFXVertexFormat *flags = getGFXVertexFormat<GFXVertexPNTTB>();
    FeatureSet features = MATMGR->getDefaultFeatures();
-   object->getShape()->materialList->getMaterialInst(matIndex)->init( features, flags );
+   shapeMaterialList->getMaterialInst(matIndex)->init(features, flags);
 }
 
 DefineEngineMethod( TSStatic, getModelFile, const char *, (),,

+ 5 - 4
Engine/source/environment/scatterSky.cpp

@@ -637,12 +637,13 @@ void ScatterSky::prepRenderImage( SceneRenderState *state )
       return;
 
    // Regular sky render instance.
-   ObjectRenderInst *ri = state->getRenderPass()->allocInst<ObjectRenderInst>();
+   RenderPassManager* renderPass = state->getRenderPass();
+   ObjectRenderInst *ri = renderPass->allocInst<ObjectRenderInst>();
    ri->renderDelegate.bind( this, &ScatterSky::_render );
    ri->type = RenderPassManager::RIT_Sky;
    ri->defaultKey = 10;
    ri->defaultKey2 = 0;
-   state->getRenderPass()->addInst( ri );
+   renderPass->addInst(ri);
 
    // Debug render instance.
    /*
@@ -685,13 +686,13 @@ void ScatterSky::prepRenderImage( SceneRenderState *state )
       mMatrixSet->setSceneProjection(GFX->getProjectionMatrix());
       mMatrixSet->setWorld(GFX->getWorldMatrix());
 
-      ObjectRenderInst *ri = state->getRenderPass()->allocInst<ObjectRenderInst>();
+      ObjectRenderInst *ri = renderPass->allocInst<ObjectRenderInst>();
       ri->renderDelegate.bind( this, &ScatterSky::_renderMoon );
       ri->type = RenderPassManager::RIT_Sky;
       // Render after sky objects and before CloudLayer!
       ri->defaultKey = 5;
       ri->defaultKey2 = 0;
-      state->getRenderPass()->addInst( ri );
+      renderPass->addInst(ri);
    }
 }
 

+ 5 - 4
Engine/source/forest/editor/forestSelectionTool.cpp

@@ -450,10 +450,11 @@ void ForestSelectionTool::onRender2D()
       F32 hscale = wwidth * 2 / F32(mEditor->getWidth());
       F32 vscale = wheight * 2 / F32(mEditor->getHeight());
 
-      F32 left = (mDragRect.point.x - mEditor->getPosition().x) * hscale - wwidth;
-      F32 right = (mDragRect.point.x - mEditor->getPosition().x + mDragRect.extent.x) * hscale - wwidth;
-      F32 top = wheight - vscale * (mDragRect.point.y - mEditor->getPosition().y);
-      F32 bottom = wheight - vscale * (mDragRect.point.y - mEditor->getPosition().y + mDragRect.extent.y);
+      Point2I editorPosition = mEditor->getPosition();
+      F32 left = (mDragRect.point.x - editorPosition.x) * hscale - wwidth;
+      F32 right = (mDragRect.point.x - editorPosition.x + mDragRect.extent.x) * hscale - wwidth;
+      F32 top = wheight - vscale * (mDragRect.point.y - editorPosition.y);
+      F32 bottom = wheight - vscale * (mDragRect.point.y - editorPosition.y + mDragRect.extent.y);
       gDragFrustum.set(lastCameraQuery.ortho, left, right, top, bottom, lastCameraQuery.nearPlane, lastCameraQuery.farPlane, lastCameraQuery.cameraMatrix );
 
       mForest->getData()->getItems( gDragFrustum, &mDragSelection );      

+ 7 - 6
Engine/source/gfx/gFont.cpp

@@ -918,17 +918,18 @@ void GFont::importStrip(const char *fileName, U32 padding, U32 kerning)
 
       // Allocate a new bitmap for this glyph, taking into account kerning and padding.
       glyphList.increment();
-      glyphList.last().bitmap = new GBitmap(mCharInfoList[i].width + kerning + 2*padding, mCharInfoList[i].height + 2*padding, false, strip->getFormat());
-      glyphList.last().charId = i;
+      GlyphMap& lastGlyphMap = glyphList.last();
+      lastGlyphMap.bitmap = new GBitmap(mCharInfoList[i].width + kerning + 2 * padding, mCharInfoList[i].height + 2 * padding, false, strip->getFormat());
+      lastGlyphMap.charId = i;
 
       // Copy the rect.
-      RectI ri(curWidth, getBaseline() - mCharInfoList[i].yOrigin, glyphList.last().bitmap->getWidth(), glyphList.last().bitmap->getHeight());
+      RectI ri(curWidth, getBaseline() - mCharInfoList[i].yOrigin, lastGlyphMap.bitmap->getWidth(), lastGlyphMap.bitmap->getHeight());
       Point2I outRi(0,0);
-      glyphList.last().bitmap->copyRect(strip, ri, outRi); 
+      lastGlyphMap.bitmap->copyRect(strip, ri, outRi);
 
       // Update glyph attributes.
-      mCharInfoList[i].width = glyphList.last().bitmap->getWidth();
-      mCharInfoList[i].height = glyphList.last().bitmap->getHeight();
+      mCharInfoList[i].width = lastGlyphMap.bitmap->getWidth();
+      mCharInfoList[i].height = lastGlyphMap.bitmap->getHeight();
       mCharInfoList[i].xOffset -= kerning + padding;
       mCharInfoList[i].xIncrement += kerning;
       mCharInfoList[i].yOffset -= padding;

+ 5 - 4
Engine/source/gfx/gfxTextureManager.cpp

@@ -1041,7 +1041,8 @@ void GFXTextureManager::_validateTexParams( const U32 width, const U32 height,
    }
 
    // inOutFormat is not modified by this method
-   bool chekFmt = GFX->getCardProfiler()->checkFormat( testingFormat, profile, autoGenSupp ); 
+   GFXCardProfiler* cardProfiler = GFX->getCardProfiler();
+   bool chekFmt = cardProfiler->checkFormat(testingFormat, profile, autoGenSupp);
    
    if( !chekFmt )
    {
@@ -1057,16 +1058,16 @@ void GFXTextureManager::_validateTexParams( const U32 width, const U32 height,
       {
          case GFXFormatR8G8B8:
             testingFormat = GFXFormatR8G8B8X8;
-            chekFmt = GFX->getCardProfiler()->checkFormat( testingFormat, profile, autoGenSupp );
+            chekFmt = cardProfiler->checkFormat(testingFormat, profile, autoGenSupp);
             break;
 
          case GFXFormatA8:
             testingFormat = GFXFormatR8G8B8A8;
-            chekFmt = GFX->getCardProfiler()->checkFormat( testingFormat, profile, autoGenSupp );
+            chekFmt = cardProfiler->checkFormat(testingFormat, profile, autoGenSupp);
             break;
          
          default:
-            chekFmt = GFX->getCardProfiler()->checkFormat( testingFormat, profile, autoGenSupp );
+            chekFmt = cardProfiler->checkFormat(testingFormat, profile, autoGenSupp);
             break;
       }
    }

+ 5 - 4
Engine/source/gfx/gfxVertexFormat.cpp

@@ -114,10 +114,11 @@ void GFXVertexFormat::addElement( const String& semantic, GFXDeclType type, U32
 { 
    mDirty = true;
    mElements.increment();
-   mElements.last().mStreamIndex = stream; 
-   mElements.last().mSemantic = semantic.intern();
-   mElements.last().mSemanticIndex = index;
-   mElements.last().mType = type;      
+   GFXVertexElement& lastElement = mElements.last();
+   lastElement.mStreamIndex = stream;
+   lastElement.mSemantic = semantic.intern();
+   lastElement.mSemanticIndex = index;
+   lastElement.mType = type;
 }
 
 const String& GFXVertexFormat::getDescription() const

+ 26 - 24
Engine/source/gui/containers/guiScrollCtrl.cpp

@@ -1091,8 +1091,9 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     }
 
     // Render Up Arrow.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[upArrowBitmap] );
+    GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[upArrowBitmap]);
 
     // Update Pos.
     pos.y += mBitmapBounds[upArrowBitmap].extent.y;
@@ -1118,8 +1119,8 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     if ( trackRect.extent.y > 0 )
     {
         // Render Track.
-        GFX->getDrawUtil()->clearBitmapModulation();
-        GFX->getDrawUtil()->drawBitmapStretchSR( mTextureObject, trackRect, mBitmapBounds[trackBitmap] );
+       drawUtil->clearBitmapModulation();
+       drawUtil->drawBitmapStretchSR(mTextureObject, trackRect, mBitmapBounds[trackBitmap]);
     }
 
     // Update Pos.
@@ -1137,8 +1138,8 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     }
 
     // Render Down Arrow.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[downArrowBitmap] );
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[downArrowBitmap]);
 
     // Render the Thumb?
     if ( !mVBarEnabled )
@@ -1163,8 +1164,8 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     }
 
     // Render Thumb Top.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[thumbBitmapTop] );
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[thumbBitmapTop]);
 
     // Update Pos.
     pos.y += mBitmapBounds[thumbBitmapTop].extent.y;
@@ -1179,16 +1180,16 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     if ( thumbRect.extent.y > 0 )
     {
         // Render Track.
-        GFX->getDrawUtil()->clearBitmapModulation();
-        GFX->getDrawUtil()->drawBitmapStretchSR( mTextureObject, thumbRect, mBitmapBounds[thumbBitmapMiddle] );
+       drawUtil->clearBitmapModulation();
+       drawUtil->drawBitmapStretchSR(mTextureObject, thumbRect, mBitmapBounds[thumbBitmapMiddle]);
     }
 
     // Update Pos.
     pos.y += thumbRect.extent.y;
 
     // Render the Thumb Bottom.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[thumbBitmapBottom] );
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[thumbBitmapBottom]);
 }
 
 //-----------------------------------------------------------------------------
@@ -1215,8 +1216,9 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     }
 
     // Render Up Arrow.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[leftArrowBitmap] );
+    GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[leftArrowBitmap]);
 
     // Update Pos.
     pos.x += mBitmapBounds[leftArrowBitmap].extent.x;
@@ -1242,8 +1244,8 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     if ( trackRect.extent.x > 0 )
     {
         // Render Track.
-        GFX->getDrawUtil()->clearBitmapModulation();
-        GFX->getDrawUtil()->drawBitmapStretchSR( mTextureObject, trackRect, mBitmapBounds[trackBitmap] );
+       drawUtil->clearBitmapModulation();
+       drawUtil->drawBitmapStretchSR(mTextureObject, trackRect, mBitmapBounds[trackBitmap]);
     }
 
     // Update Pos.
@@ -1261,8 +1263,8 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     }
 
     // Render Right Arrow.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[rightArrowBitmap] );
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[rightArrowBitmap]);
 
     // Render the Thumb?
     if ( !mHBarEnabled )
@@ -1287,8 +1289,8 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     }
 
     // Render Thumb Left.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[thumbBitmapLeft] );
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[thumbBitmapLeft]);
 
     // Update Pos.
     pos.x += mBitmapBounds[thumbBitmapLeft].extent.x;
@@ -1303,16 +1305,16 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     if ( thumbRect.extent.x > 0 )
     {
         // Render Track.
-        GFX->getDrawUtil()->clearBitmapModulation();
-        GFX->getDrawUtil()->drawBitmapStretchSR( mTextureObject, thumbRect, mBitmapBounds[thumbBitmapMiddle] );
+       drawUtil->clearBitmapModulation();
+       drawUtil->drawBitmapStretchSR(mTextureObject, thumbRect, mBitmapBounds[thumbBitmapMiddle]);
     }
 
     // Update Pos.
     pos.x += thumbRect.extent.x;
 
     // Render the Thumb Bottom.
-    GFX->getDrawUtil()->clearBitmapModulation();
-    GFX->getDrawUtil()->drawBitmapSR( mTextureObject, pos, mBitmapBounds[thumbBitmapRight] );
+    drawUtil->clearBitmapModulation();
+    drawUtil->drawBitmapSR(mTextureObject, pos, mBitmapBounds[thumbBitmapRight]);
 }
 
 //-----------------------------------------------------------------------------

+ 20 - 18
Engine/source/gui/containers/guiWindowCtrl.cpp

@@ -1294,11 +1294,13 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
    
    winRect.extent.x += 1;
 
-   GFX->getDrawUtil()->drawRectFill(winRect, mProfile->mFillColor);
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
 
-   GFX->getDrawUtil()->clearBitmapModulation();
-   GFX->getDrawUtil()->drawBitmapSR(mTextureObject, offset, mBitmapBounds[topBase]);
-   GFX->getDrawUtil()->drawBitmapSR(mTextureObject, Point2I(offset.x + getWidth() - mBitmapBounds[topBase+1].extent.x, offset.y),
+   drawUtil->drawRectFill(winRect, mProfile->mFillColor);
+
+   drawUtil->clearBitmapModulation();
+   drawUtil->drawBitmapSR(mTextureObject, offset, mBitmapBounds[topBase]);
+   drawUtil->drawBitmapSR(mTextureObject, Point2I(offset.x + getWidth() - mBitmapBounds[topBase+1].extent.x, offset.y),
                    mBitmapBounds[topBase + 1]);
 
    RectI destRect;
@@ -1308,7 +1310,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
    destRect.extent.y = mBitmapBounds[topBase + 2].extent.y;
    RectI stretchRect = mBitmapBounds[topBase + 2];
    stretchRect.inset(1,0);
-   GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+   drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
 
    destRect.point.x = offset.x;
    destRect.point.y = offset.y + mBitmapBounds[topBase].extent.y;
@@ -1316,7 +1318,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
    destRect.extent.y = getHeight() - mBitmapBounds[topBase].extent.y - mBitmapBounds[BorderBottomLeft].extent.y;
    stretchRect = mBitmapBounds[BorderLeft];
    stretchRect.inset(0,1);
-   GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+   drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
 
    destRect.point.x = offset.x + getWidth() - mBitmapBounds[BorderRight].extent.x;
    destRect.extent.x = mBitmapBounds[BorderRight].extent.x;
@@ -1325,10 +1327,10 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
 
    stretchRect = mBitmapBounds[BorderRight];
    stretchRect.inset(0,1);
-   GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+   drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
 
-   GFX->getDrawUtil()->drawBitmapSR(mTextureObject, offset + Point2I(0, getHeight() - mBitmapBounds[BorderBottomLeft].extent.y), mBitmapBounds[BorderBottomLeft]);
-   GFX->getDrawUtil()->drawBitmapSR(mTextureObject, offset + getExtent() - mBitmapBounds[BorderBottomRight].extent, mBitmapBounds[BorderBottomRight]);
+   drawUtil->drawBitmapSR(mTextureObject, offset + Point2I(0, getHeight() - mBitmapBounds[BorderBottomLeft].extent.y), mBitmapBounds[BorderBottomLeft]);
+   drawUtil->drawBitmapSR(mTextureObject, offset + getExtent() - mBitmapBounds[BorderBottomRight].extent, mBitmapBounds[BorderBottomRight]);
 
    destRect.point.x = offset.x + mBitmapBounds[BorderBottomLeft].extent.x;
    destRect.extent.x = getWidth() - mBitmapBounds[BorderBottomLeft].extent.x - mBitmapBounds[BorderBottomRight].extent.x;
@@ -1338,13 +1340,13 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
    stretchRect = mBitmapBounds[BorderBottom];
    stretchRect.inset(1,0);
 
-   GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+   drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
 
    // Draw the title
    // dhc addition: copied/modded from renderJustifiedText, since we enforce a
    // different color usage here. NOTE: it currently CAN overdraw the controls
    // if mis-positioned or 'scrunched' in a small width.
-   GFX->getDrawUtil()->setBitmapModulation(mProfile->mFontColor);
+   drawUtil->setBitmapModulation(mProfile->mFontColor);
    S32 textWidth = mProfile->mFont->getStrWidth((const UTF8 *)mText);
    Point2I start(0,0);
 
@@ -1359,7 +1361,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
    if( textWidth > winRect.extent.x ) start.set( 0, 0 );
    // center the vertical
 //   start.y = ( winRect.extent.y - ( font->getHeight() - 2 ) ) / 2;
-   GFX->getDrawUtil()->drawText( mProfile->mFont, start + offset + mProfile->mTextOffset, mText );
+   drawUtil->drawText( mProfile->mFont, start + offset + mProfile->mTextOffset, mText );
 
    // Deal with rendering the titlebar controls
    AssertFatal(root, "Unable to get the root GuiCanvas.");
@@ -1378,8 +1380,8 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
             bmp += BmpHilite;
       }
 
-      GFX->getDrawUtil()->clearBitmapModulation();
-      GFX->getDrawUtil()->drawBitmapSR(mTextureObject, offset + mCloseButton.point, mBitmapBounds[bmp]);
+      drawUtil->clearBitmapModulation();
+      drawUtil->drawBitmapSR(mTextureObject, offset + mCloseButton.point, mBitmapBounds[bmp]);
    }
 
    // Draw the maximize button
@@ -1397,8 +1399,8 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
             bmp += BmpHilite;
       }
 
-      GFX->getDrawUtil()->clearBitmapModulation();
-      GFX->getDrawUtil()->drawBitmapSR( mTextureObject, offset + mMaximizeButton.point, mBitmapBounds[bmp] );
+      drawUtil->clearBitmapModulation();
+      drawUtil->drawBitmapSR( mTextureObject, offset + mMaximizeButton.point, mBitmapBounds[bmp] );
    }
 
    // Draw the minimize button
@@ -1416,8 +1418,8 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
             bmp += BmpHilite;
       }
 
-      GFX->getDrawUtil()->clearBitmapModulation();
-      GFX->getDrawUtil()->drawBitmapSR( mTextureObject, offset + mMinimizeButton.point, mBitmapBounds[bmp] );
+      drawUtil->clearBitmapModulation();
+      drawUtil->drawBitmapSR( mTextureObject, offset + mMinimizeButton.point, mBitmapBounds[bmp] );
    }
 
    if( !mMinimized )

+ 12 - 10
Engine/source/gui/controls/guiBitmapBorderCtrl.cpp

@@ -136,6 +136,8 @@ void GuiBitmapBorderCtrl::onRender(Point2I offset, const RectI &updateRect)
    {
       GFX->setClipRect(updateRect);
 
+      GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
       //draw the outline
       RectI winRect;
       winRect.point = offset;
@@ -148,11 +150,11 @@ void GuiBitmapBorderCtrl::onRender(Point2I offset, const RectI &updateRect)
       winRect.extent.y -= mBitmapBounds[BorderTop].extent.y + mBitmapBounds[BorderBottom].extent.y;
 
       if(mProfile->mOpaque)
-         GFX->getDrawUtil()->drawRectFill(winRect, mProfile->mFillColor);
+        drawUtil->drawRectFill(winRect, mProfile->mFillColor);
 
-      GFX->getDrawUtil()->clearBitmapModulation();
-      GFX->getDrawUtil()->drawBitmapSR(mTextureObject, offset, mBitmapBounds[BorderTopLeft]);
-      GFX->getDrawUtil()->drawBitmapSR(mTextureObject, Point2I(offset.x + getWidth() - mBitmapBounds[BorderTopRight].extent.x, offset.y),
+      drawUtil->clearBitmapModulation();
+      drawUtil->drawBitmapSR(mTextureObject, offset, mBitmapBounds[BorderTopLeft]);
+      drawUtil->drawBitmapSR(mTextureObject, Point2I(offset.x + getWidth() - mBitmapBounds[BorderTopRight].extent.x, offset.y),
                       mBitmapBounds[BorderTopRight]);
 
       RectI destRect;
@@ -162,7 +164,7 @@ void GuiBitmapBorderCtrl::onRender(Point2I offset, const RectI &updateRect)
       destRect.extent.y = mBitmapBounds[BorderTop].extent.y;
       RectI stretchRect = mBitmapBounds[BorderTop];
       stretchRect.inset(1,0);
-      GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+      drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
 
       destRect.point.x = offset.x;
       destRect.point.y = offset.y + mBitmapBounds[BorderTopLeft].extent.y;
@@ -170,7 +172,7 @@ void GuiBitmapBorderCtrl::onRender(Point2I offset, const RectI &updateRect)
       destRect.extent.y = getHeight() - mBitmapBounds[BorderTopLeft].extent.y - mBitmapBounds[BorderBottomLeft].extent.y;
       stretchRect = mBitmapBounds[BorderLeft];
       stretchRect.inset(0,1);
-      GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+      drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
 
       destRect.point.x = offset.x + getWidth() - mBitmapBounds[BorderRight].extent.x;
       destRect.extent.x = mBitmapBounds[BorderRight].extent.x;
@@ -179,10 +181,10 @@ void GuiBitmapBorderCtrl::onRender(Point2I offset, const RectI &updateRect)
 
       stretchRect = mBitmapBounds[BorderRight];
       stretchRect.inset(0,1);
-      GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+      drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
 
-      GFX->getDrawUtil()->drawBitmapSR(mTextureObject, offset + Point2I(0, getHeight() - mBitmapBounds[BorderBottomLeft].extent.y), mBitmapBounds[BorderBottomLeft]);
-      GFX->getDrawUtil()->drawBitmapSR(mTextureObject, offset + getExtent() - mBitmapBounds[BorderBottomRight].extent, mBitmapBounds[BorderBottomRight]);
+      drawUtil->drawBitmapSR(mTextureObject, offset + Point2I(0, getHeight() - mBitmapBounds[BorderBottomLeft].extent.y), mBitmapBounds[BorderBottomLeft]);
+      drawUtil->drawBitmapSR(mTextureObject, offset + getExtent() - mBitmapBounds[BorderBottomRight].extent, mBitmapBounds[BorderBottomRight]);
 
       destRect.point.x = offset.x + mBitmapBounds[BorderBottomLeft].extent.x;
       destRect.extent.x = getWidth() - mBitmapBounds[BorderBottomLeft].extent.x - mBitmapBounds[BorderBottomRight].extent.x;
@@ -192,6 +194,6 @@ void GuiBitmapBorderCtrl::onRender(Point2I offset, const RectI &updateRect)
       stretchRect = mBitmapBounds[BorderBottom];
       stretchRect.inset(1,0);
 
-      GFX->getDrawUtil()->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
+      drawUtil->drawBitmapStretchSR(mTextureObject, destRect, stretchRect);
    }
 }

+ 7 - 5
Engine/source/gui/controls/guiGameListMenuCtrl.cpp

@@ -56,6 +56,8 @@ void GuiGameListMenuCtrl::onRender(Point2I offset, const RectI &updateRect)
 {
    GuiGameListMenuProfile * profile = (GuiGameListMenuProfile *) mProfile;
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    F32 xScale = (float) getWidth() / profile->getRowWidth();
 
    bool profileHasIcons = profile->hasArrows();
@@ -121,19 +123,19 @@ void GuiGameListMenuCtrl::onRender(Point2I offset, const RectI &updateRect)
       }
 
       // render the row bitmap
-      GFX->getDrawUtil()->clearBitmapModulation();
-      GFX->getDrawUtil()->drawBitmapStretchSR(profile->mTextureObject, RectI(currentOffset, rowExtent), profile->getBitmapArrayRect(buttonTextureIndex));
+      drawUtil->clearBitmapModulation();
+      drawUtil->drawBitmapStretchSR(profile->mTextureObject, RectI(currentOffset, rowExtent), profile->getBitmapArrayRect(buttonTextureIndex));
 
       // render the row icon if it has one
       if ((iconIndex != NO_ICON) && profileHasIcons && (! profile->getBitmapArrayRect((U32)iconIndex).extent.isZero()))
       {
          iconIndex += Profile::TEX_FIRST_ICON;
-         GFX->getDrawUtil()->clearBitmapModulation();
-         GFX->getDrawUtil()->drawBitmapStretchSR(profile->mTextureObject, RectI(currentOffset + iconOffset, iconExtent), profile->getBitmapArrayRect(iconIndex));
+         drawUtil->clearBitmapModulation();
+         drawUtil->drawBitmapStretchSR(profile->mTextureObject, RectI(currentOffset + iconOffset, iconExtent), profile->getBitmapArrayRect(iconIndex));
       }
 
       // render the row text
-      GFX->getDrawUtil()->setBitmapModulation(fontColor);
+      drawUtil->setBitmapModulation(fontColor);
       renderJustifiedText(currentOffset + textOffset, textExtent, (*row)->mLabel);
    }
 

+ 17 - 12
Engine/source/gui/controls/guiGradientCtrl.cpp

@@ -249,8 +249,9 @@ bool GuiGradientCtrl::onAdd()
 {
 	Parent::onAdd();
 
-	S32 l = getBounds().point.x + mSwatchFactor, r = getBounds().point.x + getBounds().extent.x - mSwatchFactor;
-   S32 t = getBounds().point.y, b = getBounds().point.y + getBounds().extent.y - mSwatchFactor;
+   RectI bounds = getBounds();
+   S32 l = bounds.point.x + mSwatchFactor, r = bounds.point.x + bounds.extent.x - mSwatchFactor;
+   S32 t = bounds.point.y, b = bounds.point.y + bounds.extent.y - mSwatchFactor;
 	mBlendRangeBox = RectI( Point2I(l, t), Point2I(r, b) );
 	
 	setupDefaultRange();
@@ -330,16 +331,18 @@ void GuiGradientCtrl::drawBlendRangeBox(RectI &bounds, bool vertical, Vector<Col
 	// Update local dimensions
 	mBlendRangeBox.point = globalToLocalCoord(Point2I(l, t));
 	mBlendRangeBox.extent = globalToLocalCoord(Point2I(r, b));
+
+   ColorRange& firstColorRange = colorRange.first();
 	
 	if(colorRange.size() == 1) // Only one color to draw
 	{
 		PrimBuild::begin( GFXTriangleFan, 4 );
 
-		PrimBuild::color( colorRange.first().swatch->getColor() );
+      PrimBuild::color(firstColorRange.swatch->getColor());
 		PrimBuild::vertex2i( l, t );
 		PrimBuild::vertex2i( l, b );
 
-		PrimBuild::color( colorRange.first().swatch->getColor() );
+      PrimBuild::color(firstColorRange.swatch->getColor());
 		PrimBuild::vertex2i( r, b );
 		PrimBuild::vertex2i( r, t );
 
@@ -349,13 +352,13 @@ void GuiGradientCtrl::drawBlendRangeBox(RectI &bounds, bool vertical, Vector<Col
 	{
 		PrimBuild::begin( GFXTriangleFan, 4 );
 
-		PrimBuild::color( colorRange.first().swatch->getColor() );
+      PrimBuild::color(firstColorRange.swatch->getColor());
 		PrimBuild::vertex2i( l, t );
 		PrimBuild::vertex2i( l, b );
 
-		PrimBuild::color( colorRange.first().swatch->getColor() );
-		PrimBuild::vertex2i( l + colorRange.first().swatch->getPosition().x, b );
-		PrimBuild::vertex2i( l + colorRange.first().swatch->getPosition().x, t );
+      PrimBuild::color(firstColorRange.swatch->getColor());
+      PrimBuild::vertex2i(l + firstColorRange.swatch->getPosition().x, b);
+      PrimBuild::vertex2i(l + firstColorRange.swatch->getPosition().x, t);
 
 		PrimBuild::end();
 
@@ -377,13 +380,15 @@ void GuiGradientCtrl::drawBlendRangeBox(RectI &bounds, bool vertical, Vector<Col
 			PrimBuild::end();
 		}
 
+      ColorRange& lastColorRange = colorRange.last();
+
 		PrimBuild::begin( GFXTriangleFan, 4 );
 
-		PrimBuild::color( colorRange.last().swatch->getColor() );
-		PrimBuild::vertex2i( l + colorRange.last().swatch->getPosition().x, t );
-		PrimBuild::vertex2i( l + colorRange.last().swatch->getPosition().x, b );
+      PrimBuild::color(lastColorRange.swatch->getColor());
+      PrimBuild::vertex2i(l + lastColorRange.swatch->getPosition().x, t);
+      PrimBuild::vertex2i(l + lastColorRange.swatch->getPosition().x, b);
 		
-		PrimBuild::color( colorRange.last().swatch->getColor() );
+      PrimBuild::color(lastColorRange.swatch->getColor());
 		PrimBuild::vertex2i( r, b );
 		PrimBuild::vertex2i( r, t );
 

+ 29 - 27
Engine/source/gui/controls/guiPopUpCtrl.cpp

@@ -852,6 +852,8 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
    if ( mScrollDir != GuiScrollCtrl::None )
       autoScroll();
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    RectI r( offset, getExtent() );
    if ( mInAction )
    {
@@ -868,30 +870,30 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
       else
       {
          //renderSlightlyLoweredBox(r, mProfile);
-         GFX->getDrawUtil()->drawRectFill( r, mProfile->mFillColor );
+         drawUtil->drawRectFill( r, mProfile->mFillColor );
       }
 
       //  Draw a bitmap over the background?
       if ( mTextureDepressed )
       {
          RectI rect(offset, mBitmapBounds);
-         GFX->getDrawUtil()->clearBitmapModulation();
-         GFX->getDrawUtil()->drawBitmapStretch( mTextureDepressed, rect );
+         drawUtil->clearBitmapModulation();
+         drawUtil->drawBitmapStretch( mTextureDepressed, rect );
       } 
       else if ( mTextureNormal )
       {
          RectI rect(offset, mBitmapBounds);
-         GFX->getDrawUtil()->clearBitmapModulation();
-         GFX->getDrawUtil()->drawBitmapStretch( mTextureNormal, rect );
+         drawUtil->clearBitmapModulation();
+         drawUtil->drawBitmapStretch( mTextureNormal, rect );
       }
 
       // Do we render a bitmap border or lines?
       if ( !( mProfile->getChildrenProfile() && mProfile->mBitmapArrayRects.size() ) )
       {
-         GFX->getDrawUtil()->drawLine( l, t, l, b, colorWhite );
-         GFX->getDrawUtil()->drawLine( l, t, r2, t, colorWhite );
-         GFX->getDrawUtil()->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
-         GFX->getDrawUtil()->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
+         drawUtil->drawLine( l, t, l, b, colorWhite );
+         drawUtil->drawLine( l, t, r2, t, colorWhite );
+         drawUtil->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
+         drawUtil->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
       }
 
    }
@@ -912,24 +914,24 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
          } 
          else
          {
-            GFX->getDrawUtil()->drawRectFill( r, mProfile->mFillColorHL );
+            drawUtil->drawRectFill( r, mProfile->mFillColorHL );
          }
 
          //  Draw a bitmap over the background?
          if ( mTextureNormal )
          {
             RectI rect( offset, mBitmapBounds );
-            GFX->getDrawUtil()->clearBitmapModulation();
-            GFX->getDrawUtil()->drawBitmapStretch( mTextureNormal, rect );
+            drawUtil->clearBitmapModulation();
+            drawUtil->drawBitmapStretch( mTextureNormal, rect );
          }
 
          // Do we render a bitmap border or lines?
          if ( !( mProfile->getChildrenProfile() && mProfile->mBitmapArrayRects.size() ) )
          {
-            GFX->getDrawUtil()->drawLine( l, t, l, b, colorWhite );
-            GFX->getDrawUtil()->drawLine( l, t, r2, t, colorWhite );
-            GFX->getDrawUtil()->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
-            GFX->getDrawUtil()->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
+            drawUtil->drawLine( l, t, l, b, colorWhite );
+            drawUtil->drawLine( l, t, r2, t, colorWhite );
+            drawUtil->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
+            drawUtil->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
          }
       }
       else
@@ -942,21 +944,21 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
          } 
          else
          {
-            GFX->getDrawUtil()->drawRectFill( r, mProfile->mFillColorNA );
+            drawUtil->drawRectFill( r, mProfile->mFillColorNA );
          }
 
          //  Draw a bitmap over the background?
          if ( mTextureNormal )
          {
             RectI rect(offset, mBitmapBounds);
-            GFX->getDrawUtil()->clearBitmapModulation();
-            GFX->getDrawUtil()->drawBitmapStretch( mTextureNormal, rect );
+            drawUtil->clearBitmapModulation();
+            drawUtil->drawBitmapStretch( mTextureNormal, rect );
          }
 
          // Do we render a bitmap border or lines?
          if ( !( mProfile->getChildrenProfile() && mProfile->mBitmapArrayRects.size() ) )
          {
-            GFX->getDrawUtil()->drawRect( r, mProfile->mBorderColorNA );
+            drawUtil->drawRect( r, mProfile->mBorderColorNA );
          }
       }
       //      renderSlightlyRaisedBox(r, mProfile); //  Used to be the only 'else' condition to mInAction above.
@@ -1027,8 +1029,8 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
       {
          Point2I coloredboxsize( 15, 10 );
          RectI r( offset.x + mProfile->mTextOffset.x, offset.y + ( (getHeight() - coloredboxsize.y ) / 2 ), coloredboxsize.x, coloredboxsize.y );
-         GFX->getDrawUtil()->drawRectFill( r, boxColor);
-         GFX->getDrawUtil()->drawRect( r, ColorI(0,0,0));
+         drawUtil->drawRectFill( r, boxColor);
+         drawUtil->drawRect( r, ColorI(0,0,0));
 
          localStart.x += coloredboxsize.x + mProfile->mTextOffset.x;
       }
@@ -1036,7 +1038,7 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
       // Draw the text
       Point2I globalStart = localToGlobalCoord( localStart );
       ColorI fontColor   = mActive ? ( mInAction ? mProfile->mFontColor : mProfile->mFontColorNA ) : mProfile->mFontColorNA;
-      GFX->getDrawUtil()->setBitmapModulation( fontColor ); //  was: (mProfile->mFontColor);
+      drawUtil->setBitmapModulation( fontColor ); //  was: (mProfile->mFontColor);
 
       //  Get the number of columns in the text
       S32 colcount = getColumnCount( mText, "\t" );
@@ -1048,7 +1050,7 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
 
          // Draw the first column
          getColumn( mText, buff, 0, "\t" );
-         GFX->getDrawUtil()->drawText( mProfile->mFont, globalStart, buff, mProfile->mFontColors );
+         drawUtil->drawText( mProfile->mFont, globalStart, buff, mProfile->mFontColors );
 
          // Draw the second column to the right
          getColumn( mText, buff, 1, "\t" );
@@ -1059,17 +1061,17 @@ void GuiPopUpMenuCtrl::onRender( Point2I offset, const RectI &updateRect )
             // right cap of the border.
             RectI* bitmapBounds = mProfile->mBitmapArrayRects.address();
             Point2I textpos = localToGlobalCoord( Point2I( getWidth() - txt_w - bitmapBounds[2].extent.x, localStart.y ) );
-            GFX->getDrawUtil()->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
+            drawUtil->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
 
          } else
          {
             Point2I textpos = localToGlobalCoord( Point2I( getWidth() - txt_w - 12, localStart.y ) );
-            GFX->getDrawUtil()->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
+            drawUtil->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
          }
 
       } else
       {
-         GFX->getDrawUtil()->drawText( mProfile->mFont, globalStart, mText, mProfile->mFontColors );
+         drawUtil->drawText( mProfile->mFont, globalStart, mText, mProfile->mFontColors );
       }
 
       // If we're rendering a bitmap border, then it will take care of the arrow.

+ 29 - 27
Engine/source/gui/controls/guiPopUpCtrlEx.cpp

@@ -1034,6 +1034,8 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
    if ( mScrollDir != GuiScrollCtrl::None )
       autoScroll();
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    RectI r( offset, getExtent() );
    if ( mInAction )
    {
@@ -1050,30 +1052,30 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
       else
       {
          //renderSlightlyLoweredBox(r, mProfile);
-         GFX->getDrawUtil()->drawRectFill( r, mProfile->mFillColor );
+         drawUtil->drawRectFill( r, mProfile->mFillColor );
       }
 
       //  Draw a bitmap over the background?
       if ( mTextureDepressed )
       {
          RectI rect(offset, mBitmapBounds);
-         GFX->getDrawUtil()->clearBitmapModulation();
-         GFX->getDrawUtil()->drawBitmapStretch( mTextureDepressed, rect );
+         drawUtil->clearBitmapModulation();
+         drawUtil->drawBitmapStretch( mTextureDepressed, rect );
       } 
       else if ( mTextureNormal )
       {
          RectI rect(offset, mBitmapBounds);
-         GFX->getDrawUtil()->clearBitmapModulation();
-         GFX->getDrawUtil()->drawBitmapStretch( mTextureNormal, rect );
+         drawUtil->clearBitmapModulation();
+         drawUtil->drawBitmapStretch( mTextureNormal, rect );
       }
 
       // Do we render a bitmap border or lines?
       if ( !( mProfile->getChildrenProfile() && mProfile->mBitmapArrayRects.size() ) )
       {
-         GFX->getDrawUtil()->drawLine( l, t, l, b, colorWhite );
-         GFX->getDrawUtil()->drawLine( l, t, r2, t, colorWhite );
-         GFX->getDrawUtil()->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
-         GFX->getDrawUtil()->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
+         drawUtil->drawLine( l, t, l, b, colorWhite );
+         drawUtil->drawLine( l, t, r2, t, colorWhite );
+         drawUtil->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
+         drawUtil->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
       }
 
    }
@@ -1094,24 +1096,24 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
          } 
          else
          {
-            GFX->getDrawUtil()->drawRectFill( r, mProfile->mFillColorHL );
+            drawUtil->drawRectFill( r, mProfile->mFillColorHL );
          }
 
          //  Draw a bitmap over the background?
          if ( mTextureNormal )
          {
             RectI rect( offset, mBitmapBounds );
-            GFX->getDrawUtil()->clearBitmapModulation();
-            GFX->getDrawUtil()->drawBitmapStretch( mTextureNormal, rect );
+            drawUtil->clearBitmapModulation();
+            drawUtil->drawBitmapStretch( mTextureNormal, rect );
          }
 
          // Do we render a bitmap border or lines?
          if ( !( mProfile->getChildrenProfile() && mProfile->mBitmapArrayRects.size() ) )
          {
-            GFX->getDrawUtil()->drawLine( l, t, l, b, colorWhite );
-            GFX->getDrawUtil()->drawLine( l, t, r2, t, colorWhite );
-            GFX->getDrawUtil()->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
-            GFX->getDrawUtil()->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
+            drawUtil->drawLine( l, t, l, b, colorWhite );
+            drawUtil->drawLine( l, t, r2, t, colorWhite );
+            drawUtil->drawLine( l + 1, b, r2, b, mProfile->mBorderColor );
+            drawUtil->drawLine( r2, t + 1, r2, b - 1, mProfile->mBorderColor );
          }
       }
       else
@@ -1124,21 +1126,21 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
          } 
          else
          {
-            GFX->getDrawUtil()->drawRectFill( r, mProfile->mFillColorNA );
+            drawUtil->drawRectFill( r, mProfile->mFillColorNA );
          }
 
          //  Draw a bitmap over the background?
          if ( mTextureNormal )
          {
             RectI rect(offset, mBitmapBounds);
-            GFX->getDrawUtil()->clearBitmapModulation();
-            GFX->getDrawUtil()->drawBitmapStretch( mTextureNormal, rect );
+            drawUtil->clearBitmapModulation();
+            drawUtil->drawBitmapStretch( mTextureNormal, rect );
          }
 
          // Do we render a bitmap border or lines?
          if ( !( mProfile->getChildrenProfile() && mProfile->mBitmapArrayRects.size() ) )
          {
-            GFX->getDrawUtil()->drawRect( r, mProfile->mBorderColorNA );
+            drawUtil->drawRect( r, mProfile->mBorderColorNA );
          }
       }
       //      renderSlightlyRaisedBox(r, mProfile); //  Used to be the only 'else' condition to mInAction above.
@@ -1209,8 +1211,8 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
       {
          Point2I coloredboxsize( 15, 10 );
          RectI r( offset.x + mProfile->mTextOffset.x, offset.y + ( (getHeight() - coloredboxsize.y ) / 2 ), coloredboxsize.x, coloredboxsize.y );
-         GFX->getDrawUtil()->drawRectFill( r, boxColor);
-         GFX->getDrawUtil()->drawRect( r, ColorI(0,0,0));
+         drawUtil->drawRectFill( r, boxColor);
+         drawUtil->drawRect( r, ColorI(0,0,0));
 
          localStart.x += coloredboxsize.x + mProfile->mTextOffset.x;
       }
@@ -1218,7 +1220,7 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
       // Draw the text
       Point2I globalStart = localToGlobalCoord( localStart );
       ColorI fontColor   = mActive ? ( mInAction ? mProfile->mFontColor : mProfile->mFontColorNA ) : mProfile->mFontColorNA;
-      GFX->getDrawUtil()->setBitmapModulation( fontColor ); //  was: (mProfile->mFontColor);
+      drawUtil->setBitmapModulation( fontColor ); //  was: (mProfile->mFontColor);
 
       //  Get the number of columns in the text
       S32 colcount = getColumnCount( mText, "\t" );
@@ -1230,7 +1232,7 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
 
          // Draw the first column
          getColumn( mText, buff, 0, "\t" );
-         GFX->getDrawUtil()->drawText( mProfile->mFont, globalStart, buff, mProfile->mFontColors );
+         drawUtil->drawText( mProfile->mFont, globalStart, buff, mProfile->mFontColors );
 
          // Draw the second column to the right
          getColumn( mText, buff, 1, "\t" );
@@ -1241,17 +1243,17 @@ void GuiPopUpMenuCtrlEx::onRender(Point2I offset, const RectI &updateRect)
             // right cap of the border.
             RectI* bitmapBounds = mProfile->mBitmapArrayRects.address();
             Point2I textpos = localToGlobalCoord( Point2I( getWidth() - txt_w - bitmapBounds[2].extent.x, localStart.y ) );
-            GFX->getDrawUtil()->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
+            drawUtil->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
 
          } else
          {
             Point2I textpos = localToGlobalCoord( Point2I( getWidth() - txt_w - 12, localStart.y ) );
-            GFX->getDrawUtil()->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
+            drawUtil->drawText( mProfile->mFont, textpos, buff, mProfile->mFontColors );
          }
 
       } else
       {
-         GFX->getDrawUtil()->drawText( mProfile->mFont, globalStart, mText, mProfile->mFontColors );
+         drawUtil->drawText( mProfile->mFont, globalStart, mText, mProfile->mFontColors );
       }
 
       // If we're rendering a bitmap border, then it will take care of the arrow.

+ 9 - 7
Engine/source/gui/controls/guiSliderCtrl.cpp

@@ -363,6 +363,8 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
    Point2I ext(getWidth() - mShiftExtent, getHeight());
    RectI thumb = mThumb;
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    if( mHasTexture )
    {
       if(mTicks > 0)
@@ -402,12 +404,12 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
       S32 index = SliderButtonNormal;
       if(mMouseOver)
          index = SliderButtonHighlight;
-      GFX->getDrawUtil()->clearBitmapModulation();
+      drawUtil->clearBitmapModulation();
 
       //left border
-      GFX->getDrawUtil()->drawBitmapSR(mProfile->mTextureObject, Point2I(offset.x,offset.y), mBitmapBounds[SliderLineLeft]);
+      drawUtil->drawBitmapSR(mProfile->mTextureObject, Point2I(offset.x,offset.y), mBitmapBounds[SliderLineLeft]);
       //right border
-      GFX->getDrawUtil()->drawBitmapSR(mProfile->mTextureObject, Point2I(offset.x + getWidth() - mBitmapBounds[SliderLineRight].extent.x, offset.y), mBitmapBounds[SliderLineRight]);
+      drawUtil->drawBitmapSR(mProfile->mTextureObject, Point2I(offset.x + getWidth() - mBitmapBounds[SliderLineRight].extent.x, offset.y), mBitmapBounds[SliderLineRight]);
 
 
       //draw our center piece to our slider control's border and stretch it
@@ -421,11 +423,11 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
       stretchRect = mBitmapBounds[SliderLineCenter];
       stretchRect.inset(1,0);
 
-      GFX->getDrawUtil()->drawBitmapStretchSR(mProfile->mTextureObject, destRect, stretchRect);
+      drawUtil->drawBitmapStretchSR(mProfile->mTextureObject, destRect, stretchRect);
 
       //draw our control slider button	
       thumb.point += pos;
-      GFX->getDrawUtil()->drawBitmapSR(mProfile->mTextureObject,Point2I(thumb.point.x,offset.y ),mBitmapBounds[index]);
+      drawUtil->drawBitmapSR(mProfile->mTextureObject,Point2I(thumb.point.x,offset.y ),mBitmapBounds[index]);
 
    }
    else if (getWidth() >= getHeight())
@@ -490,8 +492,8 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
    	else if(textStart.x + txt_w > offset.x+getWidth())
    		textStart.x -=((textStart.x + txt_w) - (offset.x+getWidth()));
 
-    	GFX->getDrawUtil()->setBitmapModulation(mProfile->mFontColor);
-    	GFX->getDrawUtil()->drawText(mProfile->mFont, textStart, buf, mProfile->mFontColors);
+    	drawUtil->setBitmapModulation(mProfile->mFontColor);
+    	drawUtil->drawText(mProfile->mFont, textStart, buf, mProfile->mFontColors);
    }
    renderChildControls(offset, updateRect);
 }

+ 6 - 4
Engine/source/gui/core/guiControl.cpp

@@ -465,6 +465,8 @@ bool GuiControl::defaultTooltipRender( const Point2I &hoverPos, const Point2I &c
 
    GFont *font = mTooltipProfile->mFont;
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    // Support for multi-line tooltip text...
 
    Vector<U32> startLineOffsets, lineLengths;
@@ -521,12 +523,12 @@ bool GuiControl::defaultTooltipRender( const Point2I &hoverPos, const Point2I &c
    GFX->setClipRect( rect );
 
    // Draw Filler bit, then border on top of that
-   GFX->getDrawUtil()->drawRectFill( rect, mTooltipProfile->mFillColor );
-   GFX->getDrawUtil()->drawRect( rect, mTooltipProfile->mBorderColor );
+   drawUtil->drawRectFill( rect, mTooltipProfile->mFillColor );
+   drawUtil->drawRect( rect, mTooltipProfile->mBorderColor );
 
    // Draw the text centered in the tool tip box...
 
-   GFX->getDrawUtil()->setBitmapModulation( mTooltipProfile->mFontColor );
+   drawUtil->setBitmapModulation( mTooltipProfile->mFontColor );
 
    for ( U32 i = 0; i < lineLengths.size(); i++ )
    {      
@@ -534,7 +536,7 @@ bool GuiControl::defaultTooltipRender( const Point2I &hoverPos, const Point2I &c
       const UTF8 *line = renderTip.c_str() + startLineOffsets[i];
       U32 lineLen = lineLengths[i];
 
-      GFX->getDrawUtil()->drawTextN( font, start + offset, line, lineLen, mProfile->mFontColors );
+      drawUtil->drawTextN( font, start + offset, line, lineLen, mProfile->mFontColors );
    }
 
    GFX->setClipRect( oldClip );

+ 25 - 19
Engine/source/gui/core/guiDefaultControlRender.cpp

@@ -41,15 +41,17 @@ void renderRaisedBox( const RectI &bounds, GuiControlProfile *profile )
    S32 l = bounds.point.x, r = bounds.point.x + bounds.extent.x - 1;
    S32 t = bounds.point.y, b = bounds.point.y + bounds.extent.y - 1;
 
-   GFX->getDrawUtil()->drawRectFill( bounds, profile->mFillColor);
-   GFX->getDrawUtil()->drawLine(l, t, l, b - 1, colorWhite);
-   GFX->getDrawUtil()->drawLine(l, t, r - 1, t, colorWhite);
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
 
-   GFX->getDrawUtil()->drawLine(l, b, r, b, colorBlack);
-   GFX->getDrawUtil()->drawLine(r, b - 1, r, t, colorBlack);
+   drawUtil->drawRectFill( bounds, profile->mFillColor);
+   drawUtil->drawLine(l, t, l, b - 1, colorWhite);
+   drawUtil->drawLine(l, t, r - 1, t, colorWhite);
 
-   GFX->getDrawUtil()->drawLine(l + 1, b - 1, r - 1, b - 1, profile->mBorderColor);
-   GFX->getDrawUtil()->drawLine(r - 1, b - 2, r - 1, t + 1, profile->mBorderColor);
+   drawUtil->drawLine(l, b, r, b, colorBlack);
+   drawUtil->drawLine(r, b - 1, r, t, colorBlack);
+
+   drawUtil->drawLine(l + 1, b - 1, r - 1, b - 1, profile->mBorderColor);
+   drawUtil->drawLine(r - 1, b - 2, r - 1, t + 1, profile->mBorderColor);
 }
 
 void renderSlightlyRaisedBox( const RectI &bounds, GuiControlProfile *profile )
@@ -70,16 +72,18 @@ void renderLoweredBox( const RectI &bounds, GuiControlProfile *profile )
    S32 l = bounds.point.x, r = bounds.point.x + bounds.extent.x - 1;
    S32 t = bounds.point.y, b = bounds.point.y + bounds.extent.y - 1;
 
-   GFX->getDrawUtil()->drawRectFill( bounds, profile->mFillColor);
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
+   drawUtil->drawRectFill( bounds, profile->mFillColor);
 
-   GFX->getDrawUtil()->drawLine(l, b, r, b, colorWhite);
-   GFX->getDrawUtil()->drawLine(r, b - 1, r, t, colorWhite);
+   drawUtil->drawLine(l, b, r, b, colorWhite);
+   drawUtil->drawLine(r, b - 1, r, t, colorWhite);
 
-   GFX->getDrawUtil()->drawLine(l, t, r - 1, t, colorBlack);
-   GFX->getDrawUtil()->drawLine(l, t + 1, l, b - 1, colorBlack);
+   drawUtil->drawLine(l, t, r - 1, t, colorBlack);
+   drawUtil->drawLine(l, t + 1, l, b - 1, colorBlack);
 
-   GFX->getDrawUtil()->drawLine(l + 1, t + 1, r - 2, t + 1, profile->mBorderColor);
-   GFX->getDrawUtil()->drawLine(l + 1, t + 2, l + 1, b - 2, profile->mBorderColor);
+   drawUtil->drawLine(l + 1, t + 1, r - 2, t + 1, profile->mBorderColor);
+   drawUtil->drawLine(l + 1, t + 2, l + 1, b - 2, profile->mBorderColor);
 }
 
 void renderSlightlyLoweredBox( const RectI &bounds, GuiControlProfile *profile )
@@ -87,11 +91,13 @@ void renderSlightlyLoweredBox( const RectI &bounds, GuiControlProfile *profile )
    S32 l = bounds.point.x + 1, r = bounds.point.x + bounds.extent.x - 1;
    S32 t = bounds.point.y + 1, b = bounds.point.y + bounds.extent.y - 1;
 
-   GFX->getDrawUtil()->drawRectFill( bounds, profile->mFillColor);
-   GFX->getDrawUtil()->drawLine(l, b, r, b, profile->mBorderColor);
-   GFX->getDrawUtil()->drawLine(r, t, r, b - 1, profile->mBorderColor);
-   GFX->getDrawUtil()->drawLine(l, t, l, b - 1, profile->mBorderColor);
-   GFX->getDrawUtil()->drawLine(l + 1, t, r - 1, t, profile->mBorderColor);
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
+   drawUtil->drawRectFill( bounds, profile->mFillColor);
+   drawUtil->drawLine(l, b, r, b, profile->mBorderColor);
+   drawUtil->drawLine(r, t, r, b - 1, profile->mBorderColor);
+   drawUtil->drawLine(l, t, l, b - 1, profile->mBorderColor);
+   drawUtil->drawLine(l + 1, t, r - 1, t, profile->mBorderColor);
 }
 
 void renderBorder( const RectI &bounds, GuiControlProfile *profile )

+ 9 - 8
Engine/source/gui/editor/guiMenuBar.cpp

@@ -1278,12 +1278,13 @@ void GuiMenuBar::onMouseUp(const GuiEvent &event)
 
 void GuiMenuBar::onRender(Point2I offset, const RectI &updateRect)
 {
-
    RectI ctrlRect(offset, getExtent());
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    //if opaque, fill the update rect with the fill color
    if (mProfile->mOpaque)
-      GFX->getDrawUtil()->drawRectFill(RectI(offset, getExtent()), mProfile->mFillColor);
+      drawUtil->drawRectFill(RectI(offset, getExtent()), mProfile->mFillColor);
 
    //if there's a border, draw the border
    if (mProfile->mBorder)
@@ -1327,20 +1328,20 @@ void GuiMenuBar::onRender(Point2I offset, const RectI &updateRect)
 		 Point2I bitmapstart(start);
 		 bitmapstart.y = walk->bounds.point.y + ( walk->bounds.extent.y - rect.extent.y ) / 2;
 
-         GFX->getDrawUtil()->clearBitmapModulation();
-         GFX->getDrawUtil()->drawBitmapSR( mProfile->mTextureObject, offset + bitmapstart, rect);
+         drawUtil->clearBitmapModulation();
+         drawUtil->drawBitmapSR( mProfile->mTextureObject, offset + bitmapstart, rect);
 
 		 // Should we also draw the text?
 		 if(!walk->drawBitmapOnly)
 		 {
             start.x += mBitmapMargin;
-      GFX->getDrawUtil()->setBitmapModulation( fontColor );
-      GFX->getDrawUtil()->drawText( mProfile->mFont, start + offset, walk->text, mProfile->mFontColors );
+      drawUtil->setBitmapModulation( fontColor );
+      drawUtil->drawText( mProfile->mFont, start + offset, walk->text, mProfile->mFontColors );
 		 }
 	  } else
 	  {
-      GFX->getDrawUtil()->setBitmapModulation( fontColor );
-      GFX->getDrawUtil()->drawText( mProfile->mFont, start + offset, walk->text, mProfile->mFontColors );
+      drawUtil->setBitmapModulation( fontColor );
+      drawUtil->drawText( mProfile->mFont, start + offset, walk->text, mProfile->mFontColors );
 	  }
    }
 

+ 12 - 10
Engine/source/gui/editor/guiRectHandles.cpp

@@ -287,33 +287,35 @@ void GuiRectHandles::onRender(Point2I offset, const RectI &updateRect)
    Point2I size(extent.x*mHandleRect.extent.x, extent.y*mHandleRect.extent.y);
    RectI box(offset+pos, size);
 
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
    // Draw border
-   GFX->getDrawUtil()->drawRect(box, handleColor);
+   drawUtil->drawRect(box, handleColor);
 
    // Draw each handle
    Point2I handleSize(mHandleSize, mHandleSize);
    RectI handleRect(box.point, handleSize);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Upper left
+   drawUtil->drawRectFill(handleRect, handleColor);      // Upper left
    handleRect.point = Point2I(box.point.x+size.x-handleSize.x, box.point.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Upper right
+   drawUtil->drawRectFill(handleRect, handleColor);      // Upper right
    handleRect.point = Point2I(box.point.x, box.point.y+size.y-handleSize.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Lower left
+   drawUtil->drawRectFill(handleRect, handleColor);      // Lower left
    handleRect.point = Point2I(box.point.x+size.x-handleSize.x, box.point.y+size.y-handleSize.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Lower right
+   drawUtil->drawRectFill(handleRect, handleColor);      // Lower right
 
    Point2I halfSize = size / 2;
    Point2I halfHandleSize = handleSize / 2;
    handleRect.point = Point2I(box.point.x+halfSize.x-halfHandleSize.x, box.point.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Upper middle
+   drawUtil->drawRectFill(handleRect, handleColor);      // Upper middle
    handleRect.point = Point2I(box.point.x+halfSize.x-halfHandleSize.x, box.point.y+size.y-handleSize.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Lower middle
+   drawUtil->drawRectFill(handleRect, handleColor);      // Lower middle
    handleRect.point = Point2I(box.point.x, box.point.y+halfSize.y-halfHandleSize.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Left middle
+   drawUtil->drawRectFill(handleRect, handleColor);      // Left middle
    handleRect.point = Point2I(box.point.x+size.x-handleSize.x, box.point.y+halfSize.y-halfHandleSize.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Right middle
+   drawUtil->drawRectFill(handleRect, handleColor);      // Right middle
 
    handleRect.point = Point2I(box.point.x+halfSize.x-halfHandleSize.x, box.point.y+halfSize.y-halfHandleSize.y);
-   GFX->getDrawUtil()->drawRectFill(handleRect, handleColor);      // Middle
+   drawUtil->drawRectFill(handleRect, handleColor);      // Middle
 
    renderChildControls(offset, updateRect);
 }

+ 27 - 20
Engine/source/gui/editor/guiShapeEdPreview.cpp

@@ -330,10 +330,11 @@ void GuiShapeEdPreview::setCurrentDetail(S32 dl)
 {
    if ( mModel )
    {
-      S32 smallest = mModel->getShape()->mSmallestVisibleDL;
-      mModel->getShape()->mSmallestVisibleDL = mModel->getShape()->details.size()-1;
+      TSShape* shape = mModel->getShape();
+      S32 smallest = shape->mSmallestVisibleDL;
+      shape->mSmallestVisibleDL = shape->details.size() - 1;
       mModel->setCurrentDetail( dl );
-      mModel->getShape()->mSmallestVisibleDL = smallest;
+      shape->mSmallestVisibleDL = smallest;
 
       // Match the camera distance to this detail if necessary
       //@todo if ( !gui->mFixedDetail )
@@ -359,19 +360,21 @@ bool GuiShapeEdPreview::setObjectModel(const char* modelName)
       mModel = new TSShapeInstance( model, true );
       AssertFatal( mModel, avar("GuiShapeEdPreview: Failed to load model %s. Please check your model name and load a valid model.", modelName ));
 
+      TSShape* shape = mModel->getShape();
+
       // Initialize camera values:
-      mOrbitPos = mModel->getShape()->center;
+      mOrbitPos = shape->center;
 
       // Set camera move and zoom speed according to model size
-      mMoveSpeed = mModel->getShape()->radius / sMoveScaler;
-      mZoomSpeed = mModel->getShape()->radius / sZoomScaler;
+      mMoveSpeed = shape->radius / sMoveScaler;
+      mZoomSpeed = shape->radius / sZoomScaler;
 
       // Reset node selection
       mHoverNode = -1;
       mSelectedNode = -1;
       mSelectedObject = -1;
       mSelectedObjDetail = 0;
-      mProjectedNodes.setSize( mModel->getShape()->nodes.size() );
+      mProjectedNodes.setSize( shape->nodes.size() );
 
       // Reset detail stats
       mCurrentDL = 0;
@@ -683,9 +686,11 @@ void GuiShapeEdPreview::refreshShape()
       mModel->initNodeTransforms();
       mModel->initMeshObjects();
 
-      mProjectedNodes.setSize( mModel->getShape()->nodes.size() );
+      TSShape* shape = mModel->getShape();
+
+      mProjectedNodes.setSize( shape->nodes.size() );
 
-      if ( mSelectedObject >= mModel->getShape()->objects.size() )
+      if ( mSelectedObject >= shape->objects.size() )
       {
          mSelectedObject = -1;
          mSelectedObjDetail = 0;
@@ -694,22 +699,22 @@ void GuiShapeEdPreview::refreshShape()
       // Re-compute the collision mesh stats
       mColMeshes = 0;
       mColPolys = 0;
-      for ( S32 i = 0; i < mModel->getShape()->details.size(); i++ )
+      for ( S32 i = 0; i < shape->details.size(); i++ )
       {
-         const TSShape::Detail& det = mModel->getShape()->details[i];
-         const String& detName = mModel->getShape()->getName( det.nameIndex );
+         const TSShape::Detail& det = shape->details[i];
+         const String& detName = shape->getName( det.nameIndex );
          if ( ( det.subShapeNum < 0 ) || !detName.startsWith( "collision-" ) )
             continue;
 
          mColPolys += det.polyCount;
 
          S32 od = det.objectDetailNum;
-         S32 start = mModel->getShape()->subShapeFirstObject[det.subShapeNum];
-         S32 end   = start + mModel->getShape()->subShapeNumObjects[det.subShapeNum];
+         S32 start = shape->subShapeFirstObject[det.subShapeNum];
+         S32 end   = start + shape->subShapeNumObjects[det.subShapeNum];
          for ( S32 j = start; j < end; j++ )
          {
-            const TSShape::Object &obj = mModel->getShape()->objects[j];
-            const TSMesh* mesh = ( od < obj.numMeshes ) ? mModel->getShape()->meshes[obj.startMeshIndex + od] : NULL;
+            const TSShape::Object &obj = shape->objects[j];
+            const TSMesh* mesh = ( od < obj.numMeshes ) ? shape->meshes[obj.startMeshIndex + od] : NULL;
             if ( mesh )
                mColMeshes++;
          }
@@ -1542,10 +1547,12 @@ void GuiShapeEdPreview::renderSunDirection() const
       GFXStateBlockDesc desc;
       desc.setZReadWrite( true, true );
 
-      GFX->getDrawUtil()->drawArrow( desc, start, end, color );
-      GFX->getDrawUtil()->drawArrow( desc, start + up, end + up, color );
-      GFX->getDrawUtil()->drawArrow( desc, start + right, end + right, color );
-      GFX->getDrawUtil()->drawArrow( desc, start + up + right, end + up + right, color );
+      GFXDrawUtil* drawUtil = GFX->getDrawUtil();
+
+      drawUtil->drawArrow( desc, start, end, color );
+      drawUtil->drawArrow( desc, start + up, end + up, color );
+      drawUtil->drawArrow( desc, start + right, end + right, color );
+      drawUtil->drawArrow( desc, start + up + right, end + up + right, color );
    }
 }
 

+ 8 - 6
Engine/source/gui/game/guiProgressBitmapCtrl.cpp

@@ -206,8 +206,10 @@ void GuiProgressBitmapCtrl::onRender(Point2I offset, const RectI &updateRect)
 		mDim = getHeight();
 	else
 		mDim = getWidth();
+
+   GFXDrawUtil* drawUtil = GFX->getDrawUtil();
 	
-	GFX->getDrawUtil()->clearBitmapModulation();
+	drawUtil->clearBitmapModulation();
 
 	if(mNumberOfBitmaps == 1)
 	{
@@ -218,14 +220,14 @@ void GuiProgressBitmapCtrl::onRender(Point2I offset, const RectI &updateRect)
 			//drawing stretch bitmap
 			RectI progressRect = ctrlRect;
 			progressRect.extent.x = width;
-			GFX->getDrawUtil()->drawBitmapStretchSR(mProfile->mTextureObject, progressRect, mProfile->mBitmapArrayRects[0]);
+			drawUtil->drawBitmapStretchSR(mProfile->mTextureObject, progressRect, mProfile->mBitmapArrayRects[0]);
 		}
 	}
 	else if(mNumberOfBitmaps >= 3)
 	{
 		//drawing left-end bitmap
 		RectI progressRectLeft(ctrlRect.point.x, ctrlRect.point.y, mDim, mDim);
-		GFX->getDrawUtil()->drawBitmapStretchSR(mProfile->mTextureObject, progressRectLeft, mProfile->mBitmapArrayRects[0]);
+		drawUtil->drawBitmapStretchSR(mProfile->mTextureObject, progressRectLeft, mProfile->mBitmapArrayRects[0]);
 
 		//draw the progress with image
 		S32 width = (S32)((F32)(getWidth()) * mProgress);
@@ -237,11 +239,11 @@ void GuiProgressBitmapCtrl::onRender(Point2I offset, const RectI &updateRect)
 			progressRect.extent.x = (width - mDim - mDim);
 			if (progressRect.extent.x < 0)
 				progressRect.extent.x = 0;
-			GFX->getDrawUtil()->drawBitmapStretchSR(mProfile->mTextureObject, progressRect, mProfile->mBitmapArrayRects[1]);
+			drawUtil->drawBitmapStretchSR(mProfile->mTextureObject, progressRect, mProfile->mBitmapArrayRects[1]);
 		
 			//drawing right-end bitmap
 			RectI progressRectRight(progressRect.point.x + progressRect.extent.x, ctrlRect.point.y, mDim, mDim );
-			GFX->getDrawUtil()->drawBitmapStretchSR(mProfile->mTextureObject, progressRectRight, mProfile->mBitmapArrayRects[2]);
+			drawUtil->drawBitmapStretchSR(mProfile->mTextureObject, progressRectRight, mProfile->mBitmapArrayRects[2]);
 		}
 	}
 	else
@@ -249,7 +251,7 @@ void GuiProgressBitmapCtrl::onRender(Point2I offset, const RectI &updateRect)
 
 	//if there's a border, draw it
    if (mProfile->mBorder)
-      GFX->getDrawUtil()->drawRect(ctrlRect, mProfile->mBorderColor);
+      drawUtil->drawRect(ctrlRect, mProfile->mBorderColor);
 
    Parent::onRender( offset, updateRect );
 

+ 4 - 3
Engine/source/gui/utility/messageVector.cpp

@@ -575,12 +575,13 @@ void MessageVector::registerSpectator(SpectatorCallback callBack, void *spectato
    }
 
    mSpectators.increment();
-   mSpectators.last().callback = callBack;
-   mSpectators.last().key      = spectatorKey;
+   SpectatorRef& lastSpectatorRef = mSpectators.last();
+   lastSpectatorRef.callback = callBack;
+   lastSpectatorRef.key = spectatorKey;
 
    // Need to message this spectator of all the lines currently inserted...
    for (i = 0; i < mMessageLines.size(); i++) {
-      (*mSpectators.last().callback)(mSpectators.last().key,
+      (*lastSpectatorRef.callback)(lastSpectatorRef.key,
                                      LineInserted, i);
    }
 }

+ 6 - 5
Engine/source/gui/worldEditor/terrainEditor.cpp

@@ -1449,14 +1449,15 @@ void TerrainEditor::renderSelection( const Selection & sel, const ColorF & inCol
       // walk the points in the selection
       for(U32 i = 0; i < sel.size(); i++)
       {
-         Point2I gPos = sel[i].mGridPoint.gridPos;
+         GridPoint selectedGridPoint = sel[i].mGridPoint;
+         Point2I gPos = selectedGridPoint.gridPos;
 
          GFXVertexPC *verts = &(vertexBuffer[i * 5]);
 
-         bool center = gridToWorld(sel[i].mGridPoint, verts[0].point);
-         gridToWorld(Point2I(gPos.x + 1, gPos.y), verts[1].point, sel[i].mGridPoint.terrainBlock);
-         gridToWorld(Point2I(gPos.x + 1, gPos.y + 1), verts[2].point, sel[i].mGridPoint.terrainBlock);
-         gridToWorld(Point2I(gPos.x, gPos.y + 1), verts[3].point, sel[i].mGridPoint.terrainBlock);
+         bool center = gridToWorld(selectedGridPoint, verts[0].point);
+         gridToWorld(Point2I(gPos.x + 1, gPos.y), verts[1].point, selectedGridPoint.terrainBlock);
+         gridToWorld(Point2I(gPos.x + 1, gPos.y + 1), verts[2].point, selectedGridPoint.terrainBlock);
+         gridToWorld(Point2I(gPos.x, gPos.y + 1), verts[3].point, selectedGridPoint.terrainBlock);
          verts[4].point = verts[0].point;
 
          F32 weight = sel[i].mWeight;

+ 5 - 4
Engine/source/gui/worldEditor/worldEditor.cpp

@@ -1631,10 +1631,11 @@ void WorldEditor::renderScreenObj( SceneObject *obj, const Point3F& projPos, con
       // Save an IconObject for performing icon-click testing later.
 
       mIcons.increment();
-      mIcons.last().object = obj;
-      mIcons.last().rect   = renderRect;
-      mIcons.last().dist   = projPos.z;
-      mIcons.last().alpha  = iconAlpha;
+      IconObject& lastIcon = mIcons.last();
+      lastIcon.object = obj;
+      lastIcon.rect = renderRect;
+      lastIcon.dist = projPos.z;
+      lastIcon.alpha = iconAlpha;
    }
 
    //

+ 5 - 4
Engine/source/lighting/common/sceneLighting.cpp

@@ -1012,13 +1012,14 @@ void SceneLighting::processCache()
 	// go through and remove the best candidate first (sorted reverse)
 	while(((curCacheSize >> 10) > quota) && files.size())
 	{
-		curCacheSize -= files.last().mFileObject->getSize();
+      CacheEntry& lastFile = files.last();
+      curCacheSize -= lastFile.mFileObject->getSize();
 
 		// no sneaky names
-		if(!dStrstr(files.last().mFileName, ".."))
+      if (!dStrstr(lastFile.mFileName, ".."))
 		{
-			Con::warnf("Removing lighting file '%s'.", files.last().mFileName);
-			dFileDelete(files.last().mFileName);
+         Con::warnf("Removing lighting file '%s'.", lastFile.mFileName);
+         dFileDelete(lastFile.mFileName);
 		}
 
 		files.pop_back();

+ 7 - 5
Engine/source/postFx/postEffect.cpp

@@ -811,14 +811,16 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
                            lightDir.y * (6378.0f * 1000.0f),
                            lightDir.z * (6378.0f * 1000.0f) );
 
+         RectI viewPort = GFX->getViewport();
+
          // Get the screen space sun position.
-         MathUtils::mProjectWorldToScreen( lightPos, &sunPos, GFX->getViewport(), tmp, proj );
+         MathUtils::mProjectWorldToScreen(lightPos, &sunPos, viewPort, tmp, proj);
 
          // And normalize it to the 0 to 1 range.
-         sunPos.x -= (F32)GFX->getViewport().point.x;
-         sunPos.y -= (F32)GFX->getViewport().point.y;
-         sunPos.x /= (F32)GFX->getViewport().extent.x;
-         sunPos.y /= (F32)GFX->getViewport().extent.y;
+         sunPos.x -= (F32)viewPort.point.x;
+         sunPos.y -= (F32)viewPort.point.y;
+         sunPos.x /= (F32)viewPort.extent.x;
+         sunPos.y /= (F32)viewPort.extent.y;
 
          mShaderConsts->set( mScreenSunPosSC, Point2F( sunPos.x, sunPos.y ) );
       }

+ 7 - 5
Engine/source/scene/culling/sceneCullingState.cpp

@@ -815,8 +815,10 @@ bool SceneCullingState::isOccludedByTerrain( SceneObject* object ) const
       if( !terrain )
          continue;
 
+      MatrixF terrWorldTransform = terrain->getWorldTransform();
+
       Point3F localCamPos = getCameraState().getViewPosition();
-      terrain->getWorldTransform().mulP( localCamPos );
+      terrWorldTransform.mulP(localCamPos);
       F32 height;
       terrain->getHeight( Point2F( localCamPos.x, localCamPos.y ), &height );
       bool aboveTerrain = ( height <= localCamPos.z );
@@ -837,10 +839,10 @@ bool SceneCullingState::isOccludedByTerrain( SceneObject* object ) const
       Point3F ll(rBox.maxExtents.x, rBox.minExtents.y, rBox.maxExtents.z);
       Point3F lr(rBox.maxExtents.x, rBox.maxExtents.y, rBox.maxExtents.z);
 
-      terrain->getWorldTransform().mulP(ul);
-      terrain->getWorldTransform().mulP(ur);
-      terrain->getWorldTransform().mulP(ll);
-      terrain->getWorldTransform().mulP(lr);
+      terrWorldTransform.mulP(ul);
+      terrWorldTransform.mulP(ur);
+      terrWorldTransform.mulP(ll);
+      terrWorldTransform.mulP(lr);
 
       Point3F xBaseL0_s = ul - localCamPos;
       Point3F xBaseL0_e = lr - localCamPos;

+ 7 - 6
Engine/source/scene/sceneContainer.cpp

@@ -1353,15 +1353,16 @@ F32 SceneContainer::containerSearchCurrRadiusDist()
       return 0.0;
 
    Point3F pos;
-   (*mSearchList[mCurrSearchPos])->getWorldBox().getCenter(&pos);
+   Box3F worldBox = (*mSearchList[mCurrSearchPos])->getWorldBox();
+   worldBox.getCenter(&pos);
 
    F32 dist = (pos - mSearchReferencePoint).len();
 
-   F32 min = (*mSearchList[mCurrSearchPos])->getWorldBox().len_x();
-   if ((*mSearchList[mCurrSearchPos])->getWorldBox().len_y() < min)
-      min = (*mSearchList[mCurrSearchPos])->getWorldBox().len_y();
-   if ((*mSearchList[mCurrSearchPos])->getWorldBox().len_z() < min)
-      min = (*mSearchList[mCurrSearchPos])->getWorldBox().len_z();
+   F32 min = worldBox.len_x();
+   if (worldBox.len_y() < min)
+      min = worldBox.len_y();
+   if (worldBox.len_z() < min)
+      min = worldBox.len_z();
 
    dist -= min;
    if (dist < 0)

+ 5 - 4
Engine/source/terrain/terrCollision.cpp

@@ -279,10 +279,11 @@ void TerrainConvex::getFeatures(const MatrixF& mat,const VectorF& n, ConvexFeatu
    cf->mFaceList.increment(numFaces);
    for (i = 0; i < numFaces; i++)
    {
-      cf->mFaceList[faceListStart + i].normal    = normal[fp[i * 4 + 0]];
-      cf->mFaceList[faceListStart + i].vertex[0] = vertexCount + fp[i * 4 + 1];
-      cf->mFaceList[faceListStart + i].vertex[1] = vertexCount + fp[i * 4 + 2];
-      cf->mFaceList[faceListStart + i].vertex[2] = vertexCount + fp[i * 4 + 3];
+      ConvexFeature::Face& face = cf->mFaceList[faceListStart + i];
+      face.normal = normal[fp[i * 4 + 0]];
+      face.vertex[0] = vertexCount + fp[i * 4 + 1];
+      face.vertex[1] = vertexCount + fp[i * 4 + 2];
+      face.vertex[2] = vertexCount + fp[i * 4 + 3];
    }
 }
 

+ 25 - 19
Engine/source/ts/loader/tsShapeLoader.cpp

@@ -283,11 +283,12 @@ void TSShapeLoader::recurseSubshape(AppNode* appNode, S32 parentIndex, bool recu
 
       // Create the 3space node
       shape->nodes.increment();
-      shape->nodes.last().nameIndex = shape->addName(nodeName);
-      shape->nodes.last().parentIndex = parentIndex;
-      shape->nodes.last().firstObject = -1;
-      shape->nodes.last().firstChild = -1;
-      shape->nodes.last().nextSibling = -1;
+      TSShape::Node& lastNode = shape->nodes.last();
+      lastNode.nameIndex = shape->addName(nodeName);
+      lastNode.parentIndex = parentIndex;
+      lastNode.firstObject = -1;
+      lastNode.firstChild = -1;
+      lastNode.nextSibling = -1;
 
       // Add the AppNode to a matching list (so AppNodes can be accessed using 3space
       // node indices)
@@ -323,12 +324,14 @@ void TSShapeLoader::recurseSubshape(AppNode* appNode, S32 parentIndex, bool recu
             appNode->getBool("BB::INCLUDE_POLES", includePoles);
 
             S32 detIndex = shape->addDetail( "bbDetail", size, -1 );
-            shape->details[detIndex].bbEquatorSteps = numEquatorSteps;
-            shape->details[detIndex].bbPolarSteps = numPolarSteps;
-            shape->details[detIndex].bbDetailLevel = dl;
-            shape->details[detIndex].bbDimension = dim;
-            shape->details[detIndex].bbIncludePoles = includePoles;
-            shape->details[detIndex].bbPolarAngle = polarAngle;
+
+            TSShape::Detail& detIndexDetail = shape->details[detIndex];
+            detIndexDetail.bbEquatorSteps = numEquatorSteps;
+            detIndexDetail.bbPolarSteps = numPolarSteps;
+            detIndexDetail.bbDetailLevel = dl;
+            detIndexDetail.bbDimension = dim;
+            detIndexDetail.bbIncludePoles = includePoles;
+            detIndexDetail.bbPolarAngle = polarAngle;
          }
       }
    }
@@ -462,10 +465,11 @@ void TSShapeLoader::generateObjects()
          if (!lastName || (meshNames[iMesh] != *lastName))
          {
             shape->objects.increment();
-            shape->objects.last().nameIndex = shape->addName(meshNames[iMesh]);
-            shape->objects.last().nodeIndex = subshape->objNodes[iMesh];
-            shape->objects.last().startMeshIndex = appMeshes.size();
-            shape->objects.last().numMeshes = 0;
+            TSShape::Object& lastObject = shape->objects.last();
+            lastObject.nameIndex = shape->addName(meshNames[iMesh]);
+            lastObject.nodeIndex = subshape->objNodes[iMesh];
+            lastObject.startMeshIndex = appMeshes.size();
+            lastObject.numMeshes = 0;
             lastName = &meshNames[iMesh];
          }
 
@@ -1190,10 +1194,12 @@ void TSShapeLoader::install()
       shape->meshes.push_back(NULL);
 
       shape->objects.increment();
-      shape->objects.last().nameIndex = shape->addName("dummy");
-      shape->objects.last().nodeIndex = 0;
-      shape->objects.last().startMeshIndex = 0;
-      shape->objects.last().numMeshes = 1;
+
+      TSShape::Object& lastObject = shape->objects.last();
+      lastObject.nameIndex = shape->addName("dummy");
+      lastObject.nodeIndex = 0;
+      lastObject.startMeshIndex = 0;
+      lastObject.numMeshes = 1;
 
       shape->objectStates.increment();
       shape->objectStates.last().frameIndex = 0;

+ 51 - 40
Engine/source/ts/tsAnimate.cpp

@@ -88,16 +88,18 @@ void TSShapeInstance::animateNodes(S32 ss)
    {
       TSThread * th = mThreadList[i];
 
-      if (th->getSequence()->isBlend())
+      const TSShape::Sequence* threadSequence = th->getSequence();
+
+      if (threadSequence->isBlend())
       {
          // blend sequences need default (if not set by other sequence)
          // break rather than continue because the rest will be blends too
          firstBlend = i;
          break;
       }
-      rotBeenSet.takeAway(th->getSequence()->rotationMatters);
-      tranBeenSet.takeAway(th->getSequence()->translationMatters);
-      scaleBeenSet.takeAway(th->getSequence()->scaleMatters);
+      rotBeenSet.takeAway(threadSequence->rotationMatters);
+      tranBeenSet.takeAway(threadSequence->translationMatters);
+      scaleBeenSet.takeAway(threadSequence->scaleMatters);
    }
    rotBeenSet.takeAway(mCallbackNodes);
    rotBeenSet.takeAway(mHandsOffNodes);
@@ -576,9 +578,12 @@ void TSShapeInstance::handleBlendSequence(TSThread * thread, S32 a, S32 b)
    S32 jrot=0;
    S32 jtrans=0;
    S32 jscale=0;
-   TSIntegerSet nodeMatters = thread->getSequence()->translationMatters;
-   nodeMatters.overlap(thread->getSequence()->rotationMatters);
-   nodeMatters.overlap(thread->getSequence()->scaleMatters);
+
+   const TSShape::Sequence* threadSequence = thread->getSequence();
+
+   TSIntegerSet nodeMatters = threadSequence->translationMatters;
+   nodeMatters.overlap(threadSequence->rotationMatters);
+   nodeMatters.overlap(threadSequence->scaleMatters);
    nodeMatters.takeAway(mHandsOffNodes);
    S32 start = nodeMatters.start();
    S32 end   = b;
@@ -587,50 +592,50 @@ void TSShapeInstance::handleBlendSequence(TSThread * thread, S32 a, S32 b)
       // skip nodes outside of this detail
       if (start<a || mDisableBlendNodes.test(nodeIndex))
       {
-         if (thread->getSequence()->rotationMatters.test(nodeIndex))
+         if (threadSequence->rotationMatters.test(nodeIndex))
             jrot++;
-         if (thread->getSequence()->translationMatters.test(nodeIndex))
+         if (threadSequence->translationMatters.test(nodeIndex))
             jtrans++;
-         if (thread->getSequence()->scaleMatters.test(nodeIndex))
+         if (threadSequence->scaleMatters.test(nodeIndex))
             jscale++;
          continue;
       }
 
       MatrixF mat(true);
-      if (thread->getSequence()->rotationMatters.test(nodeIndex))
+      if (threadSequence->rotationMatters.test(nodeIndex))
       {
          QuatF q1,q2;
-         mShape->getRotation(*thread->getSequence(),thread->keyNum1,jrot,&q1);
-         mShape->getRotation(*thread->getSequence(),thread->keyNum2,jrot,&q2);
+         mShape->getRotation(*threadSequence,thread->keyNum1,jrot,&q1);
+         mShape->getRotation(*threadSequence,thread->keyNum2,jrot,&q2);
          QuatF quat;
          TSTransform::interpolate(q1,q2,thread->keyPos,&quat);
          TSTransform::setMatrix(quat,&mat);
          jrot++;
       }
 
-      if (thread->getSequence()->translationMatters.test(nodeIndex))
+      if (threadSequence->translationMatters.test(nodeIndex))
       {
-         const Point3F & p1 = mShape->getTranslation(*thread->getSequence(),thread->keyNum1,jtrans);
-         const Point3F & p2 = mShape->getTranslation(*thread->getSequence(),thread->keyNum2,jtrans);
+         const Point3F & p1 = mShape->getTranslation(*threadSequence,thread->keyNum1,jtrans);
+         const Point3F & p2 = mShape->getTranslation(*threadSequence,thread->keyNum2,jtrans);
          Point3F p;
          TSTransform::interpolate(p1,p2,thread->keyPos,&p);
          mat.setColumn(3,p);
          jtrans++;
       }
 
-      if (thread->getSequence()->scaleMatters.test(nodeIndex))
+      if (threadSequence->scaleMatters.test(nodeIndex))
       {
-         if (thread->getSequence()->animatesUniformScale())
+         if (threadSequence->animatesUniformScale())
          {
-            F32 s1 = mShape->getUniformScale(*thread->getSequence(),thread->keyNum1,jscale);
-            F32 s2 = mShape->getUniformScale(*thread->getSequence(),thread->keyNum2,jscale);
+            F32 s1 = mShape->getUniformScale(*threadSequence,thread->keyNum1,jscale);
+            F32 s2 = mShape->getUniformScale(*threadSequence,thread->keyNum2,jscale);
             F32 scale = TSTransform::interpolate(s1,s2,thread->keyPos);
             TSTransform::applyScale(scale,&mat);
          }
          else if (animatesAlignedScale())
          {
-            Point3F s1 = mShape->getAlignedScale(*thread->getSequence(),thread->keyNum1,jscale);
-            Point3F s2 = mShape->getAlignedScale(*thread->getSequence(),thread->keyNum2,jscale);
+            Point3F s1 = mShape->getAlignedScale(*threadSequence,thread->keyNum1,jscale);
+            Point3F s2 = mShape->getAlignedScale(*threadSequence,thread->keyNum2,jscale);
             Point3F scale;
             TSTransform::interpolate(s1,s2,thread->keyPos,&scale);
             TSTransform::applyScale(scale,&mat);
@@ -638,8 +643,8 @@ void TSShapeInstance::handleBlendSequence(TSThread * thread, S32 a, S32 b)
          else
          {
             TSScale s1,s2;
-            mShape->getArbitraryScale(*thread->getSequence(),thread->keyNum1,jscale,&s1);
-            mShape->getArbitraryScale(*thread->getSequence(),thread->keyNum2,jscale,&s2);
+            mShape->getArbitraryScale(*threadSequence,thread->keyNum1,jscale,&s1);
+            mShape->getArbitraryScale(*threadSequence,thread->keyNum2,jscale,&s2);
             TSScale scale;
             TSTransform::interpolate(s1,s2,thread->keyPos,&scale);
             TSTransform::applyScale(scale,&mat);
@@ -686,15 +691,17 @@ void TSShapeInstance::animateVisibility(S32 ss)
    {
       TSThread * th = mThreadList[i];
 
+      const TSShape::Sequence* threadSequence = th->getSequence();
+
       // For better or worse, object states are stored together (frame,
       // matFrame, visibility all in one structure).  Thus, indexing into
       // object state array for animation for any of these attributes needs to
       // take into account whether or not the other attributes are also animated.
       // The object states should eventually be separated (like the node states were)
       // in order to save memory and save the following step.
-      TSIntegerSet objectMatters = th->getSequence()->frameMatters;
-      objectMatters.overlap(th->getSequence()->matFrameMatters);
-      objectMatters.overlap(th->getSequence()->visMatters);
+      TSIntegerSet objectMatters = threadSequence->frameMatters;
+      objectMatters.overlap(threadSequence->matFrameMatters);
+      objectMatters.overlap(threadSequence->visMatters);
 
       // skip to beginning of this sub-shape
       S32 j=0;
@@ -702,10 +709,10 @@ void TSShapeInstance::animateVisibility(S32 ss)
       S32 end = b;
       for (S32 objectIndex = start; objectIndex<end; objectMatters.next(objectIndex), j++)
       {
-         if (!beenSet.test(objectIndex) && th->getSequence()->visMatters.test(objectIndex))
+         if (!beenSet.test(objectIndex) && threadSequence->visMatters.test(objectIndex))
          {
-            F32 state1 = mShape->getObjectState(*th->getSequence(),th->keyNum1,j).vis;
-            F32 state2 = mShape->getObjectState(*th->getSequence(),th->keyNum2,j).vis;
+            F32 state1 = mShape->getObjectState(*threadSequence,th->keyNum1,j).vis;
+            F32 state2 = mShape->getObjectState(*threadSequence,th->keyNum2,j).vis;
             if ((state1-state2) * (state1-state2) > 0.99f)
                // goes from 0 to 1 -- discreet jump
                mMeshObjects[objectIndex].visible = th->keyPos<0.5f ? state1 : state2;
@@ -747,15 +754,17 @@ void TSShapeInstance::animateFrame(S32 ss)
    {
       TSThread * th = mThreadList[i];
 
+      const TSShape::Sequence* threadSequence = th->getSequence();
+
       // For better or worse, object states are stored together (frame,
       // matFrame, visibility all in one structure).  Thus, indexing into
       // object state array for animation for any of these attributes needs to
       // take into account whether or not the other attributes are also animated.
       // The object states should eventually be separated (like the node states were)
       // in order to save memory and save the following step.
-      TSIntegerSet objectMatters = th->getSequence()->frameMatters;
-      objectMatters.overlap(th->getSequence()->matFrameMatters);
-      objectMatters.overlap(th->getSequence()->visMatters);
+      TSIntegerSet objectMatters = threadSequence->frameMatters;
+      objectMatters.overlap(threadSequence->matFrameMatters);
+      objectMatters.overlap(threadSequence->visMatters);
 
       // skip to beginning of this sub-shape
       S32 j=0;
@@ -763,10 +772,10 @@ void TSShapeInstance::animateFrame(S32 ss)
       S32 end = b;
       for (S32 objectIndex = start; objectIndex<end; objectMatters.next(objectIndex), j++)
       {
-         if (!beenSet.test(objectIndex) && th->getSequence()->frameMatters.test(objectIndex))
+         if (!beenSet.test(objectIndex) && threadSequence->frameMatters.test(objectIndex))
          {
             S32 key = (th->keyPos<0.5f) ? th->keyNum1 : th->keyNum2;
-            mMeshObjects[objectIndex].frame = mShape->getObjectState(*th->getSequence(),key,j).frameIndex;
+            mMeshObjects[objectIndex].frame = mShape->getObjectState(*threadSequence,key,j).frameIndex;
 
             // record change so that later threads don't over-write us...
             beenSet.set(objectIndex);
@@ -802,15 +811,17 @@ void TSShapeInstance::animateMatFrame(S32 ss)
    {
       TSThread * th = mThreadList[i];
 
+      const TSShape::Sequence* threadSequence = th->getSequence();
+
       // For better or worse, object states are stored together (frame,
       // matFrame, visibility all in one structure).  Thus, indexing into
       // object state array for animation for any of these attributes needs to
       // take into account whether or not the other attributes are also animated.
       // The object states should eventually be separated (like the node states were)
       // in order to save memory and save the following step.
-      TSIntegerSet objectMatters = th->getSequence()->frameMatters;
-      objectMatters.overlap(th->getSequence()->matFrameMatters);
-      objectMatters.overlap(th->getSequence()->visMatters);
+      TSIntegerSet objectMatters = threadSequence->frameMatters;
+      objectMatters.overlap(threadSequence->matFrameMatters);
+      objectMatters.overlap(threadSequence->visMatters);
 
       // skip to beginining of this sub-shape
       S32 j=0;
@@ -818,10 +829,10 @@ void TSShapeInstance::animateMatFrame(S32 ss)
       S32 end = b;
       for (S32 objectIndex = start; objectIndex<end; objectMatters.next(objectIndex), j++)
       {
-         if (!beenSet.test(objectIndex) && th->getSequence()->matFrameMatters.test(objectIndex))
+         if (!beenSet.test(objectIndex) && threadSequence->matFrameMatters.test(objectIndex))
          {
             S32 key = (th->keyPos<0.5f) ? th->keyNum1 : th->keyNum2;
-            mMeshObjects[objectIndex].matFrame = mShape->getObjectState(*th->getSequence(),key,j).matFrameIndex;
+            mMeshObjects[objectIndex].matFrame = mShape->getObjectState(*threadSequence,key,j).matFrameIndex;
 
             // record change so that later threads don't over-write us...
             beenSet.set(objectIndex);

+ 6 - 4
Engine/source/ts/tsDump.cpp

@@ -171,19 +171,21 @@ void TSShapeInstance::dump(Stream & stream)
    bool foundSkin = false;
    for (i=0; i<mShape->objects.size(); i++)
    {
-      if (mShape->objects[i].nodeIndex<0) // must be a skin
+      TSShape::Object& currentObject = mShape->objects[i];
+
+      if (currentObject.nodeIndex<0) // must be a skin
       {
          if (!foundSkin)
             dumpLine("\r\n   Skins:\r\n");
          foundSkin=true;
          const char * skinName = "";
-         S32 nameIndex = mShape->objects[i].nameIndex;
+         S32 nameIndex = currentObject.nameIndex;
          if (nameIndex>=0)
             skinName = mShape->getName(nameIndex);
          dumpLine(avar("      Skin %s with following details: ",skinName));
-         for (S32 num=0; num<mShape->objects[i].numMeshes; num++)
+         for (S32 num=0; num<currentObject.numMeshes; num++)
          {
-            if (mShape->meshes[mShape->objects[i].startMeshIndex + num])
+            if (mShape->meshes[currentObject.startMeshIndex + num])
                dumpLine(avar(" %i",(S32)mShape->details[num].size));
          }
          dumpLine("\r\n");

+ 15 - 10
Engine/source/ts/tsMesh.cpp

@@ -447,11 +447,13 @@ bool TSMesh::getFeatures( S32 frame, const MatrixF& mat, const VectorF&, ConvexF
                           cf->mVertexList[base + indices[start + j + 2]]);
 
             cf->mFaceList.increment();
-            cf->mFaceList.last().normal = plane;
 
-            cf->mFaceList.last().vertex[0] = base + indices[start + j + 0];
-            cf->mFaceList.last().vertex[1] = base + indices[start + j + 1];
-            cf->mFaceList.last().vertex[2] = base + indices[start + j + 2];
+            ConvexFeature::Face& lastFace = cf->mFaceList.last();
+            lastFace.normal = plane;
+
+            lastFace.vertex[0] = base + indices[start + j + 0];
+            lastFace.vertex[1] = base + indices[start + j + 1];
+            lastFace.vertex[2] = base + indices[start + j + 2];
 
             for ( U32 l = 0; l < 3; l++ ) 
             {
@@ -514,8 +516,9 @@ bool TSMesh::getFeatures( S32 frame, const MatrixF& mat, const VectorF&, ConvexF
             S32 k;
             for ( k = 0; k < cf->mEdgeList.size(); k++ ) 
             {
-               if ( cf->mEdgeList[k].vertex[0] == newEdge0 &&
-                    cf->mEdgeList[k].vertex[1] == newEdge1) 
+               ConvexFeature::Edge currentEdge = cf->mEdgeList[k];
+               if (currentEdge.vertex[0] == newEdge0 &&
+                  currentEdge.vertex[1] == newEdge1)
                {
                   found = true;
                   break;
@@ -1437,10 +1440,12 @@ void TSSkinMesh::createBatchData()
          }
 
          bt->_tmpVec->increment();
-         bt->_tmpVec->last().vert = batchData.initialVerts[curTransform.vertexIndex];
-         bt->_tmpVec->last().normal = batchData.initialNorms[curTransform.vertexIndex];
-         bt->_tmpVec->last().weight = transformOp.weight;
-         bt->_tmpVec->last().vidx = curTransform.vertexIndex;
+
+         BatchData::BatchedVertWeight& tempLast = bt->_tmpVec->last();
+         tempLast.vert = batchData.initialVerts[curTransform.vertexIndex];
+         tempLast.normal = batchData.initialNorms[curTransform.vertexIndex];
+         tempLast.weight = transformOp.weight;
+         tempLast.vidx = curTransform.vertexIndex;
       }
    }
 

+ 15 - 12
Engine/source/ts/tsMeshFit.cpp

@@ -443,10 +443,11 @@ void MeshFit::addSphere( F32 radius, const Point3F& center )
    mesh->computeBounds();
 
    mMeshes.increment();
-   mMeshes.last().type = MeshFit::Sphere;
-   mMeshes.last().transform.identity();
-   mMeshes.last().transform.setPosition( center );
-   mMeshes.last().tsmesh = mesh;
+   MeshFit::Mesh& lastMesh = mMeshes.last();
+   lastMesh.type = MeshFit::Sphere;
+   lastMesh.transform.identity();
+   lastMesh.transform.setPosition(center);
+   lastMesh.tsmesh = mesh;
 }
 
 void MeshFit::fitSphere()
@@ -603,11 +604,12 @@ void MeshFit::fitK_DOP( const Vector<Point3F>& planes )
 
    // Create TSMesh from convex hull
    mMeshes.increment();
-   mMeshes.last().type = MeshFit::Hull;
-   mMeshes.last().transform.identity();
-   mMeshes.last().tsmesh = createTriMesh( result.mOutputVertices, result.mNumOutputVertices,
+   MeshFit::Mesh& lastMesh = mMeshes.last();
+   lastMesh.type = MeshFit::Hull;
+   lastMesh.transform.identity();
+   lastMesh.tsmesh = createTriMesh(result.mOutputVertices, result.mNumOutputVertices,
                               result.mIndices, result.mNumFaces );
-   mMeshes.last().tsmesh->computeBounds();
+   lastMesh.tsmesh->computeBounds();
 }
 
 //---------------------------
@@ -702,10 +704,11 @@ void MeshFit::fitConvexHulls( U32 depth, F32 mergeThreshold, F32 concavityThresh
       {
          // Create TSMesh from convex hull
          mMeshes.increment();
-         mMeshes.last().type = MeshFit::Hull;
-         mMeshes.last().transform.identity();
-         mMeshes.last().tsmesh = createTriMesh( result.mVertices, result.mVcount, result.mIndices, result.mTcount );
-         mMeshes.last().tsmesh->computeBounds();
+         MeshFit::Mesh& lastMesh = mMeshes.last();
+         lastMesh.type = MeshFit::Hull;
+         lastMesh.transform.identity();
+         lastMesh.tsmesh = createTriMesh(result.mVertices, result.mVcount, result.mIndices, result.mTcount);
+         lastMesh.tsmesh->computeBounds();
       }
    }
 

+ 12 - 8
Engine/source/ts/tsThread.cpp

@@ -286,13 +286,15 @@ void TSThread::activateTriggers(F32 a, F32 b)
    S32 bIndex  = numTriggers+firstTrigger; // initialized to handle case where pos past all triggers
    for (i=firstTrigger; i<numTriggers+firstTrigger; i++)
    {
+      TSShape::Trigger currentTrigger = shape->triggers[i];
+
       // is a between this trigger and previous one...
-      if (a>lastPos && a<=shape->triggers[i].pos)
+      if (a>lastPos && a <= currentTrigger.pos)
          aIndex = i;
       // is b between this trigger and previous one...
-      if (b>lastPos && b<=shape->triggers[i].pos)
+      if (b>lastPos && b <= currentTrigger.pos)
          bIndex = i;
-      lastPos = shape->triggers[i].pos;
+      lastPos = currentTrigger.pos;
    }
 
    // activate triggers between aIndex and bIndex (depends on direction)
@@ -578,19 +580,21 @@ void TSShapeInstance::transitionToSequence(TSThread * thread, S32 seq, F32 pos,
    setDirty(AllDirtyMask);
    mGroundThread = NULL;
 
-   if (mScaleCurrentlyAnimated && !thread->getSequence()->animatesScale())
+   const TSShape::Sequence* threadSequence = thread->getSequence();
+
+   if (mScaleCurrentlyAnimated && !threadSequence->animatesScale())
       checkScaleCurrentlyAnimated();
-   else if (!mScaleCurrentlyAnimated && thread->getSequence()->animatesScale())
+   else if (!mScaleCurrentlyAnimated && threadSequence->animatesScale())
       mScaleCurrentlyAnimated=true;
 
    mTransitionRotationNodes.overlap(thread->transitionData.oldRotationNodes);
-   mTransitionRotationNodes.overlap(thread->getSequence()->rotationMatters);
+   mTransitionRotationNodes.overlap(threadSequence->rotationMatters);
 
    mTransitionTranslationNodes.overlap(thread->transitionData.oldTranslationNodes);
-   mTransitionTranslationNodes.overlap(thread->getSequence()->translationMatters);
+   mTransitionTranslationNodes.overlap(threadSequence->translationMatters);
 
    mTransitionScaleNodes.overlap(thread->transitionData.oldScaleNodes);
-   mTransitionScaleNodes.overlap(thread->getSequence()->scaleMatters);
+   mTransitionScaleNodes.overlap(threadSequence->scaleMatters);
 
    // if we aren't already in the list of transition threads, add us now
    S32 i;

+ 5 - 4
Engine/source/windowManager/win32/win32WindowMgr.cpp

@@ -182,10 +182,11 @@ BOOL Win32WindowManager::MonitorRegionEnumProc(HMONITOR hMonitor, HDC hdcMonitor
    Vector<RectI> * regions = (Vector<RectI>*)dwData;
 
    regions->increment();
-   regions->last().point.x = lprcMonitor->left;
-   regions->last().point.y = lprcMonitor->top;
-   regions->last().extent.x = lprcMonitor->right - lprcMonitor->left;
-   regions->last().extent.y = lprcMonitor->bottom - lprcMonitor->top;
+   RectI& lastRegion = regions->last();
+   lastRegion.point.x = lprcMonitor->left;
+   lastRegion.point.y = lprcMonitor->top;
+   lastRegion.extent.x = lprcMonitor->right - lprcMonitor->left;
+   lastRegion.extent.y = lprcMonitor->bottom - lprcMonitor->top;
 
    return true;
 }