diff --git a/Engine/source/environment/editors/guiRiverEditorCtrl.cpp b/Engine/source/environment/editors/guiRiverEditorCtrl.cpp index 44f161232..e9040a5c9 100644 --- a/Engine/source/environment/editors/guiRiverEditorCtrl.cpp +++ b/Engine/source/environment/editors/guiRiverEditorCtrl.cpp @@ -1479,3 +1479,9 @@ DefineConsoleMethod( GuiRiverEditorCtrl, regenerate, void, (), , "" ) if ( river ) river->regenerate(); } + +//TorqueLab Added to change node from script +DefineConsoleMethod(GuiRiverEditorCtrl, setSelectedNode, void, (S32 node), , "") +{ + object->setSelectedNode(node); +} diff --git a/Engine/source/environment/editors/guiRoadEditorCtrl.cpp b/Engine/source/environment/editors/guiRoadEditorCtrl.cpp index 1eecfb5ae..d8cd908f2 100644 --- a/Engine/source/environment/editors/guiRoadEditorCtrl.cpp +++ b/Engine/source/environment/editors/guiRoadEditorCtrl.cpp @@ -1105,3 +1105,8 @@ DefineConsoleMethod( GuiRoadEditorCtrl, deleteRoad, void, (), , "" ) { object->deleteSelectedRoad(); } +//TorqueLab Added to change node from script +DefineConsoleMethod(GuiRoadEditorCtrl, setSelectedNode, void, (S32 node), , "") +{ + object->setSelectedNode(node); +} \ No newline at end of file diff --git a/Engine/source/forest/editor/forestBrushTool.cpp b/Engine/source/forest/editor/forestBrushTool.cpp index 54a237528..639239504 100644 --- a/Engine/source/forest/editor/forestBrushTool.cpp +++ b/Engine/source/forest/editor/forestBrushTool.cpp @@ -40,7 +40,7 @@ #include "math/mRandomDeck.h" #include "math/mRandomSet.h" - +F32 ForestBrushTool::smGlobalScale = 1.0f; //TorqueLab - Forest global scale Init bool ForestBrushTool::protectedSetSize( void *object, const char *index, const char *data ) { ForestBrushTool *tool = static_cast( object ); @@ -122,7 +122,14 @@ void ForestBrushTool::initPersistFields() Parent::initPersistFields(); } - +//TorqueLab - Forest brush tool new console variables +void ForestBrushTool::consoleInit() +{ + //TorqueLab - Forest global scale - Apply global scaling to painted elements + Con::addVariable("$Forest::GlobalScale", TypeF32, &ForestBrushTool::smGlobalScale, "For editor use.\n" + "@ingroup Editors\n"); + Parent::consoleInit(); +} bool ForestBrushTool::onAdd() { if ( !Parent::onAdd() ) @@ -380,6 +387,10 @@ void ForestBrushTool::_paint( const Point3F &point ) randElementSet.add( pElement, pElement->mProbability ); } + //TorqueLab - Check forest global scale + if (smGlobalScale <= 0.01) + smGlobalScale = 0.01f; + // Pull elements from the random set until we would theoretically fill // the desired area. @@ -403,6 +414,8 @@ void ForestBrushTool::_paint( const Point3F &point ) areaLeft -= area * 5.0f; // fudge value + scaleFactor *= smGlobalScale; //TorqueLab - Add forest global scale + // No room left we are done. //if ( areaLeft < 0.0f ) // break; diff --git a/Engine/source/forest/editor/forestBrushTool.h b/Engine/source/forest/editor/forestBrushTool.h index 0debad616..3f9cdd760 100644 --- a/Engine/source/forest/editor/forestBrushTool.h +++ b/Engine/source/forest/editor/forestBrushTool.h @@ -61,10 +61,12 @@ public: // SimObject DECLARE_CONOBJECT( ForestBrushTool ); + static void consoleInit(); //TorqueLab - New console variables static void initPersistFields(); virtual bool onAdd(); virtual void onRemove(); + static F32 smGlobalScale; //TorqueLab - Forest global scale // ForestTool virtual void on3DMouseDown( const Gui3DMouseEvent &evt ); virtual void on3DMouseUp( const Gui3DMouseEvent &evt ); diff --git a/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp b/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp index 09723a4c5..a60642133 100644 --- a/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp @@ -66,14 +66,16 @@ GuiSwatchButtonCtrl::GuiSwatchButtonCtrl() static StringTableEntry sProfile = StringTable->insert( "profile" ); setDataField( sProfile, NULL, "GuiInspectorSwatchButtonProfile" ); - mGridBitmap = "tools/gui/images/transp_grid"; + mGridBitmap = StringTable->insert("tools/gui/images/transp_grid"); //TorqueLab bad bitmap crash fix + //mGridBitmap = "tools/gui/images/transp_grid"; } void GuiSwatchButtonCtrl::initPersistFields() { addField( "color", TypeColorF, Offset( mSwatchColor, GuiSwatchButtonCtrl ), "The foreground color of GuiSwatchButtonCtrl" ); - addField( "gridBitmap", TypeString, Offset( mGridBitmap, GuiSwatchButtonCtrl ), "The bitmap used for the transparent grid" ); + addField("gridBitmap", TypeFilename, Offset(mGridBitmap, GuiSwatchButtonCtrl), "The bitmap used for the transparent grid");//TorqueLab bad bitmap crash fix + //addField( "gridBitmap", TypeString, Offset( mGridBitmap, GuiSwatchButtonCtrl ), "The bitmap used for the transparent grid" ); Parent::initPersistFields(); } diff --git a/Engine/source/gui/buttons/guiSwatchButtonCtrl.h b/Engine/source/gui/buttons/guiSwatchButtonCtrl.h index 56bd1279d..3114767f9 100644 --- a/Engine/source/gui/buttons/guiSwatchButtonCtrl.h +++ b/Engine/source/gui/buttons/guiSwatchButtonCtrl.h @@ -42,7 +42,8 @@ class GuiSwatchButtonCtrl : public GuiButtonBaseCtrl ColorF mSwatchColor; /// Bitmap used for mGrid - String mGridBitmap; + StringTableEntry mGridBitmap; //TorqueLab bad bitmap crash fix + //String mGridBitmap; /// Background texture that will show through with transparent colors. GFXTexHandle mGrid; diff --git a/Engine/source/gui/editor/guiMenuBar.cpp b/Engine/source/gui/editor/guiMenuBar.cpp index aeabdca30..b863349d6 100644 --- a/Engine/source/gui/editor/guiMenuBar.cpp +++ b/Engine/source/gui/editor/guiMenuBar.cpp @@ -1000,12 +1000,15 @@ GuiMenuBar::MenuItem* GuiMenuBar::findSubmenuItem(MenuItem *menuItem, const char // Add a menuitem to the given submenu void GuiMenuBar::addSubmenuItem(Menu *menu, MenuItem *submenu, const char *text, U32 id, const char *accelerator, S32 checkGroup) { - // Check that the given menu item supports a submenu - if(submenu && !submenu->isSubmenu) - { - Con::errorf("GuiMenuBar::addSubmenuItem: Attempting to add menuitem '%s' to an invalid submenu",text); - return; - } + // Check that the given menu item supports a submenu + //TorqueLab isSubmenu check removed and simply validate the submenu object + //if(submenu && !submenu->isSubmenu) + if (!submenu) + { + Con::errorf("GuiMenuBar::addSubmenuItem: Attempting to add menuitem '%s' to an invalid submenu", text); + return; + } + submenu->isSubmenu = true;//TorqueLab => Force isSubmenu to true (hack) // allocate the new menu item MenuItem *newMenuItem = new MenuItem; @@ -1029,6 +1032,13 @@ void GuiMenuBar::addSubmenuItem(Menu *menu, MenuItem *submenu, const char *text, // Point back to the submenu's menu newMenuItem->submenuParentMenu = menu; + //TorqueLab : Added to make sure there's a menu to add the item + if (!submenu->submenu){ + Menu *newMenu = sCreateMenu(submenu->text, submenu->id); + submenu->submenu = newMenu; + } + //TorqueLab end + // link it into the menu's menu item list MenuItem **walk = &submenu->submenu->firstMenuItem; while(*walk) diff --git a/Engine/source/gui/worldEditor/worldEditor.cpp b/Engine/source/gui/worldEditor/worldEditor.cpp index 90827653f..d7b2af2b4 100644 --- a/Engine/source/gui/worldEditor/worldEditor.cpp +++ b/Engine/source/gui/worldEditor/worldEditor.cpp @@ -2231,6 +2231,9 @@ void WorldEditor::on3DMouseDragged(const Gui3DMouseEvent & event) copySelection( mSelected ); pasteSelection( false ); + + //TorqueLab -> Needed to know a dragCopy happen + Con::executef(this, "onDragCopy", mSelected->getIdString()); } // Check for grid snap toggle with ALT.