mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-04 18:51:17 -06:00
Add class Pair for skybrowser + skytarget pair
This commit is contained in:
@@ -30,9 +30,10 @@ set(HEADER_FILES
|
||||
include/screenspaceskybrowser.h
|
||||
include/screenspaceskytarget.h
|
||||
include/wwtdatahandler.h
|
||||
tinyxml2/tinyxml2.h
|
||||
include/utility.h
|
||||
include/renderableskybrowser.h
|
||||
include/pair.h
|
||||
tinyxml2/tinyxml2.h
|
||||
|
||||
)
|
||||
source_group("Header Files" FILES ${HEADER_FILES})
|
||||
@@ -44,9 +45,10 @@ set(SOURCE_FILES
|
||||
src/screenspaceskybrowser.cpp
|
||||
src/screenspaceskytarget.cpp
|
||||
src/wwtdatahandler.cpp
|
||||
tinyxml2/tinyxml2.cpp
|
||||
src/utility.cpp
|
||||
src/renderableskybrowser.cpp
|
||||
src/pair.cpp
|
||||
tinyxml2/tinyxml2.cpp
|
||||
|
||||
)
|
||||
source_group("Source Files" FILES ${SOURCE_FILES})
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <openspace/util/distanceconstants.h>
|
||||
#include <openspace/util/factorymanager.h>
|
||||
#include <modules/skybrowser/include/wwtdatahandler.h>
|
||||
#include <modules/skybrowser/include/pair.h>
|
||||
#include <modules/skybrowser/skybrowsermodule.h>
|
||||
#include "skybrowsermodule_lua.inl"
|
||||
#include <glm/gtx/vector_angle.hpp>
|
||||
@@ -391,7 +392,7 @@ SkyBrowserModule::SkyBrowserModule()
|
||||
double deltaTime = global::windowDelegate->deltaTime();
|
||||
|
||||
// Fade out or in browser & target
|
||||
for (SkyBrowserModule::Pair pair : _targetsBrowsers) {
|
||||
for (Pair pair : _targetsBrowsers) {
|
||||
ScreenSpaceSkyBrowser* browser = pair.getBrowser();
|
||||
// If outside solar system and browser is visible
|
||||
if (!_cameraInSolarSystem && browser->isEnabled()) {
|
||||
@@ -668,12 +669,12 @@ const WwtDataHandler* SkyBrowserModule::getWWTDataHandler() {
|
||||
return _dataHandler;
|
||||
}
|
||||
|
||||
std::vector<SkyBrowserModule::Pair>& SkyBrowserModule::getPairs()
|
||||
std::vector<Pair>& SkyBrowserModule::getPairs()
|
||||
{
|
||||
return _targetsBrowsers;
|
||||
}
|
||||
|
||||
SkyBrowserModule::Pair* SkyBrowserModule::getPair(std::string id)
|
||||
Pair* SkyBrowserModule::getPair(std::string id)
|
||||
{
|
||||
auto it = std::find_if(std::begin(_targetsBrowsers), std::end(_targetsBrowsers),
|
||||
[&](Pair& pair) {
|
||||
|
||||
@@ -43,11 +43,11 @@ namespace openspace {
|
||||
class ScreenSpaceSkyBrowser;
|
||||
class ScreenSpaceSkyTarget;
|
||||
class RenderableSkyBrowser;
|
||||
class ScreenSpaceRenderable;
|
||||
class ScreenSpaceImageLocal;
|
||||
class WwtDataHandler;
|
||||
class SceneGraphNode;
|
||||
class ImageData;
|
||||
class Pair;
|
||||
|
||||
|
||||
class SkyBrowserModule : public OpenSpaceModule {
|
||||
@@ -55,41 +55,6 @@ public:
|
||||
|
||||
constexpr static const char* Name = "SkyBrowser";
|
||||
|
||||
class Pair {
|
||||
public:
|
||||
|
||||
Pair(ScreenSpaceSkyBrowser* browser, ScreenSpaceSkyTarget* target)
|
||||
: _target(target), _browser(browser) {}
|
||||
|
||||
Pair(Pair const&) = default;
|
||||
|
||||
Pair& operator=(Pair other)
|
||||
{
|
||||
std::swap(_target, other._target);
|
||||
std::swap(_browser, other._browser);
|
||||
return *this;
|
||||
}
|
||||
|
||||
ScreenSpaceSkyTarget* getTarget() {
|
||||
return _target;
|
||||
}
|
||||
|
||||
ScreenSpaceSkyBrowser* getBrowser() {
|
||||
return _browser;
|
||||
}
|
||||
|
||||
friend bool operator==(const Pair& lhs, const Pair& rhs) {
|
||||
return lhs._target == rhs._target && lhs._browser == rhs._browser;
|
||||
}
|
||||
friend bool operator!=(const Pair& lhs, const Pair& rhs) {
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
private:
|
||||
ScreenSpaceSkyTarget* _target{ nullptr };
|
||||
ScreenSpaceSkyBrowser* _browser{ nullptr };
|
||||
};
|
||||
|
||||
// Constructor & destructor
|
||||
SkyBrowserModule();
|
||||
virtual ~SkyBrowserModule();
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <modules/skybrowser/include/screenspaceskybrowser.h>
|
||||
#include <modules/skybrowser/include/screenspaceskytarget.h>
|
||||
#include <modules/skybrowser/include/renderableskybrowser.h>
|
||||
#include <modules/skybrowser/include/pair.h>
|
||||
#include <modules/skybrowser/skybrowsermodule.h>
|
||||
#include <modules/skybrowser/include/utility.h>
|
||||
#include <ghoul/misc/dictionaryluaformatter.h>
|
||||
@@ -75,8 +76,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
const std::string id = ghoul::lua::value<std::string>(L, 1);
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
if (module->getPair(id)) {
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
pair->getTarget()->lock();
|
||||
module->getPair(id)->lock();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -86,8 +86,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
const std::string id = ghoul::lua::value<std::string>(L, 1);
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
if (module->getPair(id)) {
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
pair->getTarget()->unlock();
|
||||
module->getPair(id)->unlock();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -101,8 +100,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
|
||||
if (module->getPair(id)) {
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
pair->getBrowser()->setImageOrder(i, order);
|
||||
module->getPair(id)->setImageOrder(i, order);
|
||||
}
|
||||
else if (module->get3dBrowser() != nullptr) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
@@ -153,8 +151,8 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
|
||||
// Send out ID's to the browsers
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
std::vector<SkyBrowserModule::Pair> pairs = module->getPairs();
|
||||
for (SkyBrowserModule::Pair pair : pairs) {
|
||||
std::vector<Pair> pairs = module->getPairs();
|
||||
for (Pair pair : pairs) {
|
||||
pair.getBrowser()->sendIdToBrowser();
|
||||
}
|
||||
SceneGraphNode* node = module->get3dBrowser();
|
||||
@@ -362,9 +360,9 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
|
||||
// Pass data for all the browsers and the corresponding targets
|
||||
if (module->cameraInSolarSystem()) {
|
||||
std::vector<SkyBrowserModule::Pair> pairs = module->getPairs();
|
||||
std::vector<Pair> pairs = module->getPairs();
|
||||
|
||||
for (SkyBrowserModule::Pair pair : pairs) {
|
||||
for (Pair pair : pairs) {
|
||||
ScreenSpaceSkyBrowser* browser = pair.getBrowser();
|
||||
ScreenSpaceSkyTarget* target = pair.getTarget();
|
||||
std::string id = browser->identifier();
|
||||
@@ -461,7 +459,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
|
||||
if(module->cameraInSolarSystem() && module->getPair(id)) {
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
Pair* pair = module->getPair(id);
|
||||
module->startRotation(pair->getTarget()->targetDirectionGalactic());
|
||||
}
|
||||
else if (!module->cameraInSolarSystem() && module->get3dBrowser()) {
|
||||
@@ -475,7 +473,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::set3dSelectedImagesAs2dSelection");
|
||||
const std::string id = ghoul::lua::value<std::string>(L, 1);
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
Pair* pair = module->getPair(id);
|
||||
|
||||
if (pair && module->get3dBrowser()) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
@@ -502,7 +500,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
ghoul::Dictionary message = wwtmessage::setImageOpacity(i, opacity);
|
||||
|
||||
if (module->getPair(id)) {
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
Pair* pair = module->getPair(id);
|
||||
pair->getBrowser()->sendMessageToWwt(message);
|
||||
}
|
||||
else if (module->get3dBrowser() != nullptr) {
|
||||
@@ -518,7 +516,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::centerTargetOnScreen");
|
||||
const std::string id = ghoul::lua::value<std::string>(L, 1);
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
Pair* pair = module->getPair(id);
|
||||
if (pair) {
|
||||
// Animate the target to the center of the screen
|
||||
pair->getTarget()->unlock();
|
||||
@@ -591,7 +589,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
|
||||
|
||||
if (module->getPair(id)) {
|
||||
SkyBrowserModule::Pair* pair = module->getPair(id);
|
||||
Pair* pair = module->getPair(id);
|
||||
// Remove image
|
||||
pair->getBrowser()->removeSelectedImage(image, i);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user