diff --git a/radiantcore/CMakeLists.txt b/radiantcore/CMakeLists.txt index ada375fb18..ec047803e7 100644 --- a/radiantcore/CMakeLists.txt +++ b/radiantcore/CMakeLists.txt @@ -260,6 +260,7 @@ add_library(radiantcore MODULE selection/shaderclipboard/ClosestTexturableFinder.cpp selection/shaderclipboard/ShaderClipboard.cpp selection/shaderclipboard/Texturable.cpp + selection/textool/TextureToolSceneGraph.cpp selection/TransformationVisitors.cpp settings/ColourScheme.cpp settings/ColourSchemeManager.cpp diff --git a/radiantcore/selection/textool/TextureToolSceneGraph.cpp b/radiantcore/selection/textool/TextureToolSceneGraph.cpp new file mode 100644 index 0000000000..21686d594b --- /dev/null +++ b/radiantcore/selection/textool/TextureToolSceneGraph.cpp @@ -0,0 +1,47 @@ +#include "TextureToolSceneGraph.h" + +#include "iselection.h" +#include "module/StaticModule.h" + +namespace textool +{ + +const std::string& TextureToolSceneGraph::getName() const +{ + static std::string _name(MODULE_TEXTOOL_SCENEGRAPH); + return _name; +} + +const StringSet& TextureToolSceneGraph::getDependencies() const +{ + static StringSet _dependencies{ MODULE_SELECTIONSYSTEM }; + return _dependencies; +} + +void TextureToolSceneGraph::initialiseModule(const IApplicationContext& ctx) +{ + rMessage() << getName() << "::initialiseModule called." << std::endl; + + _sceneSelectionChanged = GlobalSelectionSystem().signal_selectionChanged().connect( + sigc::mem_fun(this, &TextureToolSceneGraph::onSceneSelectionChanged) + ); +} + +void TextureToolSceneGraph::shutdownModule() +{ + _sceneSelectionChanged.disconnect(); +} + +void TextureToolSceneGraph::foreachNode(const std::function& functor) +{ + +} + +void TextureToolSceneGraph::onSceneSelectionChanged(const ISelectable& selectable) +{ + // Mark our own selection as dirty +} + +module::StaticModule _textureToolSceneGraphModule; + +} diff --git a/radiantcore/selection/textool/TextureToolSceneGraph.h b/radiantcore/selection/textool/TextureToolSceneGraph.h new file mode 100644 index 0000000000..6468bd0bb0 --- /dev/null +++ b/radiantcore/selection/textool/TextureToolSceneGraph.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include "itexturetoolmodel.h" + +namespace textool +{ + +class TextureToolSceneGraph : + public ITextureToolSceneGraph +{ +private: + sigc::connection _sceneSelectionChanged; + +public: + const std::string& getName() const override; + const StringSet& getDependencies() const override; + void initialiseModule(const IApplicationContext& ctx) override; + void shutdownModule() override; + + void foreachNode(const std::function& functor) override; + +private: + void onSceneSelectionChanged(const ISelectable& selectable); +}; + +} diff --git a/tools/msvc/DarkRadiantCore.vcxproj b/tools/msvc/DarkRadiantCore.vcxproj index b7c76138d6..9d56c543fa 100644 --- a/tools/msvc/DarkRadiantCore.vcxproj +++ b/tools/msvc/DarkRadiantCore.vcxproj @@ -673,6 +673,7 @@ + @@ -1024,6 +1025,7 @@ + diff --git a/tools/msvc/DarkRadiantCore.vcxproj.filters b/tools/msvc/DarkRadiantCore.vcxproj.filters index 73f8e2ca74..31505110bd 100644 --- a/tools/msvc/DarkRadiantCore.vcxproj.filters +++ b/tools/msvc/DarkRadiantCore.vcxproj.filters @@ -209,6 +209,9 @@ {e3d5bb4e-6b61-4537-ab0f-30c7be429c65} + + {24592976-64c8-4027-81b7-5b83f62c43d1} + @@ -1081,6 +1084,9 @@ src + + src\selection\textool + @@ -2199,5 +2205,8 @@ src\selection\manipulators + + src\selection\textool + \ No newline at end of file