Quellcode durchsuchen

Merge branch 'development' of https://github.com/TorqueGameEngines/Torque3D into SubScenes_Gamemode_PR

JeffR vor 11 Monaten
Ursprung
Commit
20a01d9f02
71 geänderte Dateien mit 353 neuen und 509 gelöschten Zeilen
  1. 7 0
      Engine/source/T3D/vehicles/wheeledVehicle.cpp
  2. 3 1
      Engine/source/console/consoleFunctions.cpp
  3. 1 1
      Engine/source/console/torquescript/CMDgram.y
  4. 1 1
      Engine/source/console/torquescript/cmdgram.cpp
  5. 1 0
      Engine/source/gfx/bitmap/gBitmap.cpp
  6. 15 64
      Engine/source/gui/controls/guiColorPicker.cpp
  7. 13 6
      Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.cpp
  8. 2 0
      Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.h
  9. 14 13
      Templates/BaseGame/game/core/rendering/shaders/gl/imposter.glsl
  10. 11 10
      Templates/BaseGame/game/core/rendering/shaders/imposter.hlsl
  11. 2 2
      Templates/BaseGame/game/tools/VPathEditor/GUI/VPathEditor.gui
  12. 3 2
      Templates/BaseGame/game/tools/VPathEditor/Scripts/GuiScript.tscript
  13. 1 85
      Templates/BaseGame/game/tools/assetBrowser/guis/assetBrowser.gui
  14. 6 40
      Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript
  15. 1 1
      Templates/BaseGame/game/tools/convexEditor/convexEditorGui.gui
  16. 14 3
      Templates/BaseGame/game/tools/convexEditor/convexEditorGui.tscript
  17. 1 1
      Templates/BaseGame/game/tools/convexEditor/convexEditorSidebarGui.gui
  18. 1 1
      Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui
  19. 4 0
      Templates/BaseGame/game/tools/convexEditor/main.tscript
  20. 1 1
      Templates/BaseGame/game/tools/datablockEditor/DatablockEditorInspectorWindow.ed.gui
  21. 1 1
      Templates/BaseGame/game/tools/datablockEditor/DatablockEditorTreeWindow.ed.gui
  22. 3 2
      Templates/BaseGame/game/tools/datablockEditor/datablockEditor.tscript
  23. 2 2
      Templates/BaseGame/game/tools/decalEditor/decalEditorGui.gui
  24. 5 4
      Templates/BaseGame/game/tools/decalEditor/decalEditorGui.tscript
  25. 2 2
      Templates/BaseGame/game/tools/forestEditor/forestEditorGui.gui
  26. 3 2
      Templates/BaseGame/game/tools/forestEditor/forestEditorGui.tscript
  27. 1 1
      Templates/BaseGame/game/tools/gui/EditorSettingsWindow.ed.gui
  28. 33 33
      Templates/BaseGame/game/tools/gui/colorPicker.ed.gui
  29. 1 1
      Templates/BaseGame/game/tools/gui/editorSettingsWindow.ed.tscript
  30. 1 1
      Templates/BaseGame/game/tools/gui/guiObjectInspector.ed.gui
  31. 1 1
      Templates/BaseGame/game/tools/gui/postFxEditor.gui
  32. 17 4
      Templates/BaseGame/game/tools/gui/profiles.ed.tscript
  33. 31 2
      Templates/BaseGame/game/tools/guiEditor/gui/guiEditor.ed.gui
  34. 1 1
      Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPreviewWindow.ed.gui
  35. 1 1
      Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPropertiesWindow.ed.gui
  36. 7 6
      Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript
  37. 2 2
      Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorGui.gui
  38. 3 2
      Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorGui.tscript
  39. 2 2
      Templates/BaseGame/game/tools/missionAreaEditor/missionAreaEditorGui.ed.gui
  40. 3 2
      Templates/BaseGame/game/tools/missionAreaEditor/missionAreaEditorGui.ed.tscript
  41. 2 2
      Templates/BaseGame/game/tools/navEditor/NavEditorGui.gui
  42. 3 2
      Templates/BaseGame/game/tools/navEditor/navEditor.tscript
  43. 1 1
      Templates/BaseGame/game/tools/particleEditor/ParticleEditor.ed.gui
  44. 5 4
      Templates/BaseGame/game/tools/particleEditor/particleEditor.ed.tscript
  45. 2 2
      Templates/BaseGame/game/tools/riverEditor/RiverEditorGui.gui
  46. 3 2
      Templates/BaseGame/game/tools/riverEditor/riverEditorGui.tscript
  47. 2 2
      Templates/BaseGame/game/tools/roadEditor/RoadEditorGui.gui
  48. 3 2
      Templates/BaseGame/game/tools/roadEditor/roadEditorGui.tscript
  49. 3 3
      Templates/BaseGame/game/tools/shapeEditor/gui/shapeEdAdvancedWindow.ed.gui
  50. 1 1
      Templates/BaseGame/game/tools/shapeEditor/gui/shapeEdPropWindow.ed.gui
  51. 1 1
      Templates/BaseGame/game/tools/shapeEditor/gui/shapeEdSelectWindow.ed.gui
  52. 1 85
      Templates/BaseGame/game/tools/windowConsole/guis/window_console.gui
  53. 22 36
      Templates/BaseGame/game/tools/windowConsole/scripts/window_console.tscript
  54. 14 1
      Templates/BaseGame/game/tools/worldEditor/gui/EditorGui.ed.gui
  55. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/EditorSettingsWindow.ed.gui
  56. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/ManageBookmarksWindow.ed.gui
  57. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/ManageSFXParametersWindow.ed.gui
  58. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/ObjectSnapOptionsWindow.ed.gui
  59. 2 2
      Templates/BaseGame/game/tools/worldEditor/gui/TerrainPainterWindow.ed.gui
  60. 18 5
      Templates/BaseGame/game/tools/worldEditor/gui/ToolsToolbar.ed.gui
  61. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorInspectorWindow.ed.gui
  62. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorTreeWindow.ed.gui
  63. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/guiTerrainImportGui.gui
  64. 1 1
      Templates/BaseGame/game/tools/worldEditor/gui/guiTerrainMaterialDlg.ed.gui
  65. 27 5
      Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript
  66. 4 3
      Templates/BaseGame/game/tools/worldEditor/scripts/editors/terrainEditor.ed.tscript
  67. 5 32
      Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.tscript
  68. 0 3
      Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shaders/Viz_SurfacePropertiesP.glsl
  69. 0 3
      Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shaders/Viz_SurfacePropertiesP.hlsl
  70. 3 0
      Tools/CMake/modules/tools.cmake
  71. 1 0
      Tools/CMake/torque_configs.cmake

+ 7 - 0
Engine/source/T3D/vehicles/wheeledVehicle.cpp

@@ -797,6 +797,13 @@ void WheeledVehicle::updateMove(const Move* move)
    // Set the tail brake light thread direction based on the brake state.
    if (mTailLightThread)
       mShapeInstance->setTimeScale(mTailLightThread, mBraking? 1.0f : -1.0f);
+
+   // Update the steering animation: sequence time 0 is full right,
+   // and time 0.5 is straight ahead.
+   if (mSteeringThread) {
+      F32 t = (mSteering.x * mFabs(mSteering.x)) / mDataBlock->maxSteeringAngle;
+      mShapeInstance->setPos(mSteeringThread, 0.5 - t * 0.5);
+   }
 }
 
 

+ 3 - 1
Engine/source/console/consoleFunctions.cpp

@@ -2803,7 +2803,7 @@ DefineEngineFunction(getTimestamp, const char*, (), ,
    return returnBuffer;
 }
 
-#ifdef TORQUE_TOOLS
+#ifdef TORQUE_TOOLS_EXT_COMMANDS
 DefineEngineFunction(systemCommand, S32, (const char* commandLineAction, const char* callBackFunction), (""), "")
 {
    if (commandLineAction && commandLineAction[0] != '\0')
@@ -2819,7 +2819,9 @@ DefineEngineFunction(systemCommand, S32, (const char* commandLineAction, const c
 
    return -1;
 }
+#endif
 
+#ifdef TORQUE_TOOLS
 const char* getDocsLink(const char* filename, U32 lineNumber)
 {
    Vector<String> fileStringSplit;

+ 1 - 1
Engine/source/console/torquescript/CMDgram.y

@@ -656,7 +656,7 @@ yyreport_syntax_error (const yypcontext_t *ctx)
       output += String::ToString("%5s | %*s", "", loc->first_column, "^");
    }
 
-   yyerror(output.c_str());
+   yyerror("%s", output.c_str());
 
    return ret;
 }

+ 1 - 1
Engine/source/console/torquescript/cmdgram.cpp

@@ -3363,7 +3363,7 @@ yyreport_syntax_error (const yypcontext_t *ctx)
       output += String::ToString("%5s | %*s", "", loc->first_column, "^");
    }
 
-   yyerror(output.c_str());
+   yyerror("%s",output.c_str());
 
    return ret;
 }

+ 1 - 0
Engine/source/gfx/bitmap/gBitmap.cpp

@@ -779,6 +779,7 @@ bool GBitmap::getColor(const U32 x, const U32 y, ColorI& rColor) const
       break;
 	 case GFXFormatL16:
 		 rColor.set(U8(U16((pLoc[0] << 8) + pLoc[1])), 0, 0, 0);
+       break;
      case GFXFormatR8G8B8:
      case GFXFormatR8G8B8X8:
         rColor.set( pLoc[0], pLoc[1], pLoc[2], 255 );

+ 15 - 64
Engine/source/gui/controls/guiColorPicker.cpp

@@ -272,18 +272,18 @@ void GuiColorPickerCtrl::drawSelector(RectI &bounds, Point2I &selectorPos, Selec
    {
       case sVertical:
          // Now draw the vertical selector Up -> Pos
-         if (selectorPos.y != bounds.point.y+1)
+         if (selectorPos.y > bounds.point.y)
             GFX->getDrawUtil()->drawLine(selectorPos.x, bounds.point.y, selectorPos.x, selectorPos.y-sMax-1, color);
          // Down -> Pos
-         if (selectorPos.y != bounds.point.y+bounds.extent.y) 
+         if (selectorPos.y < bounds.point.y + bounds.extent.y)
             GFX->getDrawUtil()->drawLine(selectorPos.x,	selectorPos.y + sMax, selectorPos.x, bounds.point.y + bounds.extent.y, color);
       break;
       case sHorizontal:
          // Now draw the horizontal selector Left -> Pos
-         if (selectorPos.x != bounds.point.x) 
+         if (selectorPos.x > bounds.point.x)
             GFX->getDrawUtil()->drawLine(bounds.point.x, selectorPos.y-1, selectorPos.x-sMax, selectorPos.y-1, color);
          // Right -> Pos
-         if (selectorPos.x != bounds.point.x) 
+         if (selectorPos.x < bounds.point.x + bounds.extent.x)
             GFX->getDrawUtil()->drawLine(bounds.point.x+mSelectorPos.x+sMax, selectorPos.y-1, bounds.point.x + bounds.extent.x, selectorPos.y-1, color);
       break;
    }
@@ -388,13 +388,11 @@ void GuiColorPickerCtrl::onRender(Point2I offset, const RectI& updateRect)
       {
          Point2I resolution = getRoot()->getExtent();
 
-         U32 buf_x = offset.x + mSelectorPos.x + 1;
-         U32 buf_y = resolution.y - (extent.y - (offset.y + mSelectorPos.y + 1));
+         U32 buf_x = offset.x + mSelectorPos.x;
+         U32 buf_y = resolution.y - (extent.y - (offset.y + mSelectorPos.y));
 
          GFXTexHandle bb(resolution.x, resolution.y, GFXFormatR8G8B8A8_SRGB, &GFXRenderTargetSRGBProfile, avar("%s() - bb (line %d)", __FUNCTION__, __LINE__));
 
-         Point2I tmpPt(buf_x, buf_y);
-
          GFXTarget *targ = GFX->getActiveRenderTarget();
          targ->resolveTo(bb);
 
@@ -458,19 +456,7 @@ void GuiColorPickerCtrl::setSelectorPos(const LinearColorF & color)
 
 Point2I GuiColorPickerCtrl::findColor(const LinearColorF & color, const Point2I& offset, const Point2I& resolution, GBitmap& bmp)
 {
-   RectI rect;
    Point2I ext = getExtent();
-   if (mDisplayMode != pDropperBackground)
-   {
-      ext.x -= 3;
-      ext.y -= 2;
-      rect = RectI(Point2I(1, 1), ext);
-   }
-   else
-   {
-      rect = RectI(Point2I(0, 0), ext);
-   }
-
    Point2I closestPos(-1, -1);
 
    /* Debugging
@@ -498,12 +484,12 @@ Point2I GuiColorPickerCtrl::findColor(const LinearColorF & color, const Point2I&
    F32 closestVal(10000.0f);
    bool closestSet = false;
 
-   for (S32 x = rect.point.x; x <= rect.extent.x; x++)
+   for (S32 x = 0; x < ext.x; x++)
    {
-      for (S32 y = rect.point.y; y <= rect.extent.y; y++)
+      for (S32 y = 0; y < ext.y; y++)
       {
-         buf_x = offset.x + x + 1;
-         buf_y = (resolution.y - (offset.y + y + 1));
+         buf_x = offset.x + x;
+         buf_y = (resolution.y - (offset.y + y));
          buf_y = resolution.y - buf_y;
 
          //Get the color at that position
@@ -532,46 +518,11 @@ Point2I GuiColorPickerCtrl::findColor(const LinearColorF & color, const Point2I&
 
 void GuiColorPickerCtrl::setSelectorPos(const Point2I &pos)
 {
-   Point2I extent = getExtent();
-   RectI rect;
-   if (mDisplayMode != pDropperBackground) 
-   {
-      extent.x -= 3;
-      extent.y -= 2;
-      rect = RectI(Point2I(1,1), extent);
-   }
-   else
-   {
-      rect = RectI(Point2I(0,0), extent);
-   }
-   
-   if (rect.pointInRect(pos)) 
-   {
-      mSelectorPos = pos;
-      mPositionChanged = true;
-      // We now need to update
-      setUpdate();
-   }
-
-   else
-   {
-      if ((pos.x > rect.point.x) && (pos.x < (rect.point.x + rect.extent.x)))
-         mSelectorPos.x = pos.x;
-      else if (pos.x <= rect.point.x)
-         mSelectorPos.x = rect.point.x;
-      else if (pos.x >= (rect.point.x + rect.extent.x))
-         mSelectorPos.x = rect.point.x + rect.extent.x - 1;
-
-      if ((pos.y > rect.point.y) && (pos.y < (rect.point.y + rect.extent.y)))
-         mSelectorPos.y = pos.y;
-      else if (pos.y <= rect.point.y)
-         mSelectorPos.y = rect.point.y;
-      else if (pos.y >= (rect.point.y + rect.extent.y))
-         mSelectorPos.y = rect.point.y + rect.extent.y - 1;
-
-      mPositionChanged = true;
-      setUpdate();
-   }
+   Point2I ext = getExtent();
+   mSelectorPos.x = mClamp(pos.x, 1, ext.x - 1);
+   mSelectorPos.y = mClamp(pos.y, 1, ext.y - 1);
+   mPositionChanged = true;
+   setUpdate();
 }
 
 void GuiColorPickerCtrl::onMouseDown(const GuiEvent &event)

+ 13 - 6
Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.cpp

@@ -3043,16 +3043,23 @@ DefineEngineMethod(GuiConvexEditorCtrl, getSelectedFaceZRot, float, (), ,
 }
 
 DefineEngineMethod(GuiConvexEditorCtrl, toggleGridSnapping, void, (),,
-   "@brief Mount objB to this object at the desired slot with optional transform.\n\n"
-
-   "@param objB  Object to mount onto us\n"
-   "@param slot  Mount slot ID\n"
-   "@param txfm (optional) mount offset transform\n"
-   "@return true if successful, false if failed (objB is not valid)")
+   "@brief toggle grid snapping state.\n\n")
 {
    object->toggleGridSnapping();
 }
 
+DefineEngineMethod(GuiConvexEditorCtrl, setGridSnap, void, (bool snap), ,
+   "@brief set grid snapping state.\n\n")
+{
+   object->setGridSnap(snap);
+}
+
+DefineEngineMethod(GuiConvexEditorCtrl, getGridSnap, bool, (), ,
+   "@brief set grid snapping state.\n\n")
+{
+   return object->getGridSnap();
+}
+
 DefineEngineMethod(GuiConvexEditorCtrl, setGridSnapSize, void, (float gridSize), (1.0),
    "@brief Mount objB to this object at the desired slot with optional transform.\n\n"
 

+ 2 - 0
Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.h

@@ -130,6 +130,8 @@ public:
    void setSelectedFaceVertFlip(bool flipped);
    void setSelectedFaceZRot(float degrees);
    void toggleGridSnapping();
+   bool getGridSnap() { return mGridSnap; };
+   void setGridSnap(bool snap) { mGridSnap = snap; };
    void setGridSnapSize(float gridSize);
 
    void updateShape();

+ 14 - 13
Templates/BaseGame/game/core/rendering/shaders/gl/imposter.glsl

@@ -22,7 +22,7 @@
 
 #include "torque.glsl"
 
-
+#line 25
 #define IMPOSTER_MAX_UVS 64
 
 
@@ -94,24 +94,22 @@ void imposter_v(
 
     // First check to see if we need to render the top billboard.   
     int index;
-    /*
-    if ( includePoles && ( lookPitch < polarAngle || lookPitch > sPi - polarAngle ) )
+    if ( includePoles && ( lookPitch < polarHalfStep || lookPitch > M_PI_F - polarHalfStep ) )
     {
-      index = numEquatorSteps * 3; 
+      index = numEquatorSteps * numPolarSteps; 
 
       // When we render the top/bottom billboard we always use
       // a fixed vector that matches the rotation of the object.
       rightVec = vec3( 1, 0, 0 ) * sCornerRight[corner];
-      upVec = vec3( 0, 1, 0 ) * sCornerUp[corner];
+      upVec = vec3( 0, -1, 0 ) * sCornerUp[corner];
 
-      if ( lookPitch > sPi - polarAngle )
+      if ( lookPitch < polarHalfStep )
       {
          upVec = -upVec;
          index++;
       }
     }
     else
-    */
     {
         // Calculate the rotation around the z axis then add the
         // equator half step.  This gets the images to switch a
@@ -126,20 +124,23 @@ void imposter_v(
 
         // TODO: How can we do this without conditionals?
         // Normalize the result to 0 to 2PI.
-        if ( rotZ < 0.0 )
+        if ( rotZ < 0 )
             rotZ += M_2PI_F;
-        if ( rotZ > M_2PI_F )
+        else if ( rotZ > M_2PI_F )
             rotZ -= M_2PI_F;
-        if ( rotY < 0.0 )
+            
+        if ( rotY < 0 )
             rotY += M_2PI_F;
-        if ( rotY > M_PI_F ) // Not M_2PI_F?
+        else if ( rotY > M_2PI_F )
             rotY -= M_2PI_F;
 
-        float polarIdx = round( abs( rotY ) / polarStepSize );
+        int polarIdx = int(max(min(round( rotY / polarStepSize ), numPolarSteps-2),0));
 
         // Get the index to the start of the right polar
         // images for this viewing angle.
-        int numPolarOffset = int( float( numEquatorSteps ) * polarIdx );
+        int numPolarOffset = numEquatorSteps * polarIdx;
+        if (includePoles)
+            numPolarOffset = (numEquatorSteps+2) * polarIdx;
 
         // Calculate the final image index for lookup 
         // of the texture coords.

+ 11 - 10
Templates/BaseGame/game/core/rendering/shaders/imposter.hlsl

@@ -82,24 +82,22 @@ void imposter_v(
 
     // First check to see if we need to render the top billboard.   
     int index;
-    /*
-    if ( includePoles && ( lookPitch < polarAngle || lookPitch > sPi - polarAngle ) )
+    if ( includePoles && ( lookPitch < polarHalfStep || lookPitch > (M_PI_F - polarHalfStep) ) )
     {
-      index = numEquatorSteps * 3; 
+      index = numEquatorSteps * numPolarSteps; 
 
       // When we render the top/bottom billboard we always use
       // a fixed vector that matches the rotation of the object.
       rightVec = float3( 1, 0, 0 ) * sCornerRight[corner];
-      upVec = float3( 0, 1, 0 ) * sCornerUp[corner];
+      upVec = float3( 0, -1, 0 ) * sCornerUp[corner];
 
-      if ( lookPitch > sPi - polarAngle )
+      if ( lookPitch < polarHalfStep )
       {
          upVec = -upVec;
          index++;
       }
     }
     else
-    */
     {
         // Calculate the rotation around the z axis then add the
         // equator half step.  This gets the images to switch a
@@ -116,19 +114,22 @@ void imposter_v(
         // Normalize the result to 0 to 2PI.
         if ( rotZ < 0 )
             rotZ += M_2PI_F;
-        if ( rotZ > M_2PI_F )
+        else if ( rotZ > M_2PI_F )
             rotZ -= M_2PI_F;
+            
         if ( rotY < 0 )
             rotY += M_2PI_F;
-        if ( rotY > M_PI_F ) // Not M_2PI_F?
+        else if ( rotY > M_2PI_F )
             rotY -= M_2PI_F;
 
-        float polarIdx = round( abs( rotY ) / polarStepSize );
+        int polarIdx = max(min(round( rotY / polarStepSize ), numPolarSteps-2),0);
 
         // Get the index to the start of the right polar
         // images for this viewing angle.
         int numPolarOffset = numEquatorSteps * polarIdx;
-
+        if (includePoles)
+            numPolarOffset = (numEquatorSteps+2) * polarIdx;
+            
         // Calculate the final image index for lookup 
         // of the texture coords.
         index = ( rotZ / equatorStepSize ) + numPolarOffset;

+ 2 - 2
Templates/BaseGame/game/tools/VPathEditor/GUI/VPathEditor.gui

@@ -71,7 +71,7 @@ new VPathEditor(EVPathEditor) {
       minSize = "50 50";
       closeCommand = "EditorGui.setEditor( WorldEditorInspectorPlugin );";
       EdgeSnap = "1";
-      text = "::  Verve Path Editor";
+      text = ":: Verve Path Editor";
       
       new GuiContainer(){
          profile = GuiDefaultProfile;
@@ -218,7 +218,7 @@ new VPathEditor(EVPathEditor) {
       minSize = "50 50";
       closeCommand = "EditorGui.setEditor( WorldEditorPlugin );";
       EdgeSnap = "1";
-      text = "::  Verve Path - Properties";
+      text = ":: Verve Path - Properties";
 
       new GuiContainer(){ //Node Properties
          isContainer = "1";

+ 3 - 2
Templates/BaseGame/game/tools/VPathEditor/Scripts/GuiScript.tscript

@@ -31,8 +31,9 @@ function EVPathEditor::maxSize(%this, %window)
       
       %fixedWindow = VPathEditorTreeWindow;
       %fluidWindow = VPathEditorOptionsWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 1 - 85
Templates/BaseGame/game/tools/assetBrowser/guis/assetBrowser.gui

@@ -138,7 +138,7 @@ $guiContent = new GuiControl(AssetBrowser) {
       };
    };
    new GuiWindowCtrl(AssetBrowserWindow) {
-      text = "::  Asset Browser";
+      text = ":: Asset Browser";
       resizeWidth = "0";
       resizeHeight = "1";
       canMove = "1";
@@ -1180,90 +1180,6 @@ $guiContent = new GuiControl(AssetBrowser) {
          canSave = "1";
          canSaveDynamicFields = "0";
       };
-      new GuiButtonCtrl(assetBrowser_Tab1) {
-         text = "Tab1 Text 1";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "5 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
-      new GuiButtonCtrl(assetBrowser_Tab2) {
-         text = "Tab1 Text 2";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "105 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
-      new GuiButtonCtrl(assetBrowser_Tab3) {
-         text = "Tab1 Text 3";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "205 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
-      new GuiButtonCtrl(assetBrowser_Tab4) {
-         text = "Tab1 Text 4";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "305 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
       new GuiBitmapButtonCtrl(AssetBrowserWindow_UnDockBtn) {
          canSaveDynamicFields = "0";
          internalName = "";

+ 6 - 40
Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript

@@ -92,42 +92,6 @@ function AssetBrowser::onDialogPop(%this)
 function AssetBrowser::onDialogPush(%this)
 {
    $AssetBrowser::Open = true;
-   
-   // Add a tab to the windowed console
-   if($WindowConsole::Open)
-   {
-      %text = "Console Log";
-      %command = "windowConsoleControl.putToFront();";
-      
-      AssetBrowserWindow.text = ""; 
-      windowConsoleControl.text = ""; 
-      
-      AssetBrowser.setTab(assetBrowser_Tab1, "Asset Browser", "");
-      assetBrowser_Tab1.setHidden(false);
-      assetBrowser_Tab1.setActive(false);
-      
-      if(assetBrowser_Tab2.text $= %text || assetBrowser_Tab3.text $= %text || assetBrowser_Tab4.text $= %text)
-      {
-         // we have a tab, don't do anything
-      }
-      else if(assetBrowser_Tab2.hidden == true)
-      {
-         AssetBrowser.setTab(assetBrowser_Tab2, %text, %command);
-      }
-      else if(assetBrowser_Tab3.hidden == true)
-      {
-         AssetBrowser.setTab(assetBrowser_Tab3, %text, %command);
-      }
-      else if(assetBrowser_Tab4.hidden == true)
-      {
-         AssetBrowser.setTab(assetBrowser_Tab4, %text, %command);
-      }
-      else
-      {
-         warn("Ran out of tabs for AssetBrowserWindow - windowConsoleDlg::showWindow()");
-      }
-   }
-   
    EditorGui.updateSideBar();
 }
 
@@ -699,7 +663,9 @@ function AssetBrowser::doRefresh(%this)
 
 function AssetBrowser::populatePreviewImages(%this)
 {
-   echo("AssetBrowser::populatePreviewImages() - Previews to generate: " @ AssetPreviewArray.count());
+   if (AssetPreviewArray.count()>0)
+      echo("AssetBrowser::populatePreviewImages() - Previews to generate: " @ AssetPreviewArray.count());
+      
    for(%i=0; %i < AssetPreviewArray.count(); %i++)
    {
       %previewButton = AssetPreviewArray.getKey(%i);
@@ -1526,7 +1492,8 @@ function AssetBrowser::rebuildAssetArray(%this)
    if(!%this.previewArrayDirty)
    {
       %this.previewArrayDirty = true;
-      %this.schedule(16, "doRebuildAssetArray");
+      cancel(%this.pendingRebuild);
+      %this.pendingRebuild = %this.schedule(16, "doRebuildAssetArray");
    }
 }
 
@@ -2899,6 +2866,5 @@ function AssetBrowserWindow::onResize(%this, %posX, %posY, %width, %height)
         AssetBrowser-->assetList.fillRowFirst = true;
     else
         AssetBrowser-->assetList.fillRowFirst = false;
-        
-    AssetBrowser.doRebuildAssetArray();
+    AssetBrowser.rebuildAssetArray();
 }

+ 1 - 1
Templates/BaseGame/game/tools/convexEditor/convexEditorGui.gui

@@ -70,7 +70,7 @@ $guiContent = new GuiConvexEditorCtrl(ConvexEditorGui) {
       minSize = "50 50";
       closeCommand = "EditorGui.setEditor( WorldEditorInspectorPlugin );";
       EdgeSnap = "1";
-      text = "::  Convex Shape Editor";
+      text = ":: Convex Shape Editor";
       
       new GuiContainer(){
          profile = "ToolsGuiDefaultProfile";

+ 14 - 3
Templates/BaseGame/game/tools/convexEditor/convexEditorGui.tscript

@@ -59,6 +59,11 @@ function ConvexEditorGui::onWake( %this )
       %this.resizing = false;
       %this.releaseSidePanel();
    }
+   
+   EWorldEditor.UseGridSnap = EditorSettings.value("WorldEditor/Tools/UseGridSnap");
+   CESnapOptions-->objectGridSnapBtn.setStateOn( EWorldEditor.UseGridSnap );
+   %this.setGridSnap( EWorldEditor.UseGridSnap );
+   EWorldEditor.setGridSnap( EWorldEditor.UseGridSnap );
 }
 
 function ConvexEditorGui::onSleep( %this )
@@ -212,9 +217,14 @@ function ConvexEditorMaterialResetBtn::onClick(%this)
 
 function ConvexEditorGui::toggleGridSnap(%this)
 {
-	%this.toggleGridSnapping();
+    EWorldEditor.UseGridSnap = !EWorldEditor.UseGridSnap;
+    EditorSettings.setValue("WorldEditor/Tools/UseGridSnap", EWorldEditor.UseGridSnap );
+    CESnapOptions-->objectGridSnapBtn.setStateOn( EWorldEditor.UseGridSnap );
+    %this.setGridSnap( EWorldEditor.UseGridSnap );
+    EWorldEditor.setGridSnap( EWorldEditor.UseGridSnap );
 }
 
+
 function ConvexEditorGridSnapSizeFld::onReturn(%this)
 {
    ConvexEditorGui.setGridSnapSize(%this.getText());
@@ -276,8 +286,9 @@ function ConvexEditorGui::maxSize(%this, %window)
       %this.resizing = false;
       
       %fluidWindow = ConvexEditorOptionsWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
 
       %position = Canvas.extent.x - %fluidWindow.extent.x SPC %top;
       %extent = %window.extent.x SPC Canvas.extent.y - %bottom;

+ 1 - 1
Templates/BaseGame/game/tools/convexEditor/convexEditorSidebarGui.gui

@@ -5,7 +5,7 @@ $guiContnt = new GuiControl(ConvexEditorOptions)
    extent = "800 600";
    
    new GuiWindowCollapseCtrl(ConvexEditorOptionsWindow) {
-      text = "::  Sketch Tool - Properties";
+      text = ":: Sketch Tool - Properties";
       resizeWidth = "1";
       resizeHeight = "1";
       canMove = "1";

+ 1 - 1
Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui

@@ -110,7 +110,7 @@ $guiContent = new GuiControl(convexEditorToolbar, EditorGuiGroup) {
       MinExtent = "1 1";
       bitmapAsset = "ToolsModule:separator_h_image";
    };
-   new GuiContainer() {
+   new GuiContainer(CESnapOptions) {
       canSaveDynamicFields = "0";
       Enabled = "1";
       isContainer = "1";

+ 4 - 0
Templates/BaseGame/game/tools/convexEditor/main.tscript

@@ -130,6 +130,10 @@ function ConvexEditorPlugin::onActivated( %this )
          ConvexEditorScaleModeBtn.performClick();
    }
 
+   EWorldEditor.UseGridSnap = EditorSettings.value("WorldEditor/Tools/UseGridSnap");
+   CESnapOptions-->objectGridSnapBtn.setStateOn( EWorldEditor.UseGridSnap );
+   %this.setGridSnap( EWorldEditor.UseGridSnap );
+   
    Parent::onActivated( %this );
 }
 

+ 1 - 1
Templates/BaseGame/game/tools/datablockEditor/DatablockEditorInspectorWindow.ed.gui

@@ -23,7 +23,7 @@ $guiContent = new GuiControl() {
       minSize = "50 50";
       closeCommand = "DatablockEditorInspectorWindow.setVisible(false);";
       EdgeSnap = "1";
-      text = "::  Datablock Editor - Data";
+      text = ":: Datablock Editor - Data";
       Margin = "8 8 8 8";
       Padding = "0 0 0 0";
       AnchorTop = "1";

+ 1 - 1
Templates/BaseGame/game/tools/datablockEditor/DatablockEditorTreeWindow.ed.gui

@@ -23,7 +23,7 @@ $guiContent = new GuiControl(DatablockEditorGui) {
       minSize = "50 50";
       closeCommand = "DatablockInspectorTreeWindow.setVisible(false);";
       EdgeSnap = "1";
-      text = "::  Datablock Editor - Library";
+      text = ":: Datablock Editor - Library";
       Margin = "8 8 8 8";
       Padding = "0 0 0 0";
       AnchorTop = "1";

+ 3 - 2
Templates/BaseGame/game/tools/datablockEditor/datablockEditor.tscript

@@ -824,8 +824,9 @@ function DatablockEditorGui::maxSize(%this, %window)
       
       %fixedWindow = DatablockEditorTreeWindow;
       %fluidWindow = DatablockEditorInspectorWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 2 - 2
Templates/BaseGame/game/tools/decalEditor/decalEditorGui.gui

@@ -69,7 +69,7 @@ $guiContent = new GuiDecalEditorCtrl(DecalEditorGui) {
       minSize = "50 50";
       closeCommand = "EditorGui.setEditor( WorldEditorInspectorPlugin );";
       EdgeSnap = "1";
-      text = "::  Decal Editor";
+      text = ":: Decal Editor";
          
       new GuiTabBookCtrl(DecalEditorTabBook) {
          canSaveDynamicFields = "0";
@@ -517,7 +517,7 @@ $guiContent = new GuiDecalEditorCtrl(DecalEditorGui) {
       minSize = "152 235";
       closeCommand = "EPainter.parentGroup.setVisible(false);";
       EdgeSnap = "1";
-      text = "::  Decal Properties";
+      text = ":: Decal Properties";
       
       new GuiScrollCtrl(DecalEditorTemplateProperties){
          canSaveDynamicFields = "0";

+ 5 - 4
Templates/BaseGame/game/tools/decalEditor/decalEditorGui.tscript

@@ -54,8 +54,9 @@ function DecalEditorGui::maxSize(%this, %window)
       
       %fixedWindow = DecalEditorWindow;
       %fluidWindow = DecalPreviewWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------
@@ -486,7 +487,7 @@ function DecalEditorTabBook::onTabSelected( %this, %text, %idx )
 {
    if( %idx == 0)
    {
-      DecalPreviewWindow.text = "::  Decal Editor - Template Properties";
+      DecalPreviewWindow.text = ":: Decal Editor - Template Properties";
       DecalEditorLibraryProperties.setVisible(true);
       DecalEditorTemplateProperties.setVisible(false);
       RetargetDecalButton.setVisible( true );
@@ -496,7 +497,7 @@ function DecalEditorTabBook::onTabSelected( %this, %text, %idx )
    }
    else
    {
-      DecalPreviewWindow.text = "::  Decal Editor - Instance Properties";
+      DecalPreviewWindow.text = ":: Decal Editor - Instance Properties";
       RetargetDecalButton.setVisible( false );
       NewDecalButton.setVisible( false );
       SaveDecalsButton.setVisible( false );

+ 2 - 2
Templates/BaseGame/game/tools/forestEditor/forestEditorGui.gui

@@ -46,7 +46,7 @@ $guiContent = new ForestEditorCtrl(ForestEditorGui,EditorGuiGroup) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Forest Editor - Pallete";
+      text = ":: Forest Editor - Pallete";
       Margin = "0 0 0 0";
       Padding = "0 0 0 0";
       AnchorTop = "1";
@@ -525,7 +525,7 @@ $guiContent = new ForestEditorCtrl(ForestEditorGui,EditorGuiGroup) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Forest Editor - Properties";
+      text = ":: Forest Editor - Properties";
       Margin = "0 0 0 0";
       Padding = "0 0 0 0";
       AnchorTop = "1";

+ 3 - 2
Templates/BaseGame/game/tools/forestEditor/forestEditorGui.tscript

@@ -56,8 +56,9 @@ function ForestEditorGui::maxSize(%this, %window)
       
       %fixedWindow = ForestEditorPalleteWindow;
       %fluidWindow = ForestEditorPropertiesWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 1 - 1
Templates/BaseGame/game/tools/gui/EditorSettingsWindow.ed.gui

@@ -15,7 +15,7 @@ $guiContent = new GuiControl(EditorSettingsWindow,EditorGuiGroup) {
    canSaveDynamicFields = "1";
 
    new GuiWindowCollapseCtrl(ESettingsWindow) {
-      text = "::  Editor Settings";
+      text = ":: Editor Settings";
       resizeWidth = "0";
       resizeHeight = "0";
       canMove = "1";

+ 33 - 33
Templates/BaseGame/game/tools/gui/colorPicker.ed.gui

@@ -19,7 +19,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
    canSaveDynamicFields = "0";
 
    new GuiWindowCtrl(GuiPickerDlg) {
-      text = "Color Picker";
+      text = ":: Color Picker";
       resizeWidth = "0";
       resizeHeight = "0";
       canMove = "1";
@@ -45,8 +45,8 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
       canSaveDynamicFields = "0";
 
       new GuiBitmapBorderCtrl(){ // color blend
-         position = "3 24";
-         extent = "255 258";
+         position = "3 25";
+         extent = "260 260";
          minExtent = "8 2";
          horizSizing = "right";
          vertSizing = "bottom";
@@ -67,8 +67,8 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
             selectorGap = "1";
             displayMode = "BlendColor";
             actionOnMove = "1";
-            position = "1 0";
-            extent = "255 258";
+            position = "1 1";
+            extent = "255 255";
             minExtent = "8 2";
             horizSizing = "right";
             vertSizing = "bottom";
@@ -86,8 +86,8 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
          };
       };
       new GuiBitmapBorderCtrl(){ // Hue
-         position = "263 23";
-         extent = "25 261";
+         position = "265 25";
+         extent = "25 260";
          minExtent = "8 2";
          horizSizing = "right";
          vertSizing = "bottom";
@@ -109,7 +109,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
             displayMode = "VertColor";
             actionOnMove = "1";
             position = "1 1";
-            extent = "21 257";
+            extent = "20 255";
             minExtent = "8 2";
             horizSizing = "right";
             vertSizing = "bottom";
@@ -128,9 +128,9 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
       };
       new GuiTextCtrl() {
          text = "New";
-         position = "306 22";
+         position = "305 22";
          extent = "26 14";
-         profile = "GuiDefaultProfile";
+         profile = "ToolsGuiTextProfile";
       };
       new GuiBitmapBorderCtrl(){ // new old color
          position = "292 37";
@@ -162,9 +162,9 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
       };
       new GuiTextCtrl() {
          text = "Old";
-         position = "310 138";
+         position = "307 137";
          extent = "26 14";
-         profile = "GuiDefaultProfile";
+         profile = "ToolsGuiTextProfile";
       };
       new GuiBitmapBorderCtrl(){ // Color Text Fields
          position = "291 165";
@@ -185,7 +185,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
 
          new GuiControl() { // rgb
             position = "4 0";
-            extent = "52 75";
+            extent = "52 80";
             minExtent = "8 2";
             horizSizing = "right";
             vertSizing = "bottom";
@@ -209,7 +209,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                anchorBottom = "0";
                anchorLeft = "1";
                anchorRight = "0";
-               position = "5 6";
+               position = "1 6";
                extent = "8 18";
                minExtent = "8 2";
                horizSizing = "right";
@@ -228,12 +228,12 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
             };
             new GuiTextEditCtrl(Channel_R_Val) { // Red Channal
                text = "0";
-               maxLength = "4";
+               maxLength = "6";
                position = "14 6";
-               extent = "34 18";
+               extent = "34 28";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "GuiTextEditProfileNumbersOnly";
+               profile = "ToolsGuiTextEditProfile";
                class = "ColorPickerRGBClass";
                tooltipProfile = "GuiToolTipProfile";
                tooltip = "Red Channel color value.";
@@ -247,7 +247,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                anchorBottom = "0";
                anchorLeft = "1";
                anchorRight = "0";
-               position = "4 29";
+               position = "0 29";
                extent = "8 18";
                minExtent = "8 2";
                horizSizing = "right";
@@ -266,12 +266,12 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
             };
             new GuiTextEditCtrl(Channel_G_Val) { // Green Channal
                text = "0";
-               maxLength = "4";
+               maxLength = "6";
                position = "14 29";
-               extent = "34 18";
+               extent = "34 28";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "GuiTextEditProfileNumbersOnly";
+               profile = "ToolsGuiTextEditProfile";
                class = "ColorPickerRGBClass";
                tooltipProfile = "GuiToolTipProfile";
                tooltip = "Green Channel color value.";
@@ -285,7 +285,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                anchorBottom = "0";
                anchorLeft = "1";
                anchorRight = "0";
-               position = "5 52";
+               position = "1 52";
                extent = "8 18";
                minExtent = "8 2";
                horizSizing = "right";
@@ -304,12 +304,12 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
             };
             new GuiTextEditCtrl(Channel_B_Val) { // Blue Channal
                text = "0";
-               maxLength = "4";
+               maxLength = "6";
                position = "14 52";
-               extent = "34 18";
+               extent = "34 28";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "GuiTextEditProfileNumbersOnly";
+               profile = "ToolsGuiTextEditProfile";
                class = "ColorPickerRGBClass";
                tooltipProfile = "GuiToolTipProfile";
                tooltip = "Blue Channel color value.";
@@ -341,7 +341,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                anchorBottom = "0";
                anchorLeft = "1";
                anchorRight = "0";
-               position = "5 6";
+               position = "1 6";
                extent = "8 18";
                minExtent = "8 2";
                horizSizing = "right";
@@ -365,7 +365,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                extent = "34 18";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "GuiTextEditProfileNumbersOnly";
+               profile = "ToolsGuiTextEditProfile";
                class = "ColorPickerHSBClass";
                tooltipProfile = "GuiToolTipProfile";
                tooltip = "Hue Channel color value.";
@@ -404,7 +404,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                anchorBottom = "0";
                anchorLeft = "1";
                anchorRight = "0";
-               position = "4 29";
+               position = "0 29";
                extent = "8 18";
                minExtent = "8 2";
                horizSizing = "right";
@@ -428,7 +428,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                extent = "34 18";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "GuiTextEditProfileNumbersOnly";
+               profile = "ToolsGuiTextEditProfile";
                class = "ColorPickerHSBClass";
                tooltipProfile = "GuiToolTipProfile";
                tooltip = "Saturation Channel color value.";
@@ -467,12 +467,12 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                anchorBottom = "0";
                anchorLeft = "1";
                anchorRight = "0";
-               position = "5 52";
+               position = "1 52";
                extent = "8 18";
                minExtent = "8 2";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "ToolsGuiTextProfile";
+               profile = "ToolsGuiTextProfile"; 
                visible = "1";
                active = "1";
                Clickable = "1";
@@ -491,7 +491,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                extent = "34 18";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "GuiTextEditProfileNumbersOnly";
+               profile = "ToolsGuiTextEditProfile";
                class = "ColorPickerHSBClass";
                tooltipProfile = "GuiToolTipProfile";
                tooltip = "Brightness Channel color value. Aka value or lightness.";
@@ -668,7 +668,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
                extent = "34 18";
                horizSizing = "right";
                vertSizing = "bottom";
-               profile = "GuiTextEditProfileNumbersOnly";
+               profile = "ToolsGuiTextEditProfile";
                altCommand = "$ThisControl.getParent().updateFromChild($ThisControl); updateColorPickerAlpha( $ThisControl.getValue() );";
                internalName = "TextEdit";
             };

+ 1 - 1
Templates/BaseGame/game/tools/gui/editorSettingsWindow.ed.tscript

@@ -108,7 +108,7 @@ function ESettingsWindow::toggleEditorSettings(%this)
    ESettingsWindowList.sort(0);
    
    %this.mode = "Editor";
-   ESettingsWindow.text = "::  Editor Settings";
+   ESettingsWindow.text = ":: Editor Settings";
    
    ESettingsWindowList.setSelectedById( 1 );
 }

+ 1 - 1
Templates/BaseGame/game/tools/gui/guiObjectInspector.ed.gui

@@ -11,7 +11,7 @@ $guiContent = new GuiWindowCollapseCtrl() {
    minSize = "50 50";
    closeCommand = "$ThisControl.onClose();";
    edgeSnap = "1";
-   text = "::  Object Inspector";
+   text = ":: Object Inspector";
    margin = "0 0 0 0";
    padding = "0 0 0 0";
    anchorTop = "1";

+ 1 - 1
Templates/BaseGame/game/tools/gui/postFxEditor.gui

@@ -15,7 +15,7 @@ $guiContent = new GuiControl(postFXEditor) {
    canSaveDynamicFields = "1";
 
    new GuiWindowCtrl(PostFXEditorWindow) {
-      text = "::  PostFX Editor - EditorTemplateLevel";
+      text = ":: PostFX Editor - EditorTemplateLevel";
       resizeWidth = "1";
       resizeHeight = "1";
       canMove = "1";

+ 17 - 4
Templates/BaseGame/game/tools/gui/profiles.ed.tscript

@@ -37,7 +37,7 @@ $Gui::fontTypeMono = "Arial";
 $GUI::fontSize[12] = 12;
 $GUI::fontSize[14] = 14;
 $GUI::fontSize[16] = 16;
-$GUI::fontSize[18] = 18;
+$GUI::fontSize[18] = 17;
 $GUI::fontSize[24] = 24;
 $GUI::fontSize[36] = 36;
 
@@ -195,8 +195,8 @@ new GuiControlProfile (ToolsGuiWindowProfile)
    hasBitmapArray = true;
    justify = "left";
    category = "Tools";
-   fontType = $Gui::fontTypeMedium;
-   fontSize = $GUI::fontSize[18];
+   fontType = $Gui::fontTypeBold;
+   fontSize = $GUI::fontSize[16];
 };
 
 if( !isObject( ToolsGuiPaneProfile ) )
@@ -211,7 +211,7 @@ new GuiControlProfile (ToolsGuiPaneProfile)
    borderColor = EditorSettings.value("Theme/windowBackgroundColor");
    category = "Tools";
    fontType = $Gui::fontTypeMedium;
-   fontSize = $GUI::fontSize[18];
+   fontSize = $GUI::fontSize[16];
 };
 
 if( !isObject( ToolsGuiToolbarWindowProfile ) )
@@ -943,6 +943,14 @@ singleton GuiControlProfile( GuiBackFillProfile )
    category = "Editor";
 };
 
+singleton GuiControlProfile( GuiDarkFillProfile )
+{
+   opaque = true;
+   fillColor = "25 25 25";
+   border = false;
+   category = "Editor";
+};
+
 singleton GuiControlProfile(GuiShaderEditorProfile : ToolsGuiDefaultProfile)
 {
    opaque = true;
@@ -1561,6 +1569,11 @@ new GuiControlProfile(ToolsGuiConsoleLargeProfile : ToolsGuiConsoleProfile)
 {
    fontSize = $GUI::fontSize[16];
 };
+if(!isObject(ToolsGuiConsoleXLProfile))
+new GuiControlProfile(ToolsGuiConsoleXLProfile : ToolsGuiConsoleProfile)
+{
+   fontSize = $GUI::fontSize[18];
+};
 if(!isObject(ToolsGuiConsoleTextProfile))
 new GuiControlProfile(ToolsGuiConsoleTextProfile)
 {   

+ 31 - 2
Templates/BaseGame/game/tools/guiEditor/gui/guiEditor.ed.gui

@@ -233,8 +233,37 @@ $guiContent = new GuiControl(GuiEditorGui, EditorGuiGroup) {
                internalName = "AssetBrowserBtn";
                canSave = "1";
                canSaveDynamicFields = "0";
-            };            
-            
+            };        
+            new GuiIconButtonCtrl() {
+               buttonMargin = "0 0";
+               bitmapAsset = "ToolsModule:console_n_image";
+               iconLocation = "Left";
+               sizeIconToButton = "0";
+               makeIconSquare = "0";
+               textLocation = "Center";
+               textMargin = "0";
+               autoSize = "0";
+               groupNum = "-1";
+               buttonType = "PushButton";
+               useMouseEvents = "0";
+               position = "132 0";
+               extent = "32 32";
+               minExtent = "8 2";
+               horizSizing = "right";
+               vertSizing = "bottom";
+               profile = "ToolsGuiDefaultProfile";
+               visible = "1";
+               active = "1";
+               command = "windowConsoleDlg.showWindow();";
+               tooltipProfile = "GuiToolTipProfile";
+               tooltip = "Open the console log in a window.";
+               hovertime = "1000";
+               isContainer = "0";
+               internalName = "ABwindowConsoleButton";
+               canSave = "1";
+               canSaveDynamicFields = "0";
+               buttonMargin = "-2 0";
+            };
             new GuiBitmapCtrl() {
                Enabled = "1";
                Profile = "ToolsGuiDefaultProfile";

+ 1 - 1
Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPreviewWindow.ed.gui

@@ -44,7 +44,7 @@ $guiContent = new GuiControl() {
       closeCommand = "MaterialEditorPreviewWindow.setVisible(false);";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Material Editor - Preview";
+      text = ":: Material Editor - Preview";
       
       /*new GuiContainer(MaterialEditorPreviewPane) {
          canSaveDynamicFields = "0";

+ 1 - 1
Templates/BaseGame/game/tools/materialEditor/gui/guiMaterialPropertiesWindow.ed.gui

@@ -44,7 +44,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
       closeCommand = "MaterialEditorPropertiesWindow.setVisible(false);";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Material Editor - Properties";
+      text = ":: Material Editor - Properties";
       
       new GuiContainer(MaterialEditorGuiContent){ // Client group
          isContainer = "1";

+ 7 - 6
Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript

@@ -284,8 +284,9 @@ function MaterialEditorGui::maxSize(%this, %window)
       
       %fixedWindow = MaterialEditorPreviewWindow;
       %fluidWindow = MaterialEditorPropertiesWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------
@@ -784,8 +785,8 @@ function MaterialEditorGui::isMatEditorMaterial(%this, %material)
 
 function MaterialEditorGui::setMaterialNotDirty(%this)
 {
-   %propertyText = "::  Material Editor - Properties";
-   %previewText = "::  Material Editor - Preview";
+   %propertyText = ":: Material Editor - Properties";
+   %previewText = ":: Material Editor - Preview";
    MaterialEditorPropertiesWindow.text = %propertyText;
    MaterialEditorPreviewWindow.text = %previewText;
    
@@ -795,8 +796,8 @@ function MaterialEditorGui::setMaterialNotDirty(%this)
 
 function MaterialEditorGui::setMaterialDirty(%this)
 { 
-   %propertyText = "::  Material Editor - Properties *";
-   %previewText = "::  Material Editor - Preview *";
+   %propertyText = ":: Material Editor - Properties *";
+   %previewText = ":: Material Editor - Preview *";
    MaterialEditorPropertiesWindow.text = %propertyText;
    MaterialEditorPreviewWindow.text = %previewText;
    

+ 2 - 2
Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorGui.gui

@@ -71,7 +71,7 @@ $guiContent = new GuiMeshRoadEditorCtrl(MeshRoadEditorGui,EditorGuiGroup) {
       minSize = "50 50";
       closeCommand = "EditorGui.setEditor( WorldEditorInspectorPlugin );";
       EdgeSnap = "1";
-      text = "::  Mesh Road Editor - Roads";
+      text = ":: Mesh Road Editor - Roads";
       
       new GuiContainer(MeshRoadEditorRoadsPanel){
          profile = "ToolsGuiDefaultProfile";
@@ -267,7 +267,7 @@ $guiContent = new GuiMeshRoadEditorCtrl(MeshRoadEditorGui,EditorGuiGroup) {
       minSize = "50 50";
       closeCommand = "EditorGui.setEditor( WorldEditorPlugin );";
       EdgeSnap = "1";
-      text = "::  Mesh Road Editor - Properties";
+      text = ":: Mesh Road Editor - Properties";
 
       new GuiContainer(MeshRoadNodesPanel){ //Node Properties
          isContainer = "1";

+ 3 - 2
Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorGui.tscript

@@ -43,8 +43,9 @@ function MeshRoadEditorGui::maxSize(%this, %window)
       
       %fixedWindow = MeshRoadEditorTreeWindow;
       %fluidWindow = MeshRoadEditorOptionsWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 2 - 2
Templates/BaseGame/game/tools/missionAreaEditor/missionAreaEditorGui.ed.gui

@@ -67,7 +67,7 @@ $guiContent = new GuiMissionAreaEditorCtrl(MissionAreaEditorGui, EditorGuiGroup)
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Mission Area";
+      text = ":: Mission Area";
       
       new GuiContainer(MissionAreaEditorTerrainPanel){
          profile = "ToolsGuiDefaultProfile";
@@ -234,7 +234,7 @@ $guiContent = new GuiMissionAreaEditorCtrl(MissionAreaEditorGui, EditorGuiGroup)
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Mission Area Editor - Properties";
+      text = ":: Mission Area Editor - Properties";
       
       new GuiContainer(MissionAreaEditorPropertiesPanel){ //Mission Area Properties
          isContainer = "1";

+ 3 - 2
Templates/BaseGame/game/tools/missionAreaEditor/missionAreaEditorGui.ed.tscript

@@ -54,8 +54,9 @@ function MissionAreaEditorGui::maxSize(%this, %window)
       
       %fixedWindow = MissionAreaEditorTerrainWindow;
       %fluidWindow = MissionAreaEditorPropertiesWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 2 - 2
Templates/BaseGame/game/tools/navEditor/NavEditorGui.gui

@@ -66,7 +66,7 @@ $guiContent = new GuiNavEditorCtrl(NavEditorGui, EditorGuiGroup) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Navigation Editor";
+      text = ":: Navigation Editor";
 
       new GuiButtonCtrl() {
          Profile = "ToolsGuiButtonProfile";
@@ -271,7 +271,7 @@ $guiContent = new GuiNavEditorCtrl(NavEditorGui, EditorGuiGroup) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Navigation Editor - Properties";
+      text = ":: Navigation Editor - Properties";
       
       new GuiContainer(NavEditorOptionsPanel){ //Actions
          isContainer = "1";

+ 3 - 2
Templates/BaseGame/game/tools/navEditor/navEditor.tscript

@@ -69,8 +69,9 @@ function NavEditorGui::maxSize(%this, %window)
       
       %fixedWindow = NavEditorTreeWindow;
       %fluidWindow = NavEditorOptionsWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 1 - 1
Templates/BaseGame/game/tools/particleEditor/ParticleEditor.ed.gui

@@ -50,7 +50,7 @@ $guiContent = new GuiWindowCollapseCtrl(PE_Window) {
    minSize = "50 50";
    closeCommand = "";
    EdgeSnap = "0";
-   text = "::  Particle Editor";
+   text = ":: Particle Editor";
       
    new GuiTabBookCtrl(PE_TabBook) {
       canSaveDynamicFields = "0";

+ 5 - 4
Templates/BaseGame/game/tools/particleEditor/particleEditor.ed.tscript

@@ -160,7 +160,7 @@ function ParticleEditor::createParticleList( %this )
 
 function ParticleEditor::openEmitterPane( %this )
 {
-   PE_Window.text = "::  Particle Editor - Emitters";
+   PE_Window.text = ":: Particle Editor - Emitters";
    PE_EmitterEditor.guiSync();
    ParticleEditor.activeEditor = PE_EmitterEditor;
    
@@ -172,7 +172,7 @@ function ParticleEditor::openEmitterPane( %this )
 
 function ParticleEditor::openParticlePane( %this )
 {
-   PE_Window.text = "::  Particle Editor - Particles";
+   PE_Window.text = ":: Particle Editor - Particles";
    
    PE_ParticleEditor.guiSync();
    ParticleEditor.activeEditor = PE_ParticleEditor;
@@ -276,8 +276,9 @@ function ParticleEditor::maxSize(%this, %window)
       // prevent onResize after a resize
       %this.resizing = false;
       
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 2 - 2
Templates/BaseGame/game/tools/riverEditor/RiverEditorGui.gui

@@ -71,7 +71,7 @@ $guiContent = new GuiRiverEditorCtrl(RiverEditorGui, EditorGuiGroup) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  River Editor - Rivers";
+      text = ":: River Editor - Rivers";
       
       /*
       new GuiBitmapButtonCtrl() {
@@ -316,7 +316,7 @@ $guiContent = new GuiRiverEditorCtrl(RiverEditorGui, EditorGuiGroup) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  River Editor - Properties";
+      text = ":: River Editor - Properties";
       
       new GuiContainer(RiverEditorOptionsPanel){ //Node Properties
          isContainer = "1";

+ 3 - 2
Templates/BaseGame/game/tools/riverEditor/riverEditorGui.tscript

@@ -60,8 +60,9 @@ function RiverEditorGui::maxSize(%this, %window)
       
       %fixedWindow = RiverEditorTreeWindow;
       %fluidWindow = RiverEditorOptionsWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 2 - 2
Templates/BaseGame/game/tools/roadEditor/RoadEditorGui.gui

@@ -73,7 +73,7 @@ $guiContent = new GuiRoadEditorCtrl(RoadEditorGui) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Decal Road Editor - Roads & Paths";
+      text = ":: Decal Road Editor - Roads & Paths";
       
       /*
       new GuiBitmapButtonCtrl() {
@@ -317,7 +317,7 @@ $guiContent = new GuiRoadEditorCtrl(RoadEditorGui) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Decal Road Editor - Properties";
+      text = ":: Decal Road Editor - Properties";
       
       new GuiContainer(RoadEditorProperties){ //Node Properties
          isContainer = "1";

+ 3 - 2
Templates/BaseGame/game/tools/roadEditor/roadEditorGui.tscript

@@ -73,8 +73,9 @@ function RoadEditorGui::maxSize(%this, %window)
       
       %fixedWindow = RoadEditorTreeWindow;
       %fluidWindow = RoadEditorOptionsWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = -1; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------

+ 3 - 3
Templates/BaseGame/game/tools/shapeEditor/gui/shapeEdAdvancedWindow.ed.gui

@@ -1,16 +1,16 @@
 // Let's check if the ShapeEdAdvancedWindow can be stacked in the side panel
 if (getWord($pref::Video::mode, 1) > 899 && isObject(ShapeEdSelectWindow) && isObject(ShapeEdPropWindow))
 { 
-   $ShapeEdAdvancedWindowPos = getWord($pref::Video::mode, 0) - 360 SPC getWord(ShapeEdSelectWindow.extent, 1) + getWord(ShapeEdPropWindow.extent, 1) + getWord(EditorGuiToolbar.extent, 1) + 12;
+   $ShapeEdAdvancedWindowPos = getWord($pref::Video::mode, 0) - 360 SPC getWord(ShapeEdSelectWindow.extent, 1) + getWord(ShapeEdPropWindow.extent, 1) + getWord(EditorGuiToolbar.extent, 1) + 12 - 7;
 }
 else 
 { 
-   $ShapeEdAdvancedWindowPos = getWord($pref::Video::mode, 0) - 720 SPC getWord(EditorGuiToolbar.extent, 1) + 6; 
+   $ShapeEdAdvancedWindowPos = getWord($pref::Video::mode, 0) - 720 SPC getWord(EditorGuiToolbar.extent, 1) + 6 - 7; 
 }
 
 //--- OBJECT WRITE BEGIN ---
 $guiContent = new GuiWindowCollapseCtrl(ShapeEdAdvancedWindow,EditorGuiGroup) {
-   text = "::  Shape Editor - Advanced Properties";
+   text = ":: Shape Editor - Advanced Properties";
    resizeWidth = "0";
    resizeHeight = "0";
    canMove = "1";

+ 1 - 1
Templates/BaseGame/game/tools/shapeEditor/gui/shapeEdPropWindow.ed.gui

@@ -27,7 +27,7 @@ $guiContent = new GuiWindowCollapseCtrl(ShapeEdPropWindow) {
    canMaximize = "0";
    minSize = "50 50";
    EdgeSnap = "1";
-   text = "::  Shape Editor - Properties";
+   text = ":: Shape Editor - Properties";
 
    //---------------------------------------------------------------------
    // Sequence and Node editors

+ 1 - 1
Templates/BaseGame/game/tools/shapeEditor/gui/shapeEdSelectWindow.ed.gui

@@ -43,7 +43,7 @@ $guiContent = new GuiControl() {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Shape Editor - Select";
+      text = ":: Shape Editor - Select";
 
       new GuiTabBookCtrl(ShapeEditorTabbook) {
          internalName = "tabBook";

+ 1 - 85
Templates/BaseGame/game/tools/windowConsole/guis/window_console.gui

@@ -15,7 +15,7 @@ $guiContent = new GuiControl(windowConsoleDlg) {
    canSaveDynamicFields = "0";
 
    new GuiWindowCtrl(windowConsoleControl) {
-      text = "::   Console Log";
+      text = "::  Console Log";
       resizeWidth = "1";
       resizeHeight = "1";
       canMove = "1";
@@ -304,90 +304,6 @@ $guiContent = new GuiControl(windowConsoleDlg) {
          canSave = "0";
          canSaveDynamicFields = "0";
       };
-      new GuiButtonCtrl(windowConsole_Tab1) {
-         text = "Tab1 Text 1";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "5 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
-      new GuiButtonCtrl(windowConsole_Tab2) {
-         text = "Tab1 Text 2";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "105 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
-      new GuiButtonCtrl(windowConsole_Tab3) {
-         text = "Tab Text 3";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "205 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
-      new GuiButtonCtrl(windowConsole_Tab4) {
-         text = "Tab Text 3";
-         buttonType = "PushButton";
-         useMouseEvents = "0";
-         position = "305 1";
-         extent = "95 20";
-         minExtent = "8 2";
-         horizSizing = "right";
-         vertSizing = "bottom";
-         profile = "ToolsGuiEditorTabButton";
-         visible = "1";
-         hidden = "1";
-         active = "1";
-         command = "";
-         tooltipProfile = "ToolsGuiToolTipProfile";
-         ToolTip = "Bring this window to the front";
-         hovertime = "1000";
-         isContainer = "0";
-         canSave = "0";
-         canSaveDynamicFields = "0";
-      };
       new GuiBitmapButtonCtrl(windowConsole_UnDockBtn) {
          canSaveDynamicFields = "0";
          internalName = "";

+ 22 - 36
Templates/BaseGame/game/tools/windowConsole/scripts/window_console.tscript

@@ -102,46 +102,24 @@ function windowConsoleDlg::hideWindow(%this)
 
 function windowConsoleDlg::showWindow(%this)
 {
-   $WindowConsole::Open = true;
-   Canvas.pushDialog(%this);
-   %this-->Scroll.setVisible(true);
-   
-   // Add a tab to the asset browser
-   if($AssetBrowser::Open)
+   if($WindowConsole::Open)
    {
-      %text = "Asset Browser";
-      %command = "AssetBrowser.putToFront();";
-      
-      AssetBrowserWindow.text = ""; 
-      windowConsoleControl.text = ""; 
-      
-      windowConsoleControl.setTab(windowConsole_Tab1, "Console Log", "");
-      windowConsole_Tab1.setHidden(false);
-      windowConsole_Tab1.setActive(false);
-      
-      if(windowConsole_Tab2.text $= %text || windowConsole_Tab3.text $= %text || windowConsole_Tab4.text $= %text)
-      {
-         // we have a tab, don't do anything
-      }
-      else if(windowConsole_Tab2.hidden == true)
-      {
-         windowConsoleControl.setTab(windowConsole_Tab2, %text, %command);
-      }
-      else if(windowConsole_Tab3.hidden == true)
-      {
-         windowConsoleControl.setTab(windowConsole_Tab3, %text, %command);
-      }
-      else if(windowConsole_Tab4.hidden == true)
-      {
-         windowConsoleControl.setTab(windowConsole_Tab4, %text, %command);
-      }
-      else
-      {
-         warn("Ran out of tabs for AssetBrowserWindow - windowConsoleDlg::showWindow()");
-      }
+      // close the window when it's already opened
+      windowConsoleDlg.hideWindow();
+   }
+   else
+   {
+      // open the console window
+      $WindowConsole::Open = true;
+      Canvas.pushDialog(%this);
+      %this-->Scroll.setVisible(true);
+      // update all the windows (position and size)
+      EditorGui.updateSideBar();
    }
 }
 
+
+
 //-----------------------------------------------------------------------------
 
 function windowConsoleControl::setTab(%this, %tab, %text, %command)
@@ -274,6 +252,10 @@ function windowConsoleDlg::incFont()
 {
    switch ($Con::font)
    {
+      case 16:
+         windowConsoleMessageLogView.setProfile(ToolsGuiConsoleXLProfile);
+         $Con::font = 18;
+         windowConsoleMessageLogView.refresh();
       case 14:
          windowConsoleMessageLogView.setProfile(ToolsGuiConsoleLargeProfile);
          $Con::font = 16;
@@ -297,6 +279,10 @@ function windowConsoleDlg::decFont()
          windowConsoleMessageLogView.setProfile(ToolsGuiConsoleMediumProfile);
          $Con::font = 14;
          windowConsoleMessageLogView.refresh();
+      case 18:
+         windowConsoleMessageLogView.setProfile(ToolsGuiConsoleLargeProfile);
+         $Con::font = 16;
+         windowConsoleMessageLogView.refresh();
    }
 }
 

+ 14 - 1
Templates/BaseGame/game/tools/worldEditor/gui/EditorGui.ed.gui

@@ -19,6 +19,19 @@ $guiContent = new GuiContainer(EditorGui,EditorGuiGroup) {
    AnchorLeft = "1";
    AnchorRight = "0";
    
+   new GuiDecoyCtrl(EditorGuiMainTabBookBG) {
+      profile = "GuiDarkFillProfile";
+      horizSizing = "width";
+      vertSizing = "bottom";
+      position = "0 5";
+      extent = "800 24";
+      minExtent = "8 8";
+      visible = "1";
+      helpTag = "0";
+      useMouseEvents = "0";
+      isDecoy = "1";
+   };
+   
    new GuiTabBookCtrl(EditorGuiMainTabBook) {
       tabHeight = "20";
       selectedPage = "0";
@@ -261,7 +274,7 @@ $guiContent = new GuiContainer(EditorGui,EditorGuiGroup) {
             HorizSizing = "width";
             VertSizing = "bottom";
             Position = "0 0";
-            Extent = "800 37";
+            Extent = "800 40";
             MinExtent = "8 8";
             Margin = "0 0 0 0";
             Padding = "0 0 0 0";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/EditorSettingsWindow.ed.gui

@@ -23,7 +23,7 @@ $guiContent = new GuiControl(EditorSettingsWindow,EditorGuiGroup) {
       canMaximize = "0";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  Editor Settings";
+      text = ":: Editor Settings";
       closeCommand = "ESettingsWindow.hideDialog();";
       Margin = "0 0 0 0";
       Padding = "0 0 0 0";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/ManageBookmarksWindow.ed.gui

@@ -29,7 +29,7 @@ $guiContent = new GuiControl(ManageBookmarksContainer, EditorGuiGroup) {
       position = "50 90";
       extent = "180 306";
       MinExtent = "120 130";
-      text = "::  Camera Bookmark Manager";
+      text = ":: Camera Bookmark Manager";
       closeCommand = "EManageBookmarks.hideDialog();";
       EdgeSnap = "0";
       canCollapse = "0";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/ManageSFXParametersWindow.ed.gui

@@ -27,7 +27,7 @@ $guiContent = new GuiControl(ManageSFXParametersContainer,EditorGuiGroup) {
       minSize = "50 50";
       closeCommand = "EManageSFXParameters.setVisible( false );";
       EdgeSnap = "0";
-      text = "::  Audio Parameters";
+      text = ":: Audio Parameters";
       Margin = "5 5 5 5";
       Padding = "5 5 5 5";
       AnchorTop = "1";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/ObjectSnapOptionsWindow.ed.gui

@@ -30,7 +30,7 @@ $guiContent = new GuiControl(ObjectSnapOptionsContainer, EditorGuiGroup) {
       position = "400 31";
       extent =" 175 267";
       MinExtent = "175 130";
-      text = "::  Snap Options";
+      text = ":: Snap Options";
       closeCommand = "ESnapOptions.hideDialog();";
       EdgeSnap = "0";
       canCollapse = "0";

+ 2 - 2
Templates/BaseGame/game/tools/worldEditor/gui/TerrainPainterWindow.ed.gui

@@ -47,7 +47,7 @@ $guiContent = new GuiControl(TerrainPainterContainer,EditorGuiGroup) {
       minSize = "300 160";
       closeCommand = "EPainter.parentGroup.setVisible(false);";
       EdgeSnap = "1";
-      text = "::  Terrain Painter - Preview";
+      text = ":: Terrain Painter - Preview";
       
       new GuiContainer(EPainterPreviewCont){
          Docking = "Client";
@@ -293,7 +293,7 @@ $guiContent = new GuiControl(TerrainPainterContainer,EditorGuiGroup) {
       minSize = "152 300";
       closeCommand = "EPainter.parentGroup.setVisible(false);";
       EdgeSnap = "1";
-      text = "::  Terrain Painter - Selector";
+      text = ":: Terrain Painter - Selector";
       
       new GuiScrollCtrl( EPainterScroll ) {
          canSaveDynamicFields = "0";

+ 18 - 5
Templates/BaseGame/game/tools/worldEditor/gui/ToolsToolbar.ed.gui

@@ -9,13 +9,26 @@ $guiContent = new GuiContainer(EWToolsToolbar) {
    VertSizing = "bottom";
    Position = "0 38";
    Extent = "0 33";
-   MinExtent = "8 2";
+   MinExtent = "8 34";
    canSave = "1";
    Visible = "1";
    hovertime = "1000";
    isClosed = "0";
    isDynamic = "0";
    
+   new GuiDecoyCtrl(EWToolsToolbarSpacer) {
+      profile = "ToolsMenubarProfile";
+      horizSizing = "right";
+      vertSizing = "bottom";
+      position = "0 3";
+      extent = "4 33";
+      minExtent = "8 8";
+      visible = "1";
+      helpTag = "0";
+      useMouseEvents = "0";
+      isDecoy = "1";
+   };
+   
    new GuiDynamicCtrlArrayControl(ToolsToolbarArray) {
       canSaveDynamicFields = "0";
       Enabled = "1";
@@ -24,15 +37,15 @@ $guiContent = new GuiContainer(EWToolsToolbar) {
       HorizSizing = "width";
       VertSizing = "bottom";
       position = "4 3";
-      Extent = "264 32";
-      MinExtent = "1024 32";
+      Extent = "264 33";
+      MinExtent = "1024 33";
       canSave = "1";
       Visible = "1";
       hovertime = "1000";
       colCount = "1";
       colSize = "29";
       RowSize = "27";
-      rowSpacing = "2";
+      rowSpacing = "1";
       colSpacing = "4";
    };
    new GuiBitmapButtonCtrl() {
@@ -61,7 +74,7 @@ $guiContent = new GuiContainer(EWToolsToolbar) {
       horizSizing = "right";
       vertSizing = "bottom";
       position = "1 1";
-      extent = "35 31";
+      extent = "35 33";
       minExtent = "8 8";
       visible = "0";
       helpTag = "0";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorInspectorWindow.ed.gui

@@ -44,7 +44,7 @@ $guiContent = new GuiControl() {
       closeCommand = "EWInspectorWindow.setVisible(false);";
       minSize = "50 50";
       EdgeSnap = "1";
-      text = "::  World Editor - Inspector";
+      text = ":: World Editor - Inspector";
 
       new GuiContainer(EWInspectorContainer) {
          canSaveDynamicFields = "0";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorTreeWindow.ed.gui

@@ -44,7 +44,7 @@ $guiContent = new GuiControl() {
       minSize = "50 50";
       closeCommand = "EWTreeWindow.setVisible(false);";
       EdgeSnap = "1";
-      text = "::  World Edior - Scene Tree";
+      text = ":: World Editor - Scene Tree";
       
       new GuiTabBookCtrl(EditorTreeTabBook) {
          canSaveDynamicFields = "0";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/guiTerrainImportGui.gui

@@ -46,7 +46,7 @@ $guiContent = new GuiControl(TerrainImportGui, EditorGuiGroup) {
       minSize = "4 4";
       closeCommand = "Canvas.popDialog( TerrainImportGui );";
       EdgeSnap = "0";
-      text = "::  Import Terrain Height Map";
+      text = ":: Import Terrain Height Map";
 
       new GuiTextEditCtrl() {
          canSaveDynamicFields = "0";

+ 1 - 1
Templates/BaseGame/game/tools/worldEditor/gui/guiTerrainMaterialDlg.ed.gui

@@ -7,7 +7,7 @@ $guiContent = new GuiControl(TerrainMaterialDlg,EditorGuiGroup) {
    canSaveDynamicFields = "1"; 
    
    new GuiWindowCtrl() { 
-      text = "::  Terrain  Materials Editor"; 
+      text = ":: Terrain  Materials Editor"; 
       resizeWidth = "0"; 
       canMinimize = "0"; 
       canMaximize = "0"; 

+ 27 - 5
Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript

@@ -628,6 +628,7 @@ function EditorGui::updateSideBar(%this)
 {   
    if(GuiEditorIsActive())
    {
+      // Update the Asset Browser's size
       if(isObject(AssetBrowserWindow) && isObject(GuiEditorSidebar))
       {
          if(AssetBrowserWindow.docked == true)
@@ -639,6 +640,19 @@ function EditorGui::updateSideBar(%this)
             AssetBrowserWindow.resize(0, %browserPosY, %browserWidth, %browserHeight);
          }
       }
+      
+      // Update the Windowed Console's size
+      if(isObject(windowConsoleControl) && isObject(GuiEditorSidebar))
+      {
+         if(windowConsoleControl.docked == true)
+         {
+            // The width is relative to the sidepanel
+            %consoleWidth = Canvas.extent.x - GuiEditorSidebar.extent.x;
+            %consoleHeight = windowConsoleControl.extent.y;
+            %consolePosY = Canvas.extent.y - windowConsoleControl.extent.y - 33;
+            windowConsoleControl.resize(0, %consolePosY, %consoleWidth, %consoleHeight);
+         }
+      }
       return;
    }
    
@@ -1019,6 +1033,10 @@ function WorldEditorPlugin::onActivated( %this )
       ETransformSelection.setVisible(true);
    }
    
+   EWorldEditor.UseGridSnap = EditorSettings.value("WorldEditor/Tools/UseGridSnap");
+   ESnapOptions-->GridSnapButton.setStateOn( EWorldEditor.UseGridSnap );
+   SnapToBar-->objectGridSnapBtn.setStateOn( EWorldEditor.UseGridSnap );
+   
    Parent::onActivated(%this);
 }
 
@@ -1616,9 +1634,10 @@ function EWorldEditor::maxSize(%this, %window)
       
       %fixedWindow = EWTreeWindow;
       %fluidWindow = EWInspectorWindow;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
-      %maxHeight = Canvas.extent.y - %top - %bottom;
+      %offset = 25; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
+      %maxHeight = Canvas.extent.y - %top - %bottom + 12;
       
       // --- Fixed window (top) ------------------------------------------------
       // put it back if it moved
@@ -2495,7 +2514,8 @@ function EWorldEditor::syncGui( %this )
    ESnapOptions-->SnapSize.setText( EWorldEditor.getSoftSnapSize() );
    ESnapOptions-->GridSize.setText( EWorldEditor.getGridSize() );
    
-   ESnapOptions-->GridSnapButton.setStateOn( %this.getGridSnap() );
+   %this.UseGridSnap = EditorSettings.value("WorldEditor/Tools/UseGridSnap");
+   ESnapOptions-->GridSnapButton.setStateOn( %this.UseGridSnap );
    
    %this.UseGroupCenter = EditorSettings.value("WorldEditor/Tools/UseGroupCenter");
    
@@ -2840,7 +2860,9 @@ function toggleSnappingOptions( %var )
    }
    else if( %var $= "grid" )
    {
-      EWorldEditor.setGridSnap( !EWorldEditor.getGridSnap() );
+ 	   EWorldEditor.UseGridSnap = !EWorldEditor.UseGridSnap;
+	   EditorSettings.setValue("WorldEditor/Tools/UseGridSnap", EWorldEditor.UseGridSnap );
+      EWorldEditor.setGridSnap( EWorldEditor.UseGridSnap );
    }
    else if( %var $= "byGroup" )
    {

+ 4 - 3
Templates/BaseGame/game/tools/worldEditor/scripts/editors/terrainEditor.ed.tscript

@@ -596,8 +596,9 @@ function TerrainPainterContainer::maxSize(%this, %window)
       
       %fixedWindow = EPainterPreview;
       %fluidWindow = EPainter;
-      %top = EditorGuiToolbar.extent.y + 6;
-      %bottom = %top + 65 - 6;
+      %offset = 23; // tweak the vertical offset so that it aligns neatly
+      %top = EditorGuiToolbar.extent.y + %offset;
+      %bottom = %top + 59;
       %maxHeight = Canvas.extent.y - %top - %bottom;
       
       // --- Fixed window (top) ------------------------------------------------
@@ -635,7 +636,7 @@ function TerrainPainterContainer::maxSize(%this, %window)
       // --- Windowed Console --------------------------------------------------
       if(isObject(windowConsoleControl))
       {
-         // Only resize the AssetBrowser if it's docked
+         // Only resize the console if it's docked
          if(windowConsoleControl.docked == true)
          {
             // The width is relative to the sidepanel

+ 5 - 32
Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.tscript

@@ -1,31 +1,9 @@
 singleton GFXStateBlockData( Viz_DefaultVisualizeState )
 {
-   /*alphaDefined = true;
-   alphaTestEnable = true;
-   alphaTestRef = 1;
-   alphaTestFunc = GFXCmpGreaterEqual;
-         
-   // Do a one to one blend.
-   blendDefined = true;
-   blendEnable = true;
+   blendDefined = false;
+   blendEnable = false;
    blendSrc = GFXBlendOne;
-   blendDest = GFXBlendOne;
-   
-   zDefined = true;
-   zEnable = false;
-   zWriteEnable = false;
-   
-   samplersDefined = true;
-   samplerStates[0] = SamplerClampPoint;
-   samplerStates[1] = SamplerClampPoint;
-   samplerStates[2] = SamplerClampPoint;
-   samplerStates[3] = SamplerClampPoint;
-   samplerStates[4] = SamplerClampLinear;
-   samplerStates[5] = SamplerClampLinear;*/
-   blendDefined = true;
-   blendEnable = true;
-   blendSrc = GFXBlendSrcAlpha;
-   blendDest = GFXBlendInvSrcAlpha;
+   blendDest = GFXBlendZero;
    
    zDefined = true;
    zEnable = false;
@@ -36,7 +14,6 @@ singleton GFXStateBlockData( Viz_DefaultVisualizeState )
    samplerStates[1] = SamplerClampPoint;
    samplerStates[2] = SamplerClampPoint;
    samplerStates[3] = SamplerClampLinear;  // depthviz
-   samplerStates[4] = SamplerClampLinear;  // depthviz
 };
 
 singleton shaderData( Viz_TexelDensity )
@@ -92,7 +69,6 @@ singleton shaderData( Viz_SurfaceProperties )
    samplerNames[2] = "$matInfoBuffer";
    samplerNames[3] = "$ssaoMaskTex";
    samplerNames[4] = "$backbufferTex";
-   samplerNames[5] = "$glowBuffer";
 
    pixVersion = 2.0;
 };
@@ -106,7 +82,6 @@ singleton PostEffect( Viz_SurfacePropertiesPFX )
    texture[2] = "#matinfo";
    texture[3] = "#ssaoMask";
    texture[4] = "$backBuffer";
-   texture[5] = "#glowbuffer";
    
    target = "$backBuffer";
    renderPriority = 9999;
@@ -186,8 +161,6 @@ function toggleSurfacePropertiesViz( %mode )
          $Viz_SurfacePropertiesModeVar = "12";
       case "Backbuffer":
          $Viz_SurfacePropertiesModeVar = "13";
-      case "Glow":
-         $Viz_SurfacePropertiesModeVar = "14";
       default:
          $Viz_SurfacePropertiesModeVar = "-1";
    }
@@ -269,8 +242,8 @@ singleton PostEffect( Viz_ColorBlindnessPFX )
 {   
    isEnabled         = false;
    allowReflectPass  = false;
-   renderTime        = "PFXAfterBin";
-   renderBin         = "GlowBin";
+   renderTime        = "PFXBeforeBin";
+   renderBin         = "EditorBin";
    
    shader = Viz_ColorBlindness;
    stateBlock = PFX_DefaultStateBlock;

+ 0 - 3
Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shaders/Viz_SurfacePropertiesP.glsl

@@ -32,7 +32,6 @@ uniform sampler2D colorBuffer;
 uniform sampler2D matInfoBuffer;
 uniform sampler2D ssaoMaskTex;
 uniform sampler2D backbufferTex;
-uniform sampler2D glowBuffer;
 
 uniform float mode;
 uniform vec3 eyePosWorld;
@@ -78,6 +77,4 @@ void main()
         OUT_col = vec4(texture( ssaoMaskTex, IN_uv0 ).rgb, 1.0);
     else if(mode == 13)
         OUT_col = vec4(texture( backbufferTex, IN_uv0 ).rgb, 1.0);
-    else if(mode == 14)
-        OUT_col = vec4(texture( glowBuffer, IN_uv0 ).rgb, 1.0);
 }

+ 0 - 3
Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shaders/Viz_SurfacePropertiesP.hlsl

@@ -30,7 +30,6 @@ TORQUE_UNIFORM_SAMPLER2D(colorBuffer, 1);
 TORQUE_UNIFORM_SAMPLER2D(matInfoBuffer, 2);
 TORQUE_UNIFORM_SAMPLER2D(ssaoMaskTex, 3);
 TORQUE_UNIFORM_SAMPLER2D(backbufferTex, 4);
-TORQUE_UNIFORM_SAMPLER2D(glowBuffer, 5);
 
 uniform float mode;
 uniform float4x4 cameraToWorld;
@@ -76,8 +75,6 @@ float4 main( PFXVertToPix IN ) : TORQUE_TARGET0
         float4(TORQUE_TEX2D( ssaoMaskTex, IN.uv0 ).rgb, 1.0);
     else if(mode == 13)
         float4(TORQUE_TEX2D( backbufferTex, IN.uv0 ).rgb, 1.0);
-    else if(mode == 14)
-        float4(TORQUE_TEX2D( glowBuffer, IN.uv0 ).rgb, 1.0);
 
     return float4(0,0,0,1);   
 }

+ 3 - 0
Tools/CMake/modules/tools.cmake

@@ -16,3 +16,6 @@ if(TORQUE_TOOLS)
   source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source/environment/editors/" PREFIX "Modules/TOOLS/environment" FILES ${TORQUE_TOOLS_SOURCES2})  
   source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source/forest/editor/" PREFIX "Modules/TOOLS/forest" FILES ${TORQUE_TOOLS_SOURCES3})
 endif(TORQUE_TOOLS)
+if(TORQUE_TOOLS_EXT_COMMANDS)
+  set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_TOOLS_EXT_COMMANDS)
+endif(TORQUE_TOOLS_EXT_COMMANDS)

+ 1 - 0
Tools/CMake/torque_configs.cmake

@@ -71,6 +71,7 @@ advanced_option(TORQUE_DEBUG_NET "debug network" OFF)
 advanced_option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF)
 advanced_option(TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF)
 advanced_option(TORQUE_TOOLS "Enable or disable the tools" ON)
+advanced_option(TORQUE_TOOLS_EXT_COMMANDS "Enable or disable some extended functionality like shell commands or free write access" OFF)
 advanced_option(TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF)
 advanced_option(TORQUE_SHOW_LEGACY_FILE_FIELDS "If on, shows legacy direct file path fields in the inspector." OFF)