diff --git a/Engine/source/T3D/assets/ImageAsset.cpp b/Engine/source/T3D/assets/ImageAsset.cpp index cb5db078c..a2227691e 100644 --- a/Engine/source/T3D/assets/ImageAsset.cpp +++ b/Engine/source/T3D/assets/ImageAsset.cpp @@ -470,9 +470,6 @@ void GuiInspectorTypeImageAssetPtr::consoleInit() GuiControl* GuiInspectorTypeImageAssetPtr::constructEditControl() { - if (mInspector->getInspectObject() == nullptr) - return nullptr; - // Create base filename edit controls GuiControl* retCtrl = Parent::constructEditControl(); if (retCtrl == NULL) @@ -480,16 +477,28 @@ GuiControl* GuiInspectorTypeImageAssetPtr::constructEditControl() retCtrl->getRenderTooltipDelegate().bind(this, &GuiInspectorTypeImageAssetPtr::renderTooltip); - // Change filespec - char szBuffer[512]; - dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ImageAsset\", \"AssetBrowser.changeAsset\", %s, %s);", - mInspector->getIdString(), mCaption); - mBrowseButton->setField("Command", szBuffer); + if (mInspector->getInspectObject() != nullptr) + { + // Change filespec + char szBuffer[512]; + dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ImageAsset\", \"AssetBrowser.changeAsset\", %s, %s);", + mInspector->getIdString(), mCaption); + mBrowseButton->setField("Command", szBuffer); - setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString()); + setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString()); + } + else + { + //if we don't have a target object, we'll be manipulating the desination value directly + char szBuffer[512]; + dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ImageAsset\", \"AssetBrowser.changeAsset\", %s, %s);", + mInspector->getIdString(), mVariableName); + mBrowseButton->setField("Command", szBuffer); + } - // Create "Open in ShapeEditor" button - mImageEdButton = new GuiBitmapButtonCtrl(); + mImageEdButton = NULL; + // Create "Open in ImageEditor" button + /*mImageEdButton = new GuiBitmapButtonCtrl(); char bitmapName[512] = "ToolsModule:GameTSCtrl_image"; mImageEdButton->setBitmap(StringTable->insert(bitmapName)); @@ -498,10 +507,10 @@ GuiControl* GuiInspectorTypeImageAssetPtr::constructEditControl() mImageEdButton->setDataField(StringTable->insert("Profile"), NULL, "GuiButtonProfile"); mImageEdButton->setDataField(StringTable->insert("tooltipprofile"), NULL, "GuiToolTipProfile"); mImageEdButton->setDataField(StringTable->insert("hovertime"), NULL, "1000"); - mImageEdButton->setDataField(StringTable->insert("tooltip"), NULL, "Open this file in the Shape Editor"); + mImageEdButton->setDataField(StringTable->insert("tooltip"), NULL, "Open this file in the Image Editor"); mImageEdButton->registerObject(); - addObject(mImageEdButton); + addObject(mImageEdButton);*/ return retCtrl; } @@ -517,18 +526,21 @@ bool GuiInspectorTypeImageAssetPtr::updateRects() mEditCtrlRect.set(fieldExtent.x - dividerPos + dividerMargin, 1, dividerPos - dividerMargin - 34, fieldExtent.y); bool resized = mEdit->resize(mEditCtrlRect.point, mEditCtrlRect.extent); - if (mBrowseButton != NULL) - { - mBrowseRect.set(fieldExtent.x - 32, 2, 14, fieldExtent.y - 4); - resized |= mBrowseButton->resize(mBrowseRect.point, mBrowseRect.extent); - } - if (mImageEdButton != NULL) { RectI shapeEdRect(fieldExtent.x - 16, 2, 14, fieldExtent.y - 4); resized |= mImageEdButton->resize(shapeEdRect.point, shapeEdRect.extent); } + if (mBrowseButton != NULL) + { + if(mImageEdButton != NULL) + mBrowseRect.set(fieldExtent.x - 32, 2, 14, fieldExtent.y - 4); + else + mBrowseRect.set(fieldExtent.x - 16, 2, 14, fieldExtent.y - 4); + resized |= mBrowseButton->resize(mBrowseRect.point, mBrowseRect.extent); + } + return resized; } diff --git a/Engine/source/T3D/assets/MaterialAsset.cpp b/Engine/source/T3D/assets/MaterialAsset.cpp index 4e9198e8f..d68381e41 100644 --- a/Engine/source/T3D/assets/MaterialAsset.cpp +++ b/Engine/source/T3D/assets/MaterialAsset.cpp @@ -479,11 +479,22 @@ GuiControl* GuiInspectorTypeMaterialAssetPtr::constructEditControl() // Change filespec char szBuffer[512]; - dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"MaterialAsset\", \"AssetBrowser.changeAsset\", %s, %s);", - mInspector->getIdString(), mCaption); - mBrowseButton->setField("Command", szBuffer); - setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString()); + if (mInspector->getInspectObject() != nullptr) + { + dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"MaterialAsset\", \"AssetBrowser.changeAsset\", %s, %s);", + mInspector->getIdString(), mCaption); + mBrowseButton->setField("Command", szBuffer); + + setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString()); + } + else + { + //if we don't have a target object, we'll be manipulating the desination value directly + dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"MaterialAsset\", \"AssetBrowser.changeAsset\", %s, %s);", + mInspector->getIdString(), mVariableName); + mBrowseButton->setField("Command", szBuffer); + } // Create "Open in Editor" button mEditButton = new GuiBitmapButtonCtrl(); diff --git a/Engine/source/T3D/assets/ShapeAsset.cpp b/Engine/source/T3D/assets/ShapeAsset.cpp index 17145079c..e00cc73d0 100644 --- a/Engine/source/T3D/assets/ShapeAsset.cpp +++ b/Engine/source/T3D/assets/ShapeAsset.cpp @@ -749,11 +749,21 @@ GuiControl* GuiInspectorTypeShapeAssetPtr::constructEditControl() // Change filespec char szBuffer[512]; - dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ShapeAsset\", \"AssetBrowser.changeAsset\", %s, %s);", - mInspector->getIdString(), mCaption); - mBrowseButton->setField("Command", szBuffer); + if (mInspector->getInspectObject() != nullptr) + { + dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ShapeAsset\", \"AssetBrowser.changeAsset\", %s, %s);", + mInspector->getIdString(), mCaption); + mBrowseButton->setField("Command", szBuffer); - setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString()); + setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString()); + } + else + { + //if we don't have a target object, we'll be manipulating the desination value directly + dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ShapeAsset\", \"AssetBrowser.changeAsset\", %s, %s);", + mInspector->getIdString(), mVariableName); + mBrowseButton->setField("Command", szBuffer); + } // Create "Open in ShapeEditor" button mShapeEdButton = new GuiBitmapButtonCtrl(); diff --git a/Engine/source/gui/controls/guiGameSettingsCtrl.cpp b/Engine/source/gui/controls/guiGameSettingsCtrl.cpp index 8de1f173a..3a1822e0a 100644 --- a/Engine/source/gui/controls/guiGameSettingsCtrl.cpp +++ b/Engine/source/gui/controls/guiGameSettingsCtrl.cpp @@ -393,7 +393,7 @@ void GuiGameSettingsCtrl::onRenderSliderOption(Point2I currentOffset) GFont* font = mProfile->mFont; char stringVal[32]; - dSprintf(stringVal, 32, "%f", mValue); + dSprintf(stringVal, 32, "%.1f", mValue); S32 stringWidth = font->getStrWidth(stringVal); Point2I textOffset(sliderRect.point.x + sliderRect.extent.x, 0); diff --git a/Engine/source/gui/controls/guiTreeViewCtrl.cpp b/Engine/source/gui/controls/guiTreeViewCtrl.cpp index ae5517a5e..60db14f65 100644 --- a/Engine/source/gui/controls/guiTreeViewCtrl.cpp +++ b/Engine/source/gui/controls/guiTreeViewCtrl.cpp @@ -1982,7 +1982,7 @@ bool GuiTreeViewCtrl::_hitTest(const Point2I & pnt, Item* & item, BitSet32 & fla min += mProfile->mTextOffset.x; FrameAllocatorMarker txtAlloc; - U32 bufLen = item->getDisplayTextLength() + 1; + U32 bufLen = item->getDisplayTextLength() + 2; char *buf = (char*)txtAlloc.alloc(bufLen); item->getDisplayText(bufLen, buf); diff --git a/Engine/source/gui/editor/popupMenu.cpp b/Engine/source/gui/editor/popupMenu.cpp index 6e7cb39ee..be160d08f 100644 --- a/Engine/source/gui/editor/popupMenu.cpp +++ b/Engine/source/gui/editor/popupMenu.cpp @@ -428,7 +428,7 @@ void PopupMenu::showPopup(GuiCanvas *owner, S32 x /* = -1 */, S32 y /* = -1 */) Point2I pos = Point2I::Zero; if (x == -1 && y == -1) - pos = owner->getCursorPos(); + pos = owner->getCursorPosLocal(); else pos = Point2I(x, y); diff --git a/Engine/source/terrain/terrCollision.cpp b/Engine/source/terrain/terrCollision.cpp index 0d2cb905f..ed1461920 100644 --- a/Engine/source/terrain/terrCollision.cpp +++ b/Engine/source/terrain/terrCollision.cpp @@ -34,9 +34,6 @@ static const U32 MaxExtent = 256; //---------------------------------------------------------------------------- - -Convex sTerrainConvexList; - // Number of vertices followed by point index S32 sVertexList[5][5] = { { 3, 1,2,3 }, // 135 B @@ -350,7 +347,7 @@ void TerrainBlock::buildConvex(const Box3F& box,Convex* convex) { PROFILE_SCOPE( TerrainBlock_buildConvex ); - sTerrainConvexList.collectGarbage(); + mTerrainConvexList.collectGarbage(); // First check to see if the query misses the // terrain elevation range. @@ -415,7 +412,7 @@ void TerrainBlock::buildConvex(const Box3F& box,Convex* convex) // Create a new convex. TerrainConvex* cp = new TerrainConvex; - sTerrainConvexList.registerObject(cp); + mTerrainConvexList.registerObject(cp); convex->addToWorkingList(cp); cp->halfA = true; cp->square = 0; @@ -448,7 +445,7 @@ void TerrainBlock::buildConvex(const Box3F& box,Convex* convex) cp->normal[1].normalize(); if (mDot(vp[3] - vp[1],cp->normal[0]) > 0) { TerrainConvex* nc = new TerrainConvex(*cp); - sTerrainConvexList.registerObject(nc); + mTerrainConvexList.registerObject(nc); convex->addToWorkingList(nc); nc->halfA = false; nc->square = cp; @@ -463,7 +460,7 @@ void TerrainBlock::buildConvex(const Box3F& box,Convex* convex) cp->normal[1].normalize(); if (mDot(vp[2] - vp[0],cp->normal[0]) > 0) { TerrainConvex* nc = new TerrainConvex(*cp); - sTerrainConvexList.registerObject(nc); + mTerrainConvexList.registerObject(nc); convex->addToWorkingList(nc); nc->halfA = false; nc->square = cp; diff --git a/Engine/source/terrain/terrData.cpp b/Engine/source/terrain/terrData.cpp index 29523e609..ccb53b8e2 100644 --- a/Engine/source/terrain/terrData.cpp +++ b/Engine/source/terrain/terrData.cpp @@ -220,13 +220,10 @@ TerrainBlock::TerrainBlock() mTerrainAssetId = StringTable->EmptyString(); } - -extern Convex sTerrainConvexList; - TerrainBlock::~TerrainBlock() { // Kill collision - sTerrainConvexList.nukeList(); + mTerrainConvexList.nukeList(); SAFE_DELETE(mLightMap); mLightMapTex = NULL; diff --git a/Engine/source/terrain/terrData.h b/Engine/source/terrain/terrData.h index 07a023371..de6f90488 100644 --- a/Engine/source/terrain/terrData.h +++ b/Engine/source/terrain/terrData.h @@ -55,7 +55,10 @@ #endif #ifndef TERRAINASSET_H #include "T3D/assets/TerrainAsset.h" -#endif +#endif +#ifndef _CONVEX_H_ +#include "collision/convex.h" +#endif class GBitmap; class TerrainBlock; @@ -217,6 +220,9 @@ protected: /// True if the zoning needs to be recalculated for the terrain. bool mZoningDirty; + /// Holds the generated convex list stuff for this terrain + Convex mTerrainConvexList; + String _getBaseTexCacheFileName() const; void _rebuildQuadtree(); diff --git a/Templates/BaseGame/game/core/gameObjects/datablocks/defaultDatablocks.tscript b/Templates/BaseGame/game/core/gameObjects/datablocks/defaultDatablocks.tscript index 008b5e352..1035f2d9a 100644 --- a/Templates/BaseGame/game/core/gameObjects/datablocks/defaultDatablocks.tscript +++ b/Templates/BaseGame/game/core/gameObjects/datablocks/defaultDatablocks.tscript @@ -139,7 +139,7 @@ datablock MissionMarkerData(SpawnSphereMarker) datablock MissionMarkerData(CameraBookmarkMarker) { category = "Misc"; - shapeAsset = "Core_GameObjects:Camera"; + shapeAsset = "Core_GameObjects:camera_shape"; }; datablock CameraData(Observer) diff --git a/Templates/BaseGame/game/core/gameObjects/shapes/CameraMat.asset.taml b/Templates/BaseGame/game/core/gameObjects/shapes/CameraMat.asset.taml index 60c126d02..3b5e068fe 100644 --- a/Templates/BaseGame/game/core/gameObjects/shapes/CameraMat.asset.taml +++ b/Templates/BaseGame/game/core/gameObjects/shapes/CameraMat.asset.taml @@ -5,6 +5,7 @@ materialDefinitionName="CameraMat" VersionId="1"> diff --git a/Templates/BaseGame/game/core/gameObjects/shapes/camera_shape.tscript b/Templates/BaseGame/game/core/gameObjects/shapes/camera_shape.tscript new file mode 100644 index 000000000..ac4c5ba40 --- /dev/null +++ b/Templates/BaseGame/game/core/gameObjects/shapes/camera_shape.tscript @@ -0,0 +1,11 @@ + +singleton TSShapeConstructor(cameradts2) +{ + baseShapeAsset = "Core_GameObjects:Camera_shape"; + singleDetailSize = "0"; + flipUVCoords = "0"; + JoinIdenticalVerts = "0"; + reverseWindingOrder = "0"; + removeRedundantMats = "0"; + animFPS = "2"; +}; diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript index 69e38bf2d..3e9c778ae 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript @@ -608,8 +608,11 @@ function AssetBrowser::doRefresh(%this) //Forces a clean collapse of the tree for any not-really-exposed items %dataItem = AssetBrowser-->filterTree.findItemByName("data"); - AssetBrowser-->filterTree.expandItem(%dataItem, false); - AssetBrowser-->filterTree.expandItem(%dataItem); + if(%dataItem != 0) + { + AssetBrowser-->filterTree.expandItem(%dataItem, false); + AssetBrowser-->filterTree.expandItem(%dataItem); + } %this.dirty = false; } @@ -985,14 +988,21 @@ function AssetBrowser::changeAsset(%this) %targetObject = %this.fieldTargetObject; %inspectorObject = ""; - if(%this.fieldTargetObject.isInNamespaceHierarchy("GuiInspector")) + if(isObject(%this.fieldTargetObject) && %this.fieldTargetObject.isInNamespaceHierarchy("GuiInspector")) { %inspectorObject = %this.fieldTargetObject; - %targetObject = %inspectorObject.getInspectObject(); - - %inspectorObject.setObjectField(%this.fieldTargetName, %this.selectedAsset); + if(%inspectorObject.getNumInspectObjects() != 0) + { + %targetObject = %inspectorObject.getInspectObject(); + %inspectorObject.setObjectField(%this.fieldTargetName, %this.selectedAsset); + } + else if(startsWith(%this.fieldTargetName, "$")) + { + //we're targeting a variable directly, so deal with that then + %cmd = %this.fieldTargetName @ "=\"" @ %this.selectedAsset @ "\";"; + } } - else + else if(isObject(%this.fieldTargetObject)) { //alright, we've selectd an asset for a field, so time to set it! if(%this.fieldTargetName $= "") @@ -1000,11 +1010,23 @@ function AssetBrowser::changeAsset(%this) else %cmd = %targetObject @ "." @ %this.fieldTargetName @ "=\"" @ %this.selectedAsset @ "\";"; //echo("Changing asset via the " @ %cmd @ " command"); - eval(%cmd); + } + else if(startsWith(%this.fieldTargetName, "$")) + { + //we're targeting a variable directly, so deal with that then + %cmd = %this.fieldTargetName @ "=\"" @ %this.selectedAsset @ "\";"; } + eval(%cmd); + //Force update our object with the field change - %targetObject.inspectPostApply(); + if(isObject(%targetObject)) + { + if(%this.fieldTargetObject.isInNamespaceHierarchy("GuiInspector")) + %this.fieldTargetObject.refresh(); + else + %targetObject.inspectPostApply(); + } //Flag us as dirty for editing purposes EWorldEditor.setSceneAsDirty(); diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/editAsset.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/editAsset.tscript index c9735fa58..700da0460 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/editAsset.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/editAsset.tscript @@ -499,7 +499,30 @@ function AssetBrowser::openFileLocation(%this) %filePath = ""; if(EditAssetPopup.assetId !$= "") { - %filePath = AssetDatabase.getAssetPath(EditAssetPopup.assetId); + if(AssetDatabase.isDeclaredAsset(EditAssetPopup.assetId)) + { + %filePath = AssetDatabase.getAssetPath(EditAssetPopup.assetId); + } + else + { + //probably a file path + %pathSplit = strpos(EditAssetPopup.assetId, ":"); + if(%pathSplit != -1) + { + %path = getSubStr(EditAssetPopup.assetId, 0, %pathSplit); + %file = getSubStr(EditAssetPopup.assetId, %pathSplit + 1); + + //datablocks pack the originator file in the parent path as-is, so check that + if(fileExt(%path) !$= "") + { + %filePath = %path; + } + else + { + %filePath = %path @ "/" @ %file; + } + } + } } else if(EditLevelAssetPopup.assetId !$= "") { @@ -510,16 +533,20 @@ function AssetBrowser::openFileLocation(%this) %filePath = AssetDatabase.getAssetPath(EditAssetPopup.assetId); } - if(%filePath !$= "") + if(isFile(%filePath) || isDirectory(%filePath)) { + %fullPath = makeFullPath(%filePath); + if(fileExt(%fullPath) $= ".tscript") + %fullPath = filePath(%fullPath); + if($platform $= "windows") { - %cmd = "cd \"" @ makeFullPath(%filePath) @ "\" && start ."; + %cmd = "cd \"" @ %fullPath @ "\" && start ."; systemCommand(%cmd); } else { - %cmd = "open \"" @ makeFullPath(%filePath) @ "\""; + %cmd = "open \"" @ %fullPath @ "\""; systemCommand(%cmd); } } diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/popupMenus.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/popupMenus.tscript index 04db33fc4..469e742ac 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/popupMenus.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/popupMenus.tscript @@ -137,18 +137,9 @@ function AssetBrowser::buildPopupMenus(%this) item[ 3 ] = "-"; item[ 4 ] = "Create Terrain Data" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"TerrainAsset\", AssetBrowser.selectedModule);"; item[ 5 ] = "-"; - item[ 6 ] = "Create Shape" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"Shape\", AssetBrowser.selectedModule);"; - item[ 7 ] = "Create Shape Animation" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ShapeAnimationAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewShapeAnimationAsset(\"NewShapeAnimation\", AssetBrowser.selectedModule);"; - item[ 8 ] = "-"; - item[ 9 ] = "Create GUI" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"GUIAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewGUIAsset(\"NewGUI\", AssetBrowser.selectedModule);"; - item[ 10 ] = "-"; - item[ 11 ] = "Create Post Effect" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"PostEffectAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewPostEffectAsset(\"NewPostEffect\", AssetBrowser.selectedModule);"; - item[ 12 ] = "-"; - item[ 13 ] = "Create Sound" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"SoundAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewSoundAsset(\"NewSound\", AssetBrowser.selectedModule);"; - item[ 14 ] = "-"; - item[ 15 ] = "Create Particle Effect" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ParticleEffectAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewParticleEffectAsset(\"NewParticleEffect\", AssetBrowser.selectedModule);"; - item[ 16 ] = "-"; - item[ 17 ] = "Create Cubemap" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"CubemapAsset\", AssetBrowser.selectedModule);"; + item[ 6 ] = "Create GUI" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"GUIAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewGUIAsset(\"NewGUI\", AssetBrowser.selectedModule);"; + item[ 7 ] = "-"; + item[ 8 ] = "Create Post Effect" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"PostEffectAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewPostEffectAsset(\"NewPostEffect\", AssetBrowser.selectedModule);"; }; } @@ -232,13 +223,6 @@ function AssetBrowser::buildPopupMenus(%this) }; } - //Some assets are not yet ready/implemented, so disable their creation here - AddNewArtAssetPopup.enableItem(6, false); //shape - AddNewArtAssetPopup.enableItem(7, false); //shape animation - AddNewArtAssetPopup.enableItem(13, false); //sound asset - AddNewArtAssetPopup.enableItem(15, false); //particle effect - AddNewArtAssetPopup.enableItem(17, false); //cubemap - if( !isObject( EditFolderPopup ) ) { new PopupMenu( EditFolderPopup ) diff --git a/Templates/BaseGame/game/tools/forestEditor/forestEditToolbar.ed.gui b/Templates/BaseGame/game/tools/forestEditor/forestEditToolbar.ed.gui index 1f6202b05..ad655d9de 100644 --- a/Templates/BaseGame/game/tools/forestEditor/forestEditToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/forestEditor/forestEditToolbar.ed.gui @@ -362,8 +362,8 @@ new GuiMouseEventCtrl(ForestBrushSizeSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(ForestBrushSizeTextEditContainer.position) + firstWord(ForestEditToolbar.position)+11 SPC - (getWord(ForestBrushSizeTextEditContainer, 1)) + 25; + position = ForestBrushSizeTextEditContainer.position.x + ForestEditToolbar.position.x + 50 SPC + ForestBrushSizeTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -392,8 +392,8 @@ new GuiMouseEventCtrl(ForestBrushPressureSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(ForestBrushPressureTextEditContainer.position) + firstWord(ForestEditToolbar.position) SPC - (getWord(ForestBrushPressureTextEditContainer, 1)) + 25; + position = ForestBrushPressureTextEditContainer.position.x + ForestEditToolbar.position.x + 50 SPC + ForestBrushPressureTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -422,8 +422,8 @@ new GuiMouseEventCtrl(ForestBrushHardnessSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(ForestBrushHardnessTextEditContainer.position) + firstWord(ForestEditToolbar.position) SPC - (getWord(TForestBrushHardnessTextEditContainer, 1)) + 25; + position = ForestBrushPressureTextEditContainer.position.x + ForestEditToolbar.position.x + 50 SPC + ForestBrushPressureTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; diff --git a/Templates/BaseGame/game/tools/gui/postFxEditor.tscript b/Templates/BaseGame/game/tools/gui/postFxEditor.tscript index d16e9e12d..4437ef2ba 100644 --- a/Templates/BaseGame/game/tools/gui/postFxEditor.tscript +++ b/Templates/BaseGame/game/tools/gui/postFxEditor.tscript @@ -42,9 +42,14 @@ function PostFXEditor::editDefaultPostFXSettings( %this ) PostFXEditorActionButton.command = "PostFXManager::savePresetHandler($PostFXManager::defaultPreset);"; } +function PostEffectEditorInspector::refresh(%this) +{ + PostFXEditor.refresh(); +} function PostFXEditor::refresh(%this) { + %selectedItem = PostEffectEditorList.getSelectedRow(); PostEffectEditorList.clear(); %count = PostFXManager.Count(); @@ -55,6 +60,8 @@ function PostFXEditor::refresh(%this) if(%postEffect.isEnabled()) PostEffectEditorList.addRow( %i, %postEffect.getName() ); } + + PostEffectEditorList.setSelectedRow(%selectedItem); } function PostFXEditor::apply(%this) diff --git a/Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorToolbar.gui b/Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorToolbar.gui index 0f0236a7f..cbdb3e527 100644 --- a/Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorToolbar.gui +++ b/Templates/BaseGame/game/tools/meshRoadEditor/meshRoadEditorToolbar.gui @@ -302,8 +302,8 @@ new GuiMouseEventCtrl(MeshRoadDefaultWidthSliderCtrlContainer, EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(MeshRoadDefaultWidthTextEditContainer.position) + firstWord(MeshRoadEditorToolbar.position) + 10 SPC - (getWord(MeshRoadDefaultWidthTextEditContainer, 1)) + 25; + position = MeshRoadDefaultWidthTextEditContainer.position.x + MeshRoadEditorToolbar.position.x + 50 SPC + MeshRoadDefaultWidthTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -331,8 +331,8 @@ new GuiMouseEventCtrl(MeshRoadDefaultDepthSliderCtrlContainer, EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(MeshRoadDefaultDepthTextEditContainer.position) + firstWord(MeshRoadEditorToolbar.position) + 10 SPC - (getWord(MeshRoadDefaultDepthTextEditContainer, 1)) + 25; + position = MeshRoadDefaultDepthTextEditContainer.position.x + MeshRoadEditorToolbar.position.x + 50 SPC + MeshRoadDefaultDepthTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; diff --git a/Templates/BaseGame/game/tools/riverEditor/RiverEditorToolbar.gui b/Templates/BaseGame/game/tools/riverEditor/RiverEditorToolbar.gui index 42229f4b1..1ed4fb358 100644 --- a/Templates/BaseGame/game/tools/riverEditor/RiverEditorToolbar.gui +++ b/Templates/BaseGame/game/tools/riverEditor/RiverEditorToolbar.gui @@ -280,8 +280,8 @@ new GuiMouseEventCtrl(RiverDefaultWidthSliderCtrlContainer, EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(RiverDefaultWidthTextEditContainer.position) + firstWord(RiverEditorToolbar.position) + 10 SPC - (getWord(RiverDefaultWidthTextEditContainer, 1)) + 25; + position = RiverDefaultWidthTextEditContainer.position.x + RiverEditorToolbar.position.x + 50 SPC + RiverDefaultWidthTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -309,8 +309,8 @@ new GuiMouseEventCtrl(RiverDefaultDepthSliderCtrlContainer, EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(RiverDefaultDepthTextEditContainer.position) + firstWord(RiverEditorToolbar.position) + 10 SPC - (getWord(RiverDefaultDepthTextEditContainer, 1)) + 25; + position = RiverDefaultDepthTextEditContainer.position.x + RiverEditorToolbar.position.x + 50 SPC + RiverDefaultDepthTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; diff --git a/Templates/BaseGame/game/tools/roadEditor/RoadEditorToolbar.gui b/Templates/BaseGame/game/tools/roadEditor/RoadEditorToolbar.gui index 672a0d9be..aee198cf3 100644 --- a/Templates/BaseGame/game/tools/roadEditor/RoadEditorToolbar.gui +++ b/Templates/BaseGame/game/tools/roadEditor/RoadEditorToolbar.gui @@ -259,8 +259,8 @@ new GuiMouseEventCtrl(RoadDefaultWidthSliderCtrlContainer, EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(RoadDefaultWidthTextEditContainer.position) + firstWord(RoadEditorToolbar.position) + 10 SPC - (getWord(RoadDefaultWidthTextEditContainer, 1)) + 25; + position = RoadDefaultWidthTextEditContainer.position.x + RoadEditorToolbar.position.x + 50 SPC + RoadDefaultWidthTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/TerrainEditToolbar.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/TerrainEditToolbar.ed.gui index 63d8c010d..d1c98df34 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/TerrainEditToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/TerrainEditToolbar.ed.gui @@ -510,8 +510,8 @@ new GuiMouseEventCtrl(TerrainBrushSizeSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(TerrainBrushSizeTextEditContainer.position) + firstWord(EWTerrainEditToolbar.position)+11 SPC - (getWord(TerrainBrushSizeTextEditContainer, 1)) + 25; + position = TerrainBrushSizeTextEditContainer.position.x + EWTerrainEditToolbar.position.x + 50 SPC + TerrainBrushSizeTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -540,8 +540,8 @@ new GuiMouseEventCtrl(TerrainBrushPressureSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(TerrainBrushPressureTextEditContainer.position) + firstWord(EWTerrainEditToolbar.position) SPC - (getWord(TerrainBrushPressureTextEditContainer, 1)) + 25; + position = TerrainBrushPressureTextEditContainer.position.x + EWTerrainEditToolbar.position.x + 50 SPC + TerrainBrushPressureTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -570,8 +570,8 @@ new GuiMouseEventCtrl(TerrainBrushSoftnessSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(TerrainBrushSoftnessTextEditContainer.position) + firstWord(EWTerrainEditToolbar.position) SPC - (getWord(TerrainBrushSoftnessTextEditContainer, 1)) + 25; + position = TerrainBrushSoftnessTextEditContainer.position.x + EWTerrainEditToolbar.position.x + 50 SPC + TerrainBrushSoftnessTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -600,8 +600,8 @@ new GuiMouseEventCtrl(TerrainSetHeightSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(TerrainSetHeightTextEditContainer.position) + firstWord(EWTerrainEditToolbar.position) SPC - (getWord(TerrainSetHeightTextEditContainer, 1)) + 25; + position = TerrainSetHeightTextEditContainer.position.x + EWTerrainEditToolbar.position.x SPC + TerrainSetHeightTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/TerrainPainterToolbar.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/TerrainPainterToolbar.ed.gui index 596ef9b7e..73b0d6e73 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/TerrainPainterToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/TerrainPainterToolbar.ed.gui @@ -222,7 +222,7 @@ $guiContent = new GuiControl(EWTerrainPainterToolbar,EditorGuiGroup) { Profile = "ToolsGuiDefaultProfile"; HorizSizing = "right"; VertSizing = "bottom"; - Position = "222 5"; + Position = "245 5"; Extent = "256 50"; MinExtent = "8 2"; canSave = "1"; @@ -382,7 +382,7 @@ $guiContent = new GuiControl(EWTerrainPainterToolbar,EditorGuiGroup) { Profile = "ToolsGuiTransparentProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = "480 5"; + position = "490 5"; Extent = "120 50"; MinExtent = "8 2"; canSave = "1"; @@ -524,8 +524,8 @@ new GuiMouseEventCtrl(PaintBrushSizeSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(PaintBrushSizeTextEditContainer.position) + firstWord(EWTerrainPainterToolbar.position)+11 SPC - (getWord(PaintBrushSizeTextEditContainer, 1)) + 25; + position = PaintBrushSizeTextEditContainer.position.x + EWTerrainPainterToolbar.position.x + 50 SPC + PaintBrushSizeTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -554,8 +554,8 @@ new GuiMouseEventCtrl(PaintBrushSlopeMinContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(PaintBrushSlopeControl.position) + firstWord(EWTerrainPainterToolbar.position)+firstWord(PaintBrushSlopeControl->SlopeMinAngle.position) - 40 SPC - (getWord(PaintBrushSlopeControl, 1)) + 25; + position = PaintBrushSlopeControl.position.x + EWTerrainPainterToolbar.position.x + PaintBrushSlopeControl->SlopeMinAngle.position.x - 40 SPC + PaintBrushSlopeControl.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -589,8 +589,8 @@ new GuiMouseEventCtrl(PaintBrushSlopeMaxContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(PaintBrushSlopeControl.position) + firstWord(EWTerrainPainterToolbar.position)+firstWord(PaintBrushSlopeControl->SlopeMaxAngle.position) - 40 SPC - (getWord(PaintBrushSlopeControl, 1)) + 25; + position = PaintBrushSlopeControl.position.x + EWTerrainPainterToolbar.position.x + PaintBrushSlopeControl->SlopeMaxAngle.position.x - 40 SPC + PaintBrushSlopeControl.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -629,8 +629,8 @@ new GuiMouseEventCtrl(PaintBrushPressureSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(PaintBrushPressureTextEditContainer.position) + firstWord(EWTerrainPainterToolbar.position) SPC - (getWord(PaintBrushPressureTextEditContainer, 1)) + 25; + position = PaintBrushPressureTextEditContainer.position.x + EWTerrainPainterToolbar.position.x + 50 SPC + PaintBrushPressureTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; @@ -659,8 +659,8 @@ new GuiMouseEventCtrl(PaintBrushSoftnessSliderCtrlContainer,EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(PaintBrushSoftnessTextEditContainer.position) + firstWord(EWTerrainPainterToolbar.position) SPC - (getWord(PaintBrushSoftnessTextEditContainer, 1)) + 25; + position = PaintBrushSoftnessTextEditContainer.position.x + EWTerrainPainterToolbar.position.x + 50 SPC + PaintBrushSoftnessTextEditContainer.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui index df639add2..d56c775c2 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui @@ -684,8 +684,8 @@ new GuiMouseEventCtrl(softSnapSizeSliderCtrlContainer, EditorGuiGroup) { Profile = "ToolsGuiSliderBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; - position = firstWord(EWorldEditorToolbar-->softSnapSizeTextEdit.getGlobalPosition()) - 12 SPC - (getWord(EWorldEditorToolbar-->softSnapSizeTextEdit.getGlobalPosition(), 1)) + 18; + position = EWorldEditorToolbar.position.x + EWorldEditorToolbar-->softSnapSizeTextEditContainer.position.x + 50 SPC + EWorldEditorToolbar-->softSnapSizeTextEdit.position.y + 50; Extent = "112 20"; MinExtent = "8 2"; canSave = "1"; diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript b/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript index 58686e20e..8093822bc 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript @@ -734,7 +734,7 @@ function EditorGui::addCameraBookmarkByGui( %this ) // look for a NewCamera name to grab for(%i = 0; ; %i++){ %name = "NewCamera_" @ %i; - if( !CameraBookmarks.findObjectByInternalName(%name) ){ + if( !isObject(CameraBookmarks) || !CameraBookmarks.findObjectByInternalName(%name) ){ break; } } @@ -1340,7 +1340,9 @@ function CameraTypesDropdownToggle() function VisibilityDropdownToggle() { - EditorVisibilityOptions.showPopup(Canvas); + %pos = visibilityToggleBtn.getGlobalPosition(); + %pos.y += visibilityToggleBtn.extent.y; + EditorVisibilityOptions.showPopup(Canvas, %pos.x, %pos.y); } function CameraTypesDropdownDecoy::onMouseLeave() diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.tscript b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.tscript index c555d9138..8f5c6bd52 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.tscript +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.tscript @@ -436,3 +436,55 @@ function toggleVolumeViz(%vizName) EVisibilityVolumeOptions.checkItem(7, $SFXSpace::isRenderable); } } + +// +// +function togglePlayerCollisionViz() +{ + $Player::renderCollision = !$Player::renderCollision; + EVisibilityDebugRenderOptions.checkItem(0, $Player::renderCollision); +} + +function toggleTerrainDebugViz() +{ + $TerrainBlock::debugRender = !$TerrainBlock::debugRender; + EVisibilityDebugRenderOptions.checkItem(1, $TerrainBlock::debugRender); +} + +function toggleDecalsDebugViz() +{ + $Decals::debugRender = !$Decals::debugRender; + EVisibilityDebugRenderOptions.checkItem(2, $Decals::debugRender); +} + +function toggleBoundingBoxesViz() +{ + $Scene::renderBoundingBoxes = !$Scene::renderBoundingBoxes; + EVisibilityDebugRenderOptions.checkItem(3, $Scene::renderBoundingBoxes); +} + +// +// +function toggleWireframeViz() +{ + $gfx::wireframe = !$gfx::wireframe; + EditorVisibilityOptions.checkItem(3, $gfx::wireframe); +} + +function toggleFrustumLockViz() +{ + $Scene::lockCull = !$Scene::lockCull; + EditorVisibilityOptions.checkItem(4, $Scene::lockCull); +} + +function toggleZoneCulling() +{ + $Scene::disableZoneCulling = !$Scene::disableZoneCulling; + EditorVisibilityOptions.checkItem(7, $Scene::disableZoneCulling); +} + +function toggleTerrainCulling() +{ + $Scene::disableTerrainOcclusion = !$Scene::disableTerrainOcclusion; + EditorVisibilityOptions.checkItem(8, $Scene::disableTerrainOcclusion); +} \ No newline at end of file diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/visibilityLayer.ed.tscript b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/visibilityLayer.ed.tscript index 5c0b467be..1d8d9e2f0 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/visibilityLayer.ed.tscript +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/visibilityLayer.ed.tscript @@ -98,15 +98,17 @@ function setupEditorVisibilityMenu() superClass = "MenuBuilder"; class = "EditorWorldMenu"; - item[ 0 ] = "Show Player Collision" TAB "" TAB "$Player::renderCollision = !$Player::renderCollision;"; - item[ 1 ] = "Show Terrain Debug" TAB "" TAB "$TerrainBlock::debugRender = !$TerrainBlock::debugRender;"; - item[ 2 ] = "Show Decals Debug" TAB "" TAB "$Decals::debugRender = !$Decals::debugRender;"; - item[ 3 ] = "Show Bounding Boxes" TAB "" TAB "$Scene::renderBoundingBoxes = !$Scene::renderBoundingBoxes;"; + item[ 0 ] = "Show Player Collision" TAB "" TAB "togglePlayerCollisionViz();"; + item[ 1 ] = "Show Terrain Debug" TAB "" TAB "toggleTerrainDebugViz();"; + item[ 2 ] = "Show Decals Debug" TAB "" TAB "toggleDecalsDebugViz();"; + item[ 3 ] = "Show Bounding Boxes" TAB "" TAB "toggleBoundingBoxesViz();"; item[ 4 ] = "Show Physics World" TAB "" TAB "togglePhysicsDebugViz();"; item[ 5 ] = "Show Texel Density" TAB "" TAB "toggleTexelDensityViz();"; }; - %debugRenderpopup.enableItem(4, false); + if(!physicsPluginPresent()) + %debugRenderpopup.enableItem(4, false); + %debugRenderpopup.enableItem(5, false); // @@ -231,12 +233,12 @@ function setupEditorVisibilityMenu() item[ 0 ] = "Volumes Visibility" TAB EVisibilityVolumeOptions; item[ 1 ] = "Debug Rendering" TAB EVisibilityDebugRenderOptions; item[ 2 ] = "-" TAB "" TAB ""; - item[ 3 ] = "Wireframe" TAB "" TAB "$gfx::wireframe = !$gfx::wireframe;"; - item[ 4 ] = "Frustum Lock" TAB "" TAB "$Scene::lockCull = !$Scene::lockCull;"; + item[ 3 ] = "Wireframe" TAB "" TAB "toggleWireframeViz();"; + item[ 4 ] = "Frustum Lock" TAB "" TAB "toggleFrustumLockViz();"; item[ 5 ] = "Colorblindness" TAB EVisibilityColorblindnessOptions; item[ 6 ] = "-" TAB "" TAB ""; - item[ 7 ] = "Disable Zone Culling" TAB "" TAB "$Scene::disableZoneCulling = !$Scene::disableZoneCulling;"; - item[ 8 ] = "Disable Terrain Culling" TAB "" TAB "$Scene::disableTerrainOcclusion = !$Scene::disableTerrainOcclusion;"; + item[ 7 ] = "Disable Zone Culling" TAB "" TAB "toggleZoneCulling();"; + item[ 8 ] = "Disable Terrain Culling" TAB "" TAB "toggleTerrainCulling();"; item[ 9 ] = "-" TAB "" TAB ""; item[ 10 ] = "Lighting Modes" TAB EVisibilityLightingModesOptions; item[ 11 ] = "Lights" TAB EVisibilityLightsOptions; @@ -383,14 +385,17 @@ function EVisibility::addClassOptions( %this ) } } -function togglePhysicsDebugViz( %enable ) +function togglePhysicsDebugViz( ) { - $PhysicsWorld::render = %enable; + $PhysicsWorld::render = !$PhysicsWorld::render; if(physicsPluginPresent()) { - physicsDebugDraw(%enable); + physicsDebugDraw($PhysicsWorld::render); } + + EVisibilityDebugRenderOptions.checkItem(4, $PhysicsWorld::render); + } function disableVisualizers()