From 7664b63071e635eb2ef65c166e4dd90ba5d24658 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sun, 22 Sep 2024 14:34:07 -0500 Subject: [PATCH] snap syncing for world and convex shape editors --- .../worldEditor/guiConvexShapeEditorCtrl.cpp | 19 +++++++++++++------ .../worldEditor/guiConvexShapeEditorCtrl.h | 2 ++ .../convexEditor/convexEditorGui.tscript | 12 +++++++++++- .../convexEditor/convexEditorToolbar.ed.gui | 2 +- .../game/tools/convexEditor/main.tscript | 4 ++++ .../worldEditor/scripts/EditorGui.ed.tscript | 4 ++++ 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.cpp b/Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.cpp index c37aff66b..9c1a83d87 100644 --- a/Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.cpp +++ b/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" diff --git a/Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.h b/Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.h index 3a6c99577..f7925c8ee 100644 --- a/Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.h +++ b/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(); diff --git a/Templates/BaseGame/game/tools/convexEditor/convexEditorGui.tscript b/Templates/BaseGame/game/tools/convexEditor/convexEditorGui.tscript index 9e845a311..72b3b13a8 100644 --- a/Templates/BaseGame/game/tools/convexEditor/convexEditorGui.tscript +++ b/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()); diff --git a/Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui b/Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui index e19f4c661..ed4517d50 100644 --- a/Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui +++ b/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"; diff --git a/Templates/BaseGame/game/tools/convexEditor/main.tscript b/Templates/BaseGame/game/tools/convexEditor/main.tscript index 86e09c7f6..097c07d04 100644 --- a/Templates/BaseGame/game/tools/convexEditor/main.tscript +++ b/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 ); } diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript b/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript index f30b64f12..b6654c34a 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/EditorGui.ed.tscript @@ -1019,6 +1019,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); }