From 80473e10b5fd4fe492189135c06b1e211020fc3d Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Wed, 23 Jul 2025 15:08:29 +0100 Subject: [PATCH] added first tool Added the tileTool with the ability to select tiles Abstraction layer for navmesh tools created. --- Engine/source/navigation/guiNavEditorCtrl.cpp | 100 +++++++------- Engine/source/navigation/guiNavEditorCtrl.h | 15 ++- Engine/source/navigation/navMesh.cpp | 2 +- Engine/source/navigation/navMesh.h | 3 +- Engine/source/navigation/navMeshTool.cpp | 39 ++++++ Engine/source/navigation/navMeshTool.h | 51 ++++++++ .../navigation/navMeshTools/tileTool.cpp | 123 ++++++++++++++++++ .../source/navigation/navMeshTools/tileTool.h | 31 +++++ .../game/tools/navEditor/NavEditorGui.gui | 2 +- .../game/tools/navEditor/main.tscript | 23 +++- .../game/tools/navEditor/navEditor.tscript | 38 ++++++ Tools/CMake/modules/navigation.cmake | 2 +- 12 files changed, 363 insertions(+), 66 deletions(-) create mode 100644 Engine/source/navigation/navMeshTool.cpp create mode 100644 Engine/source/navigation/navMeshTool.h create mode 100644 Engine/source/navigation/navMeshTools/tileTool.cpp create mode 100644 Engine/source/navigation/navMeshTools/tileTool.h diff --git a/Engine/source/navigation/guiNavEditorCtrl.cpp b/Engine/source/navigation/guiNavEditorCtrl.cpp index 2981a50e0..e3657960f 100644 --- a/Engine/source/navigation/guiNavEditorCtrl.cpp +++ b/Engine/source/navigation/guiNavEditorCtrl.cpp @@ -51,7 +51,6 @@ ConsoleDocClass(GuiNavEditorCtrl, const String GuiNavEditorCtrl::mSelectMode = "SelectMode"; const String GuiNavEditorCtrl::mLinkMode = "LinkMode"; const String GuiNavEditorCtrl::mCoverMode = "CoverMode"; -const String GuiNavEditorCtrl::mTileMode = "TileMode"; const String GuiNavEditorCtrl::mTestMode = "TestMode"; GuiNavEditorCtrl::GuiNavEditorCtrl() @@ -60,7 +59,6 @@ GuiNavEditorCtrl::GuiNavEditorCtrl() mIsDirty = false; mStartDragMousePoint = InvalidMousePoint; mMesh = NULL; - mCurTile = mTile = -1; mPlayer = mCurPlayer = NULL; mSpawnClass = mSpawnDatablock = ""; mLinkStart = Point3F::Max; @@ -158,7 +156,6 @@ void GuiNavEditorCtrl::deselect() mMesh->setSelected(false); mMesh = NULL; mPlayer = mCurPlayer = NULL; - mCurTile = mTile = -1; mLinkStart = Point3F::Max; mLink = mCurLink = -1; } @@ -200,18 +197,6 @@ DefineEngineMethod(GuiNavEditorCtrl, setLinkFlags, void, (U32 flags),, object->setLinkFlags(LinkData(flags)); } -void GuiNavEditorCtrl::buildTile() -{ - if(!mMesh.isNull() && mTile != -1) - mMesh->buildTile(mTile); -} - -DefineEngineMethod(GuiNavEditorCtrl, buildTile, void, (),, - "@brief Build the currently selected tile.") -{ - object->buildTile(); -} - void GuiNavEditorCtrl::spawnPlayer(const Point3F &pos) { SceneObject *obj = (SceneObject*)Sim::spawnObject(mSpawnClass, mSpawnDatablock); @@ -313,13 +298,18 @@ bool GuiNavEditorCtrl::get3DCentre(Point3F &pos) void GuiNavEditorCtrl::on3DMouseDown(const Gui3DMouseEvent & event) { + if (!mMesh) + return; + mGizmo->on3DMouseDown(event); - if(!isFirstResponder()) - setFirstResponder(); + if (mTool) + mTool->on3DMouseDown(event); mouseLock(); + return; + // Construct a LineSegment from the camera position to 1000 meters away in // the direction clicked. // If that segment hits the terrain, truncate the ray to only be that length. @@ -378,15 +368,6 @@ void GuiNavEditorCtrl::on3DMouseDown(const Gui3DMouseEvent & event) } } - if(mMode == mTileMode && !mMesh.isNull()) - { - if(gServerContainer.castRay(startPnt, endPnt, StaticShapeObjectType, &ri)) - { - mTile = mMesh->getTile(ri.point); - mMesh->renderTileData(dd, mTile); - } - } - if(mMode == mTestMode) { // Spawn new character @@ -460,14 +441,28 @@ void GuiNavEditorCtrl::on3DMouseDown(const Gui3DMouseEvent & event) void GuiNavEditorCtrl::on3DMouseUp(const Gui3DMouseEvent & event) { + if (!mMesh) + return; + // Keep the Gizmo up to date. mGizmo->on3DMouseUp(event); + if (mTool) + mTool->on3DMouseUp(event); + mouseUnlock(); } void GuiNavEditorCtrl::on3DMouseMove(const Gui3DMouseEvent & event) { + if (!mMesh) + return; + + if (mTool) + mTool->on3DMouseMove(event); + + return; + //if(mSelRiver != NULL && mSelNode != -1) //mGizmo->on3DMouseMove(event); @@ -505,15 +500,6 @@ void GuiNavEditorCtrl::on3DMouseMove(const Gui3DMouseEvent & event) } } - // Select a tile from our current NavMesh. - if(mMode == mTileMode && !mMesh.isNull()) - { - if(gServerContainer.castRay(startPnt, endPnt, StaticObjectType, &ri)) - mCurTile = mMesh->getTile(ri.point); - else - mCurTile = -1; - } - if(mMode == mTestMode) { if(gServerContainer.castRay(startPnt, endPnt, PlayerObjectType | VehicleObjectType, &ri)) @@ -548,6 +534,11 @@ void GuiNavEditorCtrl::on3DMouseLeave(const Gui3DMouseEvent & event) void GuiNavEditorCtrl::updateGuiInfo() { + if (mTool) + { + if (mTool->updateGuiInfo()) + return; + } } void GuiNavEditorCtrl::onRender(Point2I offset, const RectI &updateRect) @@ -591,6 +582,9 @@ void GuiNavEditorCtrl::renderScene(const RectI & updateRect) Point3F camPos; mat.getColumn(3,&camPos); + if (mTool) + mTool->onRender3D(); + if(mMode == mLinkMode) { if(mLinkStart != Point3F::Max) @@ -605,19 +599,6 @@ void GuiNavEditorCtrl::renderScene(const RectI & updateRect) } } - if(mMode == mTileMode && !mMesh.isNull()) - { - renderBoxOutline(mMesh->getTileBox(mCurTile), ColorI::BLUE); - renderBoxOutline(mMesh->getTileBox(mTile), ColorI::GREEN); - /*if (Con::getBoolVariable("$Nav::Editor::renderVoxels", false)) dd.renderGroup(0); - if (Con::getBoolVariable("$Nav::Editor::renderInput", false)) - { - dd.depthMask(false); - dd.renderGroup(1); - dd.depthMask(true); - }*/ - } - if(mMode == mTestMode) { if(!mCurPlayer.isNull()) @@ -689,6 +670,29 @@ void GuiNavEditorCtrl::_prepRenderImage(SceneManager* sceneGraph, const SceneRen }*/ } +void GuiNavEditorCtrl::setActiveTool(NavMeshTool* tool) +{ + if (mTool) + { + mTool->onDeactivated(); + } + + mTool = tool; + + if (mTool) + { + mTool->setActiveNavMesh(mMesh); + mTool->onActivated(mLastEvent); + } +} + +DefineEngineMethod(GuiNavEditorCtrl, setActiveTool, void, (const char* toolName), , "( NavMeshTool tool )") +{ + NavMeshTool* tool = dynamic_cast(Sim::findObject(toolName)); + object->setActiveTool(tool); +} + + DefineEngineMethod(GuiNavEditorCtrl, getMode, const char*, (), , "") { return object->getMode(); diff --git a/Engine/source/navigation/guiNavEditorCtrl.h b/Engine/source/navigation/guiNavEditorCtrl.h index c5d2f1b5a..f9cca7b49 100644 --- a/Engine/source/navigation/guiNavEditorCtrl.h +++ b/Engine/source/navigation/guiNavEditorCtrl.h @@ -34,6 +34,10 @@ #include "gui/worldEditor/gizmo.h" #endif +#ifndef _NAVMESH_TOOL_H_ +#include "navigation/navMeshTool.h" +#endif + #include "navMesh.h" #include "T3D/aiPlayer.h" @@ -51,7 +55,6 @@ public: static const String mSelectMode; static const String mLinkMode; static const String mCoverMode; - static const String mTileMode; static const String mTestMode; GuiNavEditorCtrl(); @@ -110,12 +113,10 @@ public: void deleteLink(); void setLinkFlags(const LinkData &d); - - void buildTile(); - void spawnPlayer(const Point3F &pos); /// @} + void setActiveTool(NavMeshTool* tool); protected: @@ -133,6 +134,9 @@ protected: /// Currently-selected NavMesh. SimObjectPtr mMesh; + /// The active tool in used by the editor. + SimObjectPtr mTool; + /// @name Link mode /// @{ @@ -145,9 +149,6 @@ protected: /// @name Tile mode /// @{ - S32 mCurTile; - S32 mTile; - duDebugDrawTorque dd; /// @} diff --git a/Engine/source/navigation/navMesh.cpp b/Engine/source/navigation/navMesh.cpp index ca3263761..7dccffce6 100644 --- a/Engine/source/navigation/navMesh.cpp +++ b/Engine/source/navigation/navMesh.cpp @@ -335,7 +335,7 @@ void NavMesh::initPersistFields() "Sets the sampling distance to use when generating the detail mesh."); addFieldV("detailSampleError", TypeRangedF32, Offset(mDetailSampleMaxError, NavMesh), &CommonValidators::PositiveFloat, "The maximum distance the detail mesh surface should deviate from heightfield data."); - addFieldV("maxEdgeLen", TypeRangedS32, Offset(mDetailSampleDist, NavMesh), &CommonValidators::PositiveInt, + addFieldV("maxEdgeLen", TypeRangedS32, Offset(mMaxEdgeLen, NavMesh), &CommonValidators::PositiveInt, "The maximum allowed length for contour edges along the border of the mesh."); addFieldV("simplificationError", TypeRangedF32, Offset(mMaxSimplificationError, NavMesh), &CommonValidators::PositiveFloat, "The maximum distance a simplfied contour's border edges should deviate from the original raw contour."); diff --git a/Engine/source/navigation/navMesh.h b/Engine/source/navigation/navMesh.h index 20f480e22..16d08db65 100644 --- a/Engine/source/navigation/navMesh.h +++ b/Engine/source/navigation/navMesh.h @@ -102,6 +102,7 @@ public: U32 mMergeRegionArea; F32 mTileSize; U32 mMaxPolysPerTile; + duDebugDrawTorque mDbgDraw; /// @} /// @name Water @@ -367,8 +368,6 @@ private: /// @name Rendering /// @{ - duDebugDrawTorque mDbgDraw; - void renderToDrawer(); /// @} diff --git a/Engine/source/navigation/navMeshTool.cpp b/Engine/source/navigation/navMeshTool.cpp new file mode 100644 index 000000000..5fa05b663 --- /dev/null +++ b/Engine/source/navigation/navMeshTool.cpp @@ -0,0 +1,39 @@ + +#include "platform/platform.h" +#include "navigation/navMeshTool.h" + +#include "util/undo.h" +#include "math/mMath.h" +#include "math/mathUtils.h" + +IMPLEMENT_CONOBJECT(NavMeshTool); + +ConsoleDocClass(NavMeshTool, + "@brief Base class for NavMesh Editor specific tools\n\n" + "Editor use only.\n\n" + "@internal" +); + +void NavMeshTool::_submitUndo(UndoAction* action) +{ + AssertFatal(action, "NavMeshTool::_submitUndo() - No undo action!"); + + // Grab the mission editor undo manager. + UndoManager* undoMan = NULL; + if (!Sim::findObject("EUndoManager", undoMan)) + { + Con::errorf("NavMeshTool::_submitUndo() - EUndoManager not found!"); + return; + } + + undoMan->addAction(action); +} + +NavMeshTool::NavMeshTool() + : mNavMesh(NULL) +{ +} + +NavMeshTool::~NavMeshTool() +{ +} diff --git a/Engine/source/navigation/navMeshTool.h b/Engine/source/navigation/navMeshTool.h new file mode 100644 index 000000000..d03f12503 --- /dev/null +++ b/Engine/source/navigation/navMeshTool.h @@ -0,0 +1,51 @@ +#pragma once +#ifndef _NAVMESH_TOOL_H_ +#define _NAVMESH_TOOL_H_ + +#ifndef _SIMBASE_H_ +#include "console/simBase.h" +#endif +#ifndef _GUITYPES_H_ +#include "gui/core/guiTypes.h" +#endif +#ifndef _NAVMESH_H_ +#include "navigation/navMesh.h" +#endif + +class UndoAction; + +class NavMeshTool : public SimObject +{ + typedef SimObject Parent; +protected: + SimObjectPtr mNavMesh; + void _submitUndo(UndoAction* action); + +public: + + NavMeshTool(); + virtual ~NavMeshTool(); + + DECLARE_CONOBJECT(NavMeshTool); + + virtual void setActiveNavMesh(NavMesh* nav_mesh) { mNavMesh = nav_mesh; } + + virtual void onActivated(const Gui3DMouseEvent& lastEvent) {} + virtual void onDeactivated() {} + + virtual void on3DMouseDown(const Gui3DMouseEvent& evt) {} + virtual void on3DMouseUp(const Gui3DMouseEvent& evt) {} + virtual void on3DMouseMove(const Gui3DMouseEvent& evt) {} + virtual void on3DMouseDragged(const Gui3DMouseEvent& evt) {} + virtual void on3DMouseEnter(const Gui3DMouseEvent& evt) {} + virtual void on3DMouseLeave(const Gui3DMouseEvent& evt) {} + virtual bool onMouseWheel(const GuiEvent& evt) { return false; } + virtual void onRender3D() {} + virtual void onRender2D() {} + virtual void updateGizmo() {} + virtual bool updateGuiInfo() { return false; } + virtual void onUndoAction() {} + +}; + +#endif // !_NAVMESH_TOOL_H_ diff --git a/Engine/source/navigation/navMeshTools/tileTool.cpp b/Engine/source/navigation/navMeshTools/tileTool.cpp new file mode 100644 index 000000000..5cd16547a --- /dev/null +++ b/Engine/source/navigation/navMeshTools/tileTool.cpp @@ -0,0 +1,123 @@ +#include "TileTool.h" +#include "navigation/guiNavEditorCtrl.h" +#include "console/consoleTypes.h" +#include "gfx/gfxDrawUtil.h" +#include "scene/sceneManager.h" +#include "math/mathUtils.h" + +IMPLEMENT_CONOBJECT(TileTool); + +static void renderBoxOutline(const Box3F& box, const ColorI& col) +{ + if (box != Box3F::Invalid) + { + GFXStateBlockDesc desc; + desc.setCullMode(GFXCullNone); + desc.setFillModeSolid(); + desc.setZReadWrite(true, false); + desc.setBlend(true); + GFX->getDrawUtil()->drawCube(desc, box, ColorI(col, 20)); + desc.setFillModeWireframe(); + desc.setBlend(false); + GFX->getDrawUtil()->drawCube(desc, box, ColorI(col, 255)); + } +} + +void TileTool::onActivated(const Gui3DMouseEvent& lastEvent) +{ + Con::executef(this, "onActivated"); +} + +void TileTool::onDeactivated() +{ + Con::executef(this, "onDeactivated"); +} + +void TileTool::on3DMouseDown(const Gui3DMouseEvent& evt) +{ + if (mNavMesh.isNull()) + return; + + Point3F start = evt.pos; + Point3F end = evt.pos + evt.vec * 1000.0f; + + RayInfo ri; + if (gServerContainer.castRay(start, end, StaticObjectType, &ri)) + { + mSelTile = mNavMesh->getTile(ri.point); + if (mSelTile != -1) + { + mNavMesh->renderTileData(mNavMesh->mDbgDraw, mSelTile); + //mNavMesh->buildTile(tile); // Immediate rebuild + } + } +} + +void TileTool::on3DMouseMove(const Gui3DMouseEvent& evt) +{ + if (mNavMesh.isNull()) + return; + + Point3F startPnt = evt.pos; + Point3F endPnt = evt.pos + evt.vec * 1000.0f; + + RayInfo ri; + + if (gServerContainer.castRay(startPnt, endPnt, StaticObjectType, &ri)) + mCurTile = mNavMesh->getTile(ri.point); + else + mCurTile = -1; +} + +void TileTool::onRender3D() +{ + if (mNavMesh.isNull()) + return; + + // Optional: Draw all tile bounds as overlays + //mNavMesh->renderTilesOverlay(DebugDraw::get()->getDD()); + + if(mCurTile != -1) + renderBoxOutline(mNavMesh->getTileBox(mCurTile), ColorI::BLUE); + + if(mSelTile != -1) + renderBoxOutline(mNavMesh->getTileBox(mSelTile), ColorI::GREEN); +} + +void TileTool::buildTile() +{ + if (!mNavMesh.isNull() && mSelTile != -1) + mNavMesh->buildTile(mSelTile); +} + +bool TileTool::updateGuiInfo() +{ + GuiTextCtrl* statusbar; + Sim::findObject("EWorldEditorStatusBarInfo", statusbar); + + GuiTextCtrl* selectionBar; + Sim::findObject("EWorldEditorStatusBarSelection", selectionBar); + + String text; + + text = "LMB To select NavMesh Tile"; + + if (statusbar) + statusbar->setText(text); + + if (mSelTile != -1) + text = String::ToString("Selected Tile: %d", mSelTile); + else + text = ""; + + if (selectionBar) + selectionBar->setText(text); + + return true; +} + +DefineEngineMethod(TileTool, buildTile, void, (), , + "@brief Build the currently selected tile.") +{ + return object->buildTile(); +} diff --git a/Engine/source/navigation/navMeshTools/tileTool.h b/Engine/source/navigation/navMeshTools/tileTool.h new file mode 100644 index 000000000..a973e7bad --- /dev/null +++ b/Engine/source/navigation/navMeshTools/tileTool.h @@ -0,0 +1,31 @@ +#ifndef _TILETOOL_H_ +#define _TILETOOL_H_ + + +#ifndef _NAVMESH_TOOL_H_ +#include "navigation/navMeshTool.h" +#endif + +class TileTool : public NavMeshTool +{ + typedef NavMeshTool Parent; + S32 mCurTile; + S32 mSelTile; +public: + DECLARE_CONOBJECT(TileTool); + + TileTool() { mCurTile = -1; mSelTile = -1; } + virtual ~TileTool() {} + + void onActivated(const Gui3DMouseEvent& evt) override; + void onDeactivated() override; + + void on3DMouseDown(const Gui3DMouseEvent& evt) override; + void on3DMouseMove(const Gui3DMouseEvent& evt) override; + void onRender3D() override; + void buildTile(); + + bool updateGuiInfo() override; +}; + +#endif diff --git a/Templates/BaseGame/game/tools/navEditor/NavEditorGui.gui b/Templates/BaseGame/game/tools/navEditor/NavEditorGui.gui index 18646fe1a..08e63d5a5 100644 --- a/Templates/BaseGame/game/tools/navEditor/NavEditorGui.gui +++ b/Templates/BaseGame/game/tools/navEditor/NavEditorGui.gui @@ -422,7 +422,7 @@ $guiContent = new GuiNavEditorCtrl(NavEditorGui, EditorGuiGroup) { VertSizing = "bottom"; Extent = "182 18"; text = "Rebuild tile"; - command = "NavEditorGui.buildTile();"; + command = "NavMeshTools->TileTool.buildTile();"; }; }; new GuiStackControl() diff --git a/Templates/BaseGame/game/tools/navEditor/main.tscript b/Templates/BaseGame/game/tools/navEditor/main.tscript index 3c2ef7aab..b8c7816ce 100644 --- a/Templates/BaseGame/game/tools/navEditor/main.tscript +++ b/Templates/BaseGame/game/tools/navEditor/main.tscript @@ -57,6 +57,16 @@ function initializeNavEditor() editorGui = NavEditorGui; }; + new SimSet(NavMeshTools) + { + new TileTool() + { + internalName = "TileTool"; + toolTip = "Tile selection tool"; + buttonImage = "ToolsModule:select_bounds_n_image"; + }; + }; + // Bind shortcuts for the nav editor. %map = new ActionMap(); %map.bindCmd(keyboard, "1", "ENavEditorSelectModeBtn.performClick();", ""); @@ -118,12 +128,13 @@ function EditorGui::SetNavPalletBar() EWToolsPaletteWindow.setActionMap(WorldEditorInspectorPlugin.map); //Adds a button to the pallete stack - //Name Icon Click Command Tooltip text Keybind - EWToolsPaletteWindow.addButton("ViewNavMesh", "ToolsModule:visibility_toggle_n_image", "NavEditorGui.prepSelectionMode();", "", "View NavMesh", "1"); - EWToolsPaletteWindow.addButton("LinkMode", "ToolsModule:nav_link_n_image", "NavEditorGui.setMode(\"LinkMode\");", "", "Create off-mesh links", "2"); - EWToolsPaletteWindow.addButton("CoverMode", "ToolsModule:nav_cover_n_image", "NavEditorGui.setMode(\"CoverMode\");", "", "Edit cover", "3"); - EWToolsPaletteWindow.addButton("TileMode", "ToolsModule:select_bounds_n_image", "NavEditorGui.setMode(\"TileMode\");", "", "View tiles", "4"); - EWToolsPaletteWindow.addButton("TestMode", "ToolsModule:3rd_person_camera_n_image", "NavEditorGui.setMode(\"TestMode\");", "", "Test pathfinding", "5"); + //Name Icon Click Command Tooltip text Keybind + EWToolsPaletteWindow.addButton("ViewNavMesh", "ToolsModule:visibility_toggle_n_image", "NavEditorGui.prepSelectionMode();", "", "View NavMesh", "1"); + // EWToolsPaletteWindow.addButton("LinkMode", "ToolsModule:nav_link_n_image", "NavEditorGui.setMode(\"LinkMode\");", "", "Create off-mesh links", "2"); + // EWToolsPaletteWindow.addButton("CoverMode", "ToolsModule:nav_cover_n_image", "NavEditorGui.setMode(\"CoverMode\");", "","Edit cover", "3"); + // EWToolsPaletteWindow.addButton("TileMode", "ToolsModule:select_bounds_n_image", "NavEditorGui.setMode(\"TileMode\");", "", "View tiles", "4"); + // EWToolsPaletteWindow.addButton("TestMode", "ToolsModule:3rd_person_camera_n_image", "NavEditorGui.setMode(\"TestMode\");", "", "Test pathfinding", "5"); + EWToolsPaletteWindow.addButton("TileMode", "ToolsModule:select_bounds_n_image", "NavEditorGui.setActiveTool(NavMeshTools->TileTool);" , "", "View and Edit Tiles", "4"); EWToolsPaletteWindow.refresh(); } diff --git a/Templates/BaseGame/game/tools/navEditor/navEditor.tscript b/Templates/BaseGame/game/tools/navEditor/navEditor.tscript index 1acbab8ef..667c5e9da 100644 --- a/Templates/BaseGame/game/tools/navEditor/navEditor.tscript +++ b/Templates/BaseGame/game/tools/navEditor/navEditor.tscript @@ -298,6 +298,44 @@ function NavEditorGui::showSidePanel() //------------------------------------------------------------------------------ +function TileTool::onActivated(%this) +{ + NavInspector.setVisible(false); + + %actions = NavEditorOptionsWindow->ActionsBox; + %actions->SelectActions.setVisible(false); + %actions->LinkActions.setVisible(false); + %actions->CoverActions.setVisible(false); + %actions->TileActions.setVisible(false); + %actions->TestActions.setVisible(false); + + %properties = NavEditorOptionsWindow->PropertiesBox; + %properties->LinkProperties.setVisible(false); + %properties->TileProperties.setVisible(false); + %properties->TestProperties.setVisible(false); + + %actions->TileActions.setVisible(true); + %properties->TileProperties.setVisible(true); +} + +function TileTool::onDeactivated(%this) +{ + NavInspector.setVisible(false); + + %actions = NavEditorOptionsWindow->ActionsBox; + %actions->SelectActions.setVisible(false); + %actions->LinkActions.setVisible(false); + %actions->CoverActions.setVisible(false); + %actions->TileActions.setVisible(false); + %actions->TestActions.setVisible(false); + + %properties = NavEditorOptionsWindow->PropertiesBox; + %properties->LinkProperties.setVisible(false); + %properties->TileProperties.setVisible(false); + %properties->TestProperties.setVisible(false); +} + + function NavEditorGui::onModeSet(%this, %mode) { // Callback when the nav editor changes mode. Set the appropriate dynamic diff --git a/Tools/CMake/modules/navigation.cmake b/Tools/CMake/modules/navigation.cmake index a76868107..e7dba5390 100644 --- a/Tools/CMake/modules/navigation.cmake +++ b/Tools/CMake/modules/navigation.cmake @@ -4,7 +4,7 @@ option(TORQUE_NAVIGATION "Enable Navigation module" ON) if(TORQUE_NAVIGATION) message("Enabling Navigation Module") - file(GLOB_RECURSE TORQUE_NAV_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/navigation/*.cpp" "${CMAKE_SOURCE_DIR}/Engine/source/navigation/*.h" ) + file(GLOB_RECURSE TORQUE_NAV_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/navigation/*.cpp" "${CMAKE_SOURCE_DIR}/Engine/source/navigation/*.h" "${CMAKE_SOURCE_DIR}/Engine/source/navigation/navMeshTools/*.cpp" "${CMAKE_SOURCE_DIR}/Engine/source/navMeshTools/navigation/*.h") set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_NAV_SOURCES}) set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} recast) set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} recast TORQUE_NAVIGATION_ENABLED)