diff --git a/editor/mainwindow.cpp b/editor/mainwindow.cpp index 2990cb1..dcfa2b8 100644 --- a/editor/mainwindow.cpp +++ b/editor/mainwindow.cpp @@ -35,6 +35,8 @@ bool simulationPlaying = false; +bool worldSpaceTransforms = false; + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) @@ -102,6 +104,16 @@ MainWindow::MainWindow(QWidget *parent) } }); + connect(ui->actionToggleSpace, &QAction::triggered, this, [&]() { + worldSpaceTransforms = !worldSpaceTransforms; + updateToolbars(); + if (worldSpaceTransforms) { + ui->actionToggleSpace->setText("W"); + } else { + ui->actionToggleSpace->setText("L"); + } + }); + connect(ui->actionSave, &QAction::triggered, this, [&]() { std::optional path; if (!dataModel->HasFile()) @@ -305,8 +317,11 @@ void MainWindow::updateToolbars() { ui->actionGridSnapOff->setChecked(snappingMode == GridSnappingMode::SNAP_OFF); // editorToolHandles->worldMode = false; - if (selectedTool == SelectedTool::MOVE) editorToolHandles->worldMode = true; - if (selectedTool == SelectedTool::SCALE) editorToolHandles->worldMode = false; + if (selectedTool == SelectedTool::SCALE) + editorToolHandles->worldMode = false; + else + editorToolHandles->worldMode = worldSpaceTransforms; + editorToolHandles->active = selectedTool != SelectedTool::SELECT; editorToolHandles->handlesType = selectedTool == SelectedTool::MOVE ? HandlesType::MoveHandles diff --git a/editor/mainwindow.ui b/editor/mainwindow.ui index 13f5919..a12e229 100644 --- a/editor/mainwindow.ui +++ b/editor/mainwindow.ui @@ -124,6 +124,7 @@ + @@ -465,6 +466,20 @@ QAction::MenuRole::QuitRole + + + L + + + Switch between local and world space transformations + + + Ctrl+L + + + QAction::MenuRole::NoRole + +