From c93b6dca0ae6ee607a9c1fae5106a0ac24cef9ea Mon Sep 17 00:00:00 2001 From: Dave Corley Date: Fri, 5 Jan 2024 19:36:02 -0600 Subject: [PATCH 1/3] Fix(CS): Add record type to selection groups to fix #7759 --- apps/opencs/model/world/data.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/opencs/model/world/data.cpp b/apps/opencs/model/world/data.cpp index ea4c8966d8..6322a77e66 100644 --- a/apps/opencs/model/world/data.cpp +++ b/apps/opencs/model/world/data.cpp @@ -622,6 +622,7 @@ CSMWorld::Data::Data(ToUTF8::FromType encoding, const Files::PathContainer& data mSelectionGroups.addColumn(new StringIdColumn); mSelectionGroups.addColumn(new RecordStateColumn); + mSelectionGroups.addColumn(new FixedRecordTypeColumn(UniversalId::Type_SelectionGroup)); mSelectionGroups.addColumn(new SelectionGroupColumn); mMetaData.appendBlankRecord(ESM::RefId::stringRefId("sys::meta")); From 3ff1bae372a67a9b18131e670e9c3ce0410b8f12 Mon Sep 17 00:00:00 2001 From: Dave Corley Date: Fri, 5 Jan 2024 19:36:25 -0600 Subject: [PATCH 2/3] Cleanup(CS): More consistent names for selection group configs --- apps/opencs/model/prefs/values.hpp | 42 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/apps/opencs/model/prefs/values.hpp b/apps/opencs/model/prefs/values.hpp index 80d2f8f182..7abe00d023 100644 --- a/apps/opencs/model/prefs/values.hpp +++ b/apps/opencs/model/prefs/values.hpp @@ -479,27 +479,27 @@ namespace CSMPrefs Settings::SettingValue mSceneRenderStats{ mIndex, sName, "scene-render-stats", "F3" }; Settings::SettingValue mSceneClearSelection{ mIndex, sName, "scene-clear-selection", "Space" }; Settings::SettingValue mSceneUnhideAll{ mIndex, sName, "scene-unhide-all", "Alt+H" }; - Settings::SettingValue mSceneToggleHidden{ mIndex, sName, "scene-toggle-visibility", "H" }; - Settings::SettingValue mSceneSelectGroup1{ mIndex, sName, "scene-group-1", "1" }; - Settings::SettingValue mSceneSaveGroup1{ mIndex, sName, "scene-save-1", "Ctrl+1" }; - Settings::SettingValue mSceneSelectGroup2{ mIndex, sName, "scene-group-2", "2" }; - Settings::SettingValue mSceneSaveGroup2{ mIndex, sName, "scene-save-2", "Ctrl+2" }; - Settings::SettingValue mSceneSelectGroup3{ mIndex, sName, "scene-group-3", "3" }; - Settings::SettingValue mSceneSaveGroup3{ mIndex, sName, "scene-save-3", "Ctrl+3" }; - Settings::SettingValue mSceneSelectGroup4{ mIndex, sName, "scene-group-4", "4" }; - Settings::SettingValue mSceneSaveGroup4{ mIndex, sName, "scene-save-4", "Ctrl+4" }; - Settings::SettingValue mSceneSelectGroup5{ mIndex, sName, "scene-group-5", "5" }; - Settings::SettingValue mSceneSaveGroup5{ mIndex, sName, "scene-save-5", "Ctrl+5" }; - Settings::SettingValue mSceneSelectGroup6{ mIndex, sName, "scene-group-6", "6" }; - Settings::SettingValue mSceneSaveGroup6{ mIndex, sName, "scene-save-6", "Ctrl+6" }; - Settings::SettingValue mSceneSelectGroup7{ mIndex, sName, "scene-group-7", "7" }; - Settings::SettingValue mSceneSaveGroup7{ mIndex, sName, "scene-save-7", "Ctrl+7" }; - Settings::SettingValue mSceneSelectGroup8{ mIndex, sName, "scene-group-8", "8" }; - Settings::SettingValue mSceneSaveGroup8{ mIndex, sName, "scene-save-8", "Ctrl+8" }; - Settings::SettingValue mSceneSelectGroup9{ mIndex, sName, "scene-group-9", "9" }; - Settings::SettingValue mSceneSaveGroup9{ mIndex, sName, "scene-save-9", "Ctrl+9" }; - Settings::SettingValue mSceneSelectGroup10{ mIndex, sName, "scene-group-0", "0" }; - Settings::SettingValue mSceneSaveGroup10{ mIndex, sName, "scene-save-0", "Ctrl+0" }; + Settings::SettingValue mSceneToggleVisibility{ mIndex, sName, "scene-toggle-visibility", "H" }; + Settings::SettingValue mSceneGroup0{ mIndex, sName, "scene-group-0", "0" }; + Settings::SettingValue mSceneSave0{ mIndex, sName, "scene-save-0", "Ctrl+0" }; + Settings::SettingValue mSceneGroup1{ mIndex, sName, "scene-group-1", "1" }; + Settings::SettingValue mSceneSave1{ mIndex, sName, "scene-save-1", "Ctrl+1" }; + Settings::SettingValue mSceneGroup2{ mIndex, sName, "scene-group-2", "2" }; + Settings::SettingValue mSceneSave2{ mIndex, sName, "scene-save-2", "Ctrl+2" }; + Settings::SettingValue mSceneGroup3{ mIndex, sName, "scene-group-3", "3" }; + Settings::SettingValue mSceneSave3{ mIndex, sName, "scene-save-3", "Ctrl+3" }; + Settings::SettingValue mSceneGroup4{ mIndex, sName, "scene-group-4", "4" }; + Settings::SettingValue mSceneSave4{ mIndex, sName, "scene-save-4", "Ctrl+4" }; + Settings::SettingValue mSceneGroup5{ mIndex, sName, "scene-group-5", "5" }; + Settings::SettingValue mSceneSave5{ mIndex, sName, "scene-save-5", "Ctrl+5" }; + Settings::SettingValue mSceneGroup6{ mIndex, sName, "scene-group-6", "6" }; + Settings::SettingValue mSceneSave6{ mIndex, sName, "scene-save-6", "Ctrl+6" }; + Settings::SettingValue mSceneGroup7{ mIndex, sName, "scene-group-7", "7" }; + Settings::SettingValue mSceneSave7{ mIndex, sName, "scene-save-7", "Ctrl+7" }; + Settings::SettingValue mSceneGroup8{ mIndex, sName, "scene-group-8", "8" }; + Settings::SettingValue mSceneSave8{ mIndex, sName, "scene-save-8", "Ctrl+8" }; + Settings::SettingValue mSceneGroup9{ mIndex, sName, "scene-group-9", "9" }; + Settings::SettingValue mSceneSave9{ mIndex, sName, "scene-save-9", "Ctrl+9" }; Settings::SettingValue mFreeForward{ mIndex, sName, "free-forward", "W" }; Settings::SettingValue mFreeBackward{ mIndex, sName, "free-backward", "S" }; Settings::SettingValue mFreeLeft{ mIndex, sName, "free-left", "A" }; From c563219b6187a6661ff00a4fa08d119e4496b6cc Mon Sep 17 00:00:00 2001 From: Dave Corley Date: Fri, 5 Jan 2024 19:36:51 -0600 Subject: [PATCH 3/3] Cleanup(CS): Pass const ref when applicable for selection groups --- apps/opencs/view/render/cell.cpp | 2 +- apps/opencs/view/render/cell.hpp | 2 +- apps/opencs/view/render/object.cpp | 2 +- apps/opencs/view/render/object.hpp | 2 +- apps/opencs/view/render/pagedworldspacewidget.cpp | 2 +- apps/opencs/view/render/pagedworldspacewidget.hpp | 2 +- apps/opencs/view/render/unpagedworldspacewidget.cpp | 2 +- apps/opencs/view/render/unpagedworldspacewidget.hpp | 2 +- apps/opencs/view/render/worldspacewidget.hpp | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/opencs/view/render/cell.cpp b/apps/opencs/view/render/cell.cpp index b0c8425ad3..f2c851cc72 100644 --- a/apps/opencs/view/render/cell.cpp +++ b/apps/opencs/view/render/cell.cpp @@ -612,7 +612,7 @@ osg::ref_ptr CSVRender::Cell::getSnapTarget(unsigned int ele return result; } -void CSVRender::Cell::selectFromGroup(const std::vector group) +void CSVRender::Cell::selectFromGroup(const std::vector& group) { for (const auto& [_, object] : mObjects) { diff --git a/apps/opencs/view/render/cell.hpp b/apps/opencs/view/render/cell.hpp index 52e01c631a..5bfce47904 100644 --- a/apps/opencs/view/render/cell.hpp +++ b/apps/opencs/view/render/cell.hpp @@ -148,7 +148,7 @@ namespace CSVRender // already selected void selectAllWithSameParentId(int elementMask); - void selectFromGroup(const std::vector group); + void selectFromGroup(const std::vector& group); void unhideAll(); diff --git a/apps/opencs/view/render/object.cpp b/apps/opencs/view/render/object.cpp index 0e114ac06e..4ad1aaca15 100644 --- a/apps/opencs/view/render/object.cpp +++ b/apps/opencs/view/render/object.cpp @@ -484,7 +484,7 @@ CSVRender::Object::~Object() mParentNode->removeChild(mRootNode); } -void CSVRender::Object::setSelected(bool selected, osg::Vec4f color) +void CSVRender::Object::setSelected(bool selected, const osg::Vec4f& color) { mSelected = selected; diff --git a/apps/opencs/view/render/object.hpp b/apps/opencs/view/render/object.hpp index 9b18b99561..5c73b12211 100644 --- a/apps/opencs/view/render/object.hpp +++ b/apps/opencs/view/render/object.hpp @@ -139,7 +139,7 @@ namespace CSVRender ~Object(); /// Mark the object as selected, selected objects show an outline effect - void setSelected(bool selected, osg::Vec4f color = osg::Vec4f(1, 1, 1, 1)); + void setSelected(bool selected, const osg::Vec4f& color = osg::Vec4f(1, 1, 1, 1)); bool getSelected() const; diff --git a/apps/opencs/view/render/pagedworldspacewidget.cpp b/apps/opencs/view/render/pagedworldspacewidget.cpp index fab706e3ca..3d5c6fe565 100644 --- a/apps/opencs/view/render/pagedworldspacewidget.cpp +++ b/apps/opencs/view/render/pagedworldspacewidget.cpp @@ -875,7 +875,7 @@ std::vector> CSVRender::PagedWorldspaceWidget:: return result; } -void CSVRender::PagedWorldspaceWidget::selectGroup(std::vector group) const +void CSVRender::PagedWorldspaceWidget::selectGroup(const std::vector& group) const { for (const auto& [_, cell] : mCells) cell->selectFromGroup(group); diff --git a/apps/opencs/view/render/pagedworldspacewidget.hpp b/apps/opencs/view/render/pagedworldspacewidget.hpp index 3d2ab97e89..744cc7ccb9 100644 --- a/apps/opencs/view/render/pagedworldspacewidget.hpp +++ b/apps/opencs/view/render/pagedworldspacewidget.hpp @@ -163,7 +163,7 @@ namespace CSVRender std::vector> getSelection(unsigned int elementMask) const override; - void selectGroup(const std::vector group) const override; + void selectGroup(const std::vector& group) const override; void unhideAll() const override; diff --git a/apps/opencs/view/render/unpagedworldspacewidget.cpp b/apps/opencs/view/render/unpagedworldspacewidget.cpp index ea99294c28..899918c3b9 100644 --- a/apps/opencs/view/render/unpagedworldspacewidget.cpp +++ b/apps/opencs/view/render/unpagedworldspacewidget.cpp @@ -199,7 +199,7 @@ std::vector> CSVRender::UnpagedWorldspaceWidget return mCell->getSelection(elementMask); } -void CSVRender::UnpagedWorldspaceWidget::selectGroup(const std::vector group) const +void CSVRender::UnpagedWorldspaceWidget::selectGroup(const std::vector& group) const { mCell->selectFromGroup(group); } diff --git a/apps/opencs/view/render/unpagedworldspacewidget.hpp b/apps/opencs/view/render/unpagedworldspacewidget.hpp index 22a0475fe2..89c916415d 100644 --- a/apps/opencs/view/render/unpagedworldspacewidget.hpp +++ b/apps/opencs/view/render/unpagedworldspacewidget.hpp @@ -93,7 +93,7 @@ namespace CSVRender std::vector> getSelection(unsigned int elementMask) const override; - void selectGroup(const std::vector group) const override; + void selectGroup(const std::vector& group) const override; void unhideAll() const override; diff --git a/apps/opencs/view/render/worldspacewidget.hpp b/apps/opencs/view/render/worldspacewidget.hpp index a6d87440f1..505d985ffa 100644 --- a/apps/opencs/view/render/worldspacewidget.hpp +++ b/apps/opencs/view/render/worldspacewidget.hpp @@ -201,7 +201,7 @@ namespace CSVRender virtual std::vector> getSelection(unsigned int elementMask) const = 0; - virtual void selectGroup(const std::vector) const = 0; + virtual void selectGroup(const std::vector&) const = 0; virtual void unhideAll() const = 0;