diff --git a/include/openspace/rendering/screenspacerenderable.h b/include/openspace/rendering/screenspacerenderable.h index 123b294936..d074ca35e8 100644 --- a/include/openspace/rendering/screenspacerenderable.h +++ b/include/openspace/rendering/screenspacerenderable.h @@ -70,6 +70,7 @@ public: virtual bool isReady() const; bool isEnabled() const; bool isUsingRaeCoords() const; + bool isFacingCamera() const; void setEnabled(bool isEnabled); float depth(); diff --git a/modules/skybrowser/include/pair.h b/modules/skybrowser/include/pair.h index 7b427d4a39..ed6028bedd 100644 --- a/modules/skybrowser/include/pair.h +++ b/modules/skybrowser/include/pair.h @@ -75,7 +75,8 @@ public: // Boolean functions bool hasFinishedFading(float goalState) const; - + bool isFacingCamera() const; + bool isUsingRadiusAzimuthElevation() const; bool isEnabled() const; bool isLocked() const; diff --git a/modules/skybrowser/skybrowsermodule.cpp b/modules/skybrowser/skybrowsermodule.cpp index d711a770f8..1aae807a4b 100644 --- a/modules/skybrowser/skybrowsermodule.cpp +++ b/modules/skybrowser/skybrowsermodule.cpp @@ -777,10 +777,40 @@ std::string SkyBrowserModule::selectedBrowserId() { return _selectedBrowser; } +std::string SkyBrowserModule::selectedTargetId() +{ + if (getPair(_selectedBrowser)) { + return getPair(_selectedBrowser)->targetId(); + } + else { + return ""; + } +} + bool SkyBrowserModule::isCameraInSolarSystem() { return _isCameraInSolarSystem; } +bool SkyBrowserModule::isSelectedPairUsingRae() +{ + if (getPair(_selectedBrowser)) { + return getPair(_selectedBrowser)->isUsingRadiusAzimuthElevation(); + } + else { + return false; + } +} + +bool SkyBrowserModule::isSelectedPairFacingCamera() +{ + if (getPair(_selectedBrowser)) { + return getPair(_selectedBrowser)->isFacingCamera(); + } + else { + return false; + } +} + //std::vector SkyBrowserModule::documentations() const { // return { // ExoplanetsDataPreparationTask::documentation(), diff --git a/modules/skybrowser/skybrowsermodule.h b/modules/skybrowser/skybrowsermodule.h index 5d4c5f83be..6374b8e515 100644 --- a/modules/skybrowser/skybrowsermodule.h +++ b/modules/skybrowser/skybrowsermodule.h @@ -74,6 +74,7 @@ public: RenderableSkyBrowser* get3dBrowser(const std::string& id); const std::unique_ptr& getWwtDataHandler(); std::string selectedBrowserId(); + std::string selectedTargetId(); // Setters void set3dBrowser(const std::string& id); @@ -92,6 +93,8 @@ public: // Boolean functions bool isCameraInSolarSystem(); + bool isSelectedPairFacingCamera(); + bool isSelectedPairUsingRae(); // Managing the target browser pairs void removeTargetBrowserPair(const std::string& browserId); diff --git a/modules/skybrowser/skybrowsermodule_lua.inl b/modules/skybrowser/skybrowsermodule_lua.inl index 9973fd6ddb..83f7fb8827 100644 --- a/modules/skybrowser/skybrowsermodule_lua.inl +++ b/modules/skybrowser/skybrowsermodule_lua.inl @@ -332,6 +332,12 @@ int getTargetData(lua_State* L) { lua_settable(L, -3); ghoul::lua::push(L, "selectedBrowserId", module->selectedBrowserId()); lua_settable(L, -3); + ghoul::lua::push(L, "selectedTargetId", module->selectedTargetId()); + lua_settable(L, -3); + ghoul::lua::push(L, "isFacingCamera", module->isSelectedPairFacingCamera()); + lua_settable(L, -3); + ghoul::lua::push(L, "isUsingRadiusAzimuthElevation", module->isSelectedPairUsingRae()); + lua_settable(L, -3); ghoul::lua::push(L, "cameraInSolarSystem", module->isCameraInSolarSystem()); lua_settable(L, -3); // Set table for the current ImageData diff --git a/modules/skybrowser/src/pair.cpp b/modules/skybrowser/src/pair.cpp index 666f2ac65d..b50e5d830b 100644 --- a/modules/skybrowser/src/pair.cpp +++ b/modules/skybrowser/src/pair.cpp @@ -337,6 +337,16 @@ namespace openspace { return isTargetFadeFinished(goalState) && isBrowserFadeFinished(goalState); } + bool Pair::isFacingCamera() const + { + return _browser->isFacingCamera() || _target->isFacingCamera(); + } + + bool Pair::isUsingRadiusAzimuthElevation() const + { + return _browser->isUsingRaeCoords() || _target->isUsingRaeCoords(); + } + ScreenSpaceSkyTarget* Pair::getTarget() { return _target; } diff --git a/src/rendering/screenspacerenderable.cpp b/src/rendering/screenspacerenderable.cpp index 411d6aa630..dd7285006c 100644 --- a/src/rendering/screenspacerenderable.cpp +++ b/src/rendering/screenspacerenderable.cpp @@ -464,6 +464,10 @@ bool ScreenSpaceRenderable::isUsingRaeCoords() const { return _useRadiusAzimuthElevation; } +bool ScreenSpaceRenderable::isFacingCamera() const +{ + return _faceCamera; +} void ScreenSpaceRenderable::setEnabled(bool isEnabled) { _enabled = isEnabled;