mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-06 03:29:44 -06:00
Remove pair from module when one of them are deleted
This commit is contained in:
@@ -430,7 +430,7 @@ void SkyBrowserModule::setSelectedObject()
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBrowserModule::addTargetBrowserPair(std::string targetId, std::string browserId) {
|
||||
void SkyBrowserModule::addTargetBrowserPair(const std::string& targetId, const std::string& browserId) {
|
||||
|
||||
ScreenSpaceSkyTarget* target = dynamic_cast<ScreenSpaceSkyTarget*>(
|
||||
global::renderEngine->screenSpaceRenderable(targetId)
|
||||
@@ -445,12 +445,14 @@ void SkyBrowserModule::addTargetBrowserPair(std::string targetId, std::string br
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBrowserModule::removeTargetBrowserPair(std::string& id) {
|
||||
void SkyBrowserModule::removeTargetBrowserPair(const std::string& id) {
|
||||
|
||||
Pair* found = getPair(id);
|
||||
if (!found) {
|
||||
return;
|
||||
}
|
||||
found->getTarget()->setSkyBrowser(nullptr);
|
||||
|
||||
auto it = std::remove_if(std::begin(_targetsBrowsers), std::end(_targetsBrowsers),
|
||||
[&](const std::unique_ptr<Pair>& pair) {
|
||||
return *found == *(pair.get());
|
||||
|
||||
@@ -91,8 +91,8 @@ public:
|
||||
bool isCameraInSolarSystem();
|
||||
|
||||
// Managing the target browser pairs
|
||||
void removeTargetBrowserPair(std::string& browserId);
|
||||
void addTargetBrowserPair(std::string targetId, std::string browserId);
|
||||
void removeTargetBrowserPair(const std::string& browserId);
|
||||
void addTargetBrowserPair(const std::string& targetId, const std::string& browserId);
|
||||
|
||||
// Hover circle
|
||||
void moveHoverCircle(int i);
|
||||
|
||||
@@ -536,23 +536,23 @@ int createTargetBrowserPair(lua_State* L) {
|
||||
|
||||
openspace::global::scriptEngine->queueScript(
|
||||
"openspace.addScreenSpaceRenderable(" + browser + ");",
|
||||
scripting::ScriptEngine::RemoteScripting::No
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
|
||||
openspace::global::scriptEngine->queueScript(
|
||||
"openspace.addScreenSpaceRenderable(" + target + ");",
|
||||
scripting::ScriptEngine::RemoteScripting::No
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
|
||||
openspace::global::scriptEngine->queueScript(
|
||||
"openspace.skybrowser.addPairToSkyBrowserModule('" + idTarget + "','"
|
||||
+ idBrowser + "');",
|
||||
scripting::ScriptEngine::RemoteScripting::No
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
|
||||
openspace::global::scriptEngine->queueScript(
|
||||
"openspace.skybrowser.setSelectedBrowser('" + idBrowser + "');",
|
||||
scripting::ScriptEngine::RemoteScripting::No
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
#include <modules/skybrowser/include/screenspaceskybrowser.h>
|
||||
|
||||
#include <modules/skybrowser/skybrowsermodule.h>
|
||||
#include <modules/skybrowser/include/utility.h>
|
||||
#include <openspace/engine/globals.h>
|
||||
#include <openspace/engine/windowdelegate.h>
|
||||
#include <openspace/engine/moduleengine.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/misc/dictionaryjsonformatter.h> // formatJson
|
||||
@@ -121,7 +123,11 @@ namespace openspace {
|
||||
}
|
||||
|
||||
ScreenSpaceSkyBrowser::~ScreenSpaceSkyBrowser() {
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
|
||||
if (module->getPair(identifier())) {
|
||||
module->removeTargetBrowserPair(identifier());
|
||||
}
|
||||
}
|
||||
|
||||
bool ScreenSpaceSkyBrowser::initializeGL() {
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
#include <modules/skybrowser/include/screenspaceskytarget.h>
|
||||
|
||||
#include <modules/skybrowser/skybrowsermodule.h>
|
||||
#include <modules/skybrowser/include/screenspaceskybrowser.h>
|
||||
#include <modules/skybrowser/include/utility.h>
|
||||
#include <openspace/engine/globals.h>
|
||||
#include <openspace/engine/moduleengine.h>
|
||||
#include <openspace/navigation/navigationhandler.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/rendering/helper.h>
|
||||
@@ -112,7 +114,11 @@ namespace openspace {
|
||||
}
|
||||
|
||||
ScreenSpaceSkyTarget::~ScreenSpaceSkyTarget() {
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
|
||||
if (module->getPair(identifier())) {
|
||||
module->removeTargetBrowserPair(identifier());
|
||||
}
|
||||
}
|
||||
|
||||
// Pure virtual in the screen space renderable class and hence must be defined
|
||||
|
||||
Reference in New Issue
Block a user