mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-04 02:29:49 -06:00
Clean up
This commit is contained in:
@@ -104,7 +104,7 @@ namespace openspace {
|
||||
|
||||
// Target & images
|
||||
ScreenSpaceSkyTarget* _skyTarget{ nullptr };
|
||||
std::thread _threadWwtMessages;
|
||||
std::thread _wwtMessages;
|
||||
std::deque<int> _selectedImages;
|
||||
|
||||
// Time variables
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <modules/skybrowser/skybrowsermodule.h>
|
||||
|
||||
#include <modules/skybrowser/include/renderableskybrowser.h>
|
||||
#include <modules/skybrowser/include/screenspaceskybrowser.h>
|
||||
#include "skybrowsermodule_lua.inl"
|
||||
#include <openspace/engine/globalscallbacks.h>
|
||||
@@ -243,6 +244,11 @@ namespace openspace {
|
||||
SkyBrowserModule::SkyBrowserModule()
|
||||
: OpenSpaceModule(SkyBrowserModule::Name)
|
||||
{
|
||||
// Find the hover circle
|
||||
_hoverCircle = dynamic_cast<ScreenSpaceImageLocal*>(
|
||||
global::renderEngine->screenSpaceRenderable("HoverCircle"));
|
||||
|
||||
// Set callback functions
|
||||
global::callback::mouseButton->emplace_back(
|
||||
[&](MouseButton button, MouseAction action, KeyModifier modifier) -> bool {
|
||||
|
||||
@@ -400,8 +406,8 @@ SkyBrowserModule::SkyBrowserModule()
|
||||
_isTransitioningVizMode = true;
|
||||
|
||||
// Select the 3D browser when moving out of the solar system
|
||||
if (!_isCameraInSolarSystem && _browser3d != nullptr) {
|
||||
_selectedBrowser = _browser3d->renderable()->identifier();
|
||||
if (!_isCameraInSolarSystem && _browser3dNode) {
|
||||
_selectedBrowser = _browser3dNode->renderable()->identifier();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -423,8 +429,7 @@ SkyBrowserModule::SkyBrowserModule()
|
||||
}
|
||||
});
|
||||
|
||||
_hoverCircle = dynamic_cast<ScreenSpaceImageLocal*>(
|
||||
global::renderEngine->screenSpaceRenderable("HoverCircle"));
|
||||
|
||||
}
|
||||
|
||||
SkyBrowserModule::~SkyBrowserModule() {
|
||||
@@ -594,9 +599,14 @@ void SkyBrowserModule::removeTargetBrowserPair(std::string& id) {
|
||||
_mouseOnPair = nullptr;
|
||||
}
|
||||
|
||||
|
||||
void SkyBrowserModule::set3dBrowser(SceneGraphNode* node) {
|
||||
_browser3d = node;
|
||||
void SkyBrowserModule::set3dBrowser(const std::string& id)
|
||||
{
|
||||
SceneGraphNode* node = global::renderEngine->scene()->sceneGraphNode(id);
|
||||
if (node) {
|
||||
// Add to module
|
||||
_browser3dNode = node;
|
||||
_browser3d = dynamic_cast<RenderableSkyBrowser*>(_browser3dNode->renderable());
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBrowserModule::selectImage2dBrowser(int i)
|
||||
@@ -623,11 +633,11 @@ void SkyBrowserModule::selectImage2dBrowser(int i)
|
||||
|
||||
void SkyBrowserModule::selectImage3dBrowser(int i)
|
||||
{
|
||||
if (!_browser3d) {
|
||||
if (!_browser3dNode) {
|
||||
return;
|
||||
}
|
||||
RenderableSkyBrowser* renderable = dynamic_cast<RenderableSkyBrowser*>(
|
||||
_browser3d->renderable());
|
||||
_browser3dNode->renderable());
|
||||
if (renderable) {
|
||||
const ImageData& image = _dataHandler->getImage(i);
|
||||
renderable->displayImage(image, i);
|
||||
@@ -660,6 +670,13 @@ void SkyBrowserModule::moveHoverCircle(int i)
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBrowserModule::disableHoverCircle()
|
||||
{
|
||||
if (_hoverCircle && _hoverCircle->isEnabled()) {
|
||||
_hoverCircle->property("Enabled")->set(false);
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBrowserModule::loadImages(const std::string& root, const std::string& directory,
|
||||
std::vector<std::filesystem::path>& speckFiles)
|
||||
{
|
||||
@@ -671,6 +688,23 @@ int SkyBrowserModule::nLoadedImages()
|
||||
return _dataHandler->nLoadedImages();
|
||||
}
|
||||
|
||||
void SkyBrowserModule::add2dSelectedImagesTo3d(const std::string& pairId)
|
||||
{
|
||||
Pair* pair = getPair(pairId);
|
||||
|
||||
if (pair && get3dBrowser()) {
|
||||
|
||||
// Empty 3D browser selection
|
||||
get3dBrowser()->getSelectedImages().clear();
|
||||
// Copy 2D selection of images to 3D browser
|
||||
const std::deque<int> images = pair->getSelectedImages();
|
||||
std::for_each(std::begin(images), std::end(images), [&](const int i) {
|
||||
const ImageData& image = _dataHandler->getImage(i);
|
||||
get3dBrowser()->displayImage(image, i);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const std::unique_ptr<WwtDataHandler>& SkyBrowserModule::getWWTDataHandler() {
|
||||
return _dataHandler;
|
||||
}
|
||||
@@ -691,15 +725,31 @@ Pair* SkyBrowserModule::getPair(std::string id)
|
||||
return &(*it);
|
||||
}
|
||||
|
||||
SceneGraphNode* SkyBrowserModule::get3dBrowser() {
|
||||
SceneGraphNode* SkyBrowserModule::get3dBrowserNode() {
|
||||
return _browser3dNode;
|
||||
}
|
||||
|
||||
RenderableSkyBrowser* SkyBrowserModule::get3dBrowser(const std::string& id)
|
||||
{
|
||||
if (_browser3dNode->identifier() == id || _browser3d->identifier() == id) {
|
||||
return _browser3d;
|
||||
}
|
||||
else {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
RenderableSkyBrowser* SkyBrowserModule::get3dBrowser()
|
||||
{
|
||||
return _browser3d;
|
||||
}
|
||||
|
||||
void SkyBrowserModule::lookAt3dBrowser() {
|
||||
if (!_browser3d) {
|
||||
if (!_browser3dNode) {
|
||||
return;
|
||||
}
|
||||
std::string id = _browser3d->identifier();
|
||||
std::string id = _browser3dNode->identifier();
|
||||
// Target camera on the 3D sky browser
|
||||
openspace::global::scriptEngine->queueScript(
|
||||
"openspace.setPropertyValueSingle(\"NavigationHandler.OrbitalNavigator."
|
||||
@@ -718,6 +768,18 @@ void SkyBrowserModule::lookAt3dBrowser() {
|
||||
);
|
||||
}
|
||||
|
||||
void SkyBrowserModule::place3dBrowser(const ImageData& image, const int i)
|
||||
{
|
||||
// If the image has a 3D position, add it to the scene graph
|
||||
if (image.has3dCoords && get3dBrowser()) {
|
||||
get3dBrowser()->displayImage(image, i);
|
||||
get3dBrowser()->placeAt3dPosition(image);
|
||||
}
|
||||
else {
|
||||
LINFO("Image has no 3D coordinate!");
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBrowserModule::startRotatingCamera(glm::dvec3 endAnimation) {
|
||||
// Save coordinates to rotate to in galactic world coordinates
|
||||
_endAnimation = endAnimation;
|
||||
@@ -756,10 +818,11 @@ void SkyBrowserModule::incrementallyFadeBrowserTargets(Transparency goal, float
|
||||
bool isAllFinished{ false };
|
||||
for (Pair& pair : _targetsBrowsers) {
|
||||
if (pair.isEnabled()) {
|
||||
pair.incrementallyFade(transparency, _fadingTime, deltaTime);
|
||||
bool isPairFinished = pair.hasFinishedFading(transparency);
|
||||
|
||||
if (isPairFinished && goal == Transparency::Transparent) {
|
||||
if (!isPairFinished) {
|
||||
pair.incrementallyFade(transparency, _fadingTime, deltaTime);
|
||||
}
|
||||
else if (isPairFinished && goal == Transparency::Transparent) {
|
||||
pair.disable();
|
||||
}
|
||||
isAllFinished &= isPairFinished;
|
||||
@@ -787,8 +850,10 @@ void SkyBrowserModule::setSelectedBrowser(ScreenSpaceSkyBrowser* browser) {
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBrowserModule::setSelectedBrowser(std::string id) {
|
||||
_selectedBrowser = id;
|
||||
void SkyBrowserModule::setSelectedBrowser(const std::string& id) {
|
||||
if (getPair(id) || _browser3dNode->identifier() == id) {
|
||||
_selectedBrowser = id;
|
||||
}
|
||||
}
|
||||
|
||||
std::string SkyBrowserModule::selectedBrowserId() {
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
namespace openspace {
|
||||
|
||||
class ScreenSpaceSkyBrowser;
|
||||
class RenderableSkyBrowser;
|
||||
|
||||
enum class Transparency {
|
||||
Transparent = 0,
|
||||
@@ -59,46 +60,49 @@ public:
|
||||
// Getters
|
||||
std::vector<Pair>& getPairs();
|
||||
Pair* getPair(std::string id);
|
||||
SceneGraphNode* get3dBrowser();
|
||||
SceneGraphNode* get3dBrowserNode();
|
||||
RenderableSkyBrowser* get3dBrowser();
|
||||
RenderableSkyBrowser* get3dBrowser(const std::string& id);
|
||||
const std::unique_ptr<WwtDataHandler>& getWWTDataHandler();
|
||||
std::string selectedBrowserId();
|
||||
|
||||
// Setters
|
||||
void set3dBrowser(const std::string& id);
|
||||
void setSelectedBrowser(ScreenSpaceSkyBrowser* ptr);
|
||||
void setSelectedBrowser(std::string id);
|
||||
void set3dBrowser(SceneGraphNode* node);
|
||||
void setSelectedBrowser(const std::string& id);
|
||||
void selectImage2dBrowser(int i);
|
||||
void selectImage3dBrowser(int i);
|
||||
void setSelectedObject(); // Manage mouse interactions
|
||||
|
||||
// Rotation and animation
|
||||
|
||||
// Rotation, animation, placement
|
||||
void lookAtTarget(std::string id);
|
||||
void incrementallyRotateCamera(double deltaTime);
|
||||
void incrementallyFadeBrowserTargets(Transparency goal, float deltaTime);
|
||||
void incrementallyAnimateTargets(double deltaTime);
|
||||
void lookAt3dBrowser();
|
||||
void place3dBrowser(const ImageData& image, const int i);
|
||||
|
||||
// Boolean functions
|
||||
bool isCameraInSolarSystem();
|
||||
|
||||
// Managing the browsers
|
||||
// Managing the target browser pairs
|
||||
void createTargetBrowserPair();
|
||||
void removeTargetBrowserPair(std::string& browserId);
|
||||
void addTargetBrowserPair(std::string targetId, std::string browserId);
|
||||
|
||||
// Hover circle
|
||||
void moveHoverCircle(int i);
|
||||
void disableHoverCircle();
|
||||
|
||||
// Image collection handling
|
||||
void loadImages(const std::string& root, const std::string& directory,
|
||||
std::vector<std::filesystem::path>& speckFiles);
|
||||
int nLoadedImages();
|
||||
|
||||
// Manage mouse interactions
|
||||
void setSelectedObject();
|
||||
void add2dSelectedImagesTo3d(const std::string& pairId);
|
||||
|
||||
scripting::LuaLibrary luaLibrary() const override;
|
||||
//std::vector<documentation::Documentation> documentations() const override;
|
||||
|
||||
|
||||
protected:
|
||||
void internalInitialize(const ghoul::Dictionary& dict) override;
|
||||
void internalDeinitialize() override;
|
||||
@@ -112,7 +116,8 @@ private:
|
||||
Pair* _selectedPair{ nullptr };
|
||||
bool _isBrowser{ false };
|
||||
ScreenSpaceImageLocal* _hoverCircle{ nullptr };
|
||||
SceneGraphNode* _browser3d{ nullptr };
|
||||
SceneGraphNode* _browser3dNode{ nullptr };
|
||||
RenderableSkyBrowser* _browser3d{ nullptr };
|
||||
std::string _selectedBrowser{ "" }; // Currently selected browser (2D or 3D)
|
||||
|
||||
// Fading
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
|
||||
#include <modules/skybrowser/skybrowsermodule.h>
|
||||
|
||||
#include <modules/skybrowser/include/renderableskybrowser.h>
|
||||
#include <modules/skybrowser/include/utility.h>
|
||||
#include <openspace/engine/moduleengine.h>
|
||||
#include <openspace/engine/globals.h>
|
||||
@@ -45,11 +44,8 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
|
||||
int disableHoverCircle(lua_State* L) {
|
||||
ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::disableHoverCircle");
|
||||
ScreenSpaceImageLocal* hoverCircle = dynamic_cast<ScreenSpaceImageLocal*>(
|
||||
global::renderEngine->screenSpaceRenderable("HoverCircle"));
|
||||
if (hoverCircle->isEnabled()) {
|
||||
hoverCircle->property("Enabled")->set(false);
|
||||
}
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
module->disableHoverCircle();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -85,10 +81,8 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
if (module->getPair(id)) {
|
||||
module->getPair(id)->setImageOrder(i, order);
|
||||
}
|
||||
else if (module->get3dBrowser() != nullptr) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
module->get3dBrowser()->renderable());
|
||||
browser3d->setImageLayerOrder(i, order);
|
||||
else if (module->get3dBrowser(id)) {
|
||||
module->get3dBrowser(id)->setImageLayerOrder(i, order);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -111,19 +105,14 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
if (module->getPair(id)) {
|
||||
module->getPair(id)->loadImages(root);
|
||||
}
|
||||
else {
|
||||
SceneGraphNode* node = global::renderEngine->scene()->sceneGraphNode(id);
|
||||
if (node) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
node->renderable());
|
||||
if (browser3d) {
|
||||
// Load Image collections
|
||||
browser3d->stopSyncingWwtView();
|
||||
LINFO("Load images to " + browser3d->identifier());
|
||||
browser3d->sendMessageToWwt(wwtmessage::loadCollection(root));
|
||||
LINFO("Image collection loaded in " + browser3d->identifier());
|
||||
}
|
||||
}
|
||||
else if (module->get3dBrowser(id)) {
|
||||
|
||||
// Load Image collections
|
||||
module->get3dBrowser(id)->stopSyncingWwtView();
|
||||
LINFO("Load images to " + module->get3dBrowser(id)->identifier());
|
||||
module->get3dBrowser(id)->sendMessageToWwt(wwtmessage::loadCollection(root));
|
||||
LINFO("Image collection loaded in " + module->get3dBrowser(id)->identifier());
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -139,12 +128,9 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
for (Pair pair : pairs) {
|
||||
pair.sendIdToBrowser();
|
||||
}
|
||||
SceneGraphNode* node = module->get3dBrowser();
|
||||
if(node) {
|
||||
std::string id = node->identifier();
|
||||
RenderableSkyBrowser* browsers3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
node->renderable());
|
||||
browsers3d->setIdInBrowser(id);
|
||||
if(module->get3dBrowser()) {
|
||||
std::string id = module->get3dBrowserNode()->identifier();
|
||||
module->get3dBrowser()->setIdInBrowser(id);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -172,17 +158,10 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
if (module->getPair(id)) {
|
||||
module->getPair(id)->synchronizeWithWwt();
|
||||
}
|
||||
else {
|
||||
SceneGraphNode* node = global::renderEngine->scene()->sceneGraphNode(id);
|
||||
if (node) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
node->renderable());
|
||||
if (browser3d && id == node->identifier()) {
|
||||
// Initialize
|
||||
LINFO("Initializing 3D sky browsers");
|
||||
browser3d->syncWwtView();
|
||||
}
|
||||
}
|
||||
else if(module->get3dBrowser(id)) {
|
||||
// Initialize
|
||||
LINFO("Initializing 3D sky browsers");
|
||||
module->get3dBrowser()->syncWwtView();
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -194,11 +173,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
|
||||
LINFO("Add to sky browser module id " + id);
|
||||
SceneGraphNode* node = global::renderEngine->scene()->sceneGraphNode(id);
|
||||
if (node) {
|
||||
// Add to module
|
||||
module->set3dBrowser(node);
|
||||
}
|
||||
module->set3dBrowser(id);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -302,11 +277,14 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
// Add the window data for OpenSpace
|
||||
ghoul::lua::push(L, "OpenSpace");
|
||||
lua_newtable(L);
|
||||
glm::dvec3 cartesian = skybrowser::cameraDirectionEquatorial();
|
||||
glm::dvec2 spherical = skybrowser::cartesianToSpherical(cartesian);
|
||||
glm::dvec3 cartesianCam = skybrowser::cameraDirectionEquatorial();
|
||||
glm::dvec2 sphericalCam = skybrowser::cartesianToSpherical(cartesianCam);
|
||||
// Convert to vector so ghoul can read it
|
||||
std::vector<double> viewDirCelestVec = { cartesian.x, cartesian.y, cartesian.z };
|
||||
|
||||
std::vector<double> viewDirCelestVec = {
|
||||
cartesianCam.x,
|
||||
cartesianCam.y,
|
||||
cartesianCam.z
|
||||
};
|
||||
|
||||
// Calculate the smallest FOV of vertical and horizontal
|
||||
glm::dvec2 fovs = skybrowser::fovWindow();
|
||||
@@ -316,9 +294,9 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
lua_settable(L, -3);
|
||||
ghoul::lua::push(L, "cartesianDirection", viewDirCelestVec);
|
||||
lua_settable(L, -3);
|
||||
ghoul::lua::push(L, "ra", spherical.x);
|
||||
ghoul::lua::push(L, "ra", sphericalCam.x);
|
||||
lua_settable(L, -3);
|
||||
ghoul::lua::push(L, "dec", spherical.y);
|
||||
ghoul::lua::push(L, "dec", sphericalCam.y);
|
||||
lua_settable(L, -3);
|
||||
ghoul::lua::push(L, "selectedBrowserId", module->selectedBrowserId());
|
||||
lua_settable(L, -3);
|
||||
@@ -379,17 +357,14 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
|
||||
}
|
||||
}
|
||||
else if(module->get3dBrowser()){
|
||||
SceneGraphNode* node = module->get3dBrowser();
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
node->renderable());
|
||||
else if(module->get3dBrowser()){
|
||||
// Convert deque to vector so ghoul can read it
|
||||
std::vector<int> selectedImagesVector;
|
||||
std::deque<int> selectedImages = browser3d->getSelectedImages();
|
||||
std::deque<int> selectedImages = module->get3dBrowser()->getSelectedImages();
|
||||
std::for_each(selectedImages.begin(), selectedImages.end(), [&](int index) {
|
||||
selectedImagesVector.push_back(index);
|
||||
});
|
||||
glm::dvec3 position3dBrowser = node->position();
|
||||
glm::dvec3 position3dBrowser = module->get3dBrowserNode()->position();
|
||||
glm::dvec3 cartesian = skybrowser::galacticToEquatorial(position3dBrowser);
|
||||
glm::dvec2 spherical = skybrowser::cartesianToSpherical(cartesian);
|
||||
std::vector<double> celestialCartVec = {
|
||||
@@ -401,14 +376,14 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
//glm::ivec3 color = browser->_borderColor.value();
|
||||
std::vector<int> colorVec = { 200, 200, 200 };
|
||||
|
||||
ghoul::lua::push(L, browser3d->identifier());
|
||||
ghoul::lua::push(L, module->get3dBrowser()->identifier());
|
||||
lua_newtable(L);
|
||||
// Push ("Key", value)
|
||||
ghoul::lua::push(L, "id", browser3d->identifier());
|
||||
ghoul::lua::push(L, "id", module->get3dBrowser()->identifier());
|
||||
lua_settable(L, -3);
|
||||
ghoul::lua::push(L, "name", node->guiName());
|
||||
ghoul::lua::push(L, "name", module->get3dBrowserNode()->guiName());
|
||||
lua_settable(L, -3);
|
||||
ghoul::lua::push(L, "FOV", browser3d->verticalFov());
|
||||
ghoul::lua::push(L, "FOV", module->get3dBrowser()->verticalFov());
|
||||
lua_settable(L, -3);
|
||||
ghoul::lua::push(L, "selectedImages", selectedImagesVector);
|
||||
lua_settable(L, -3);
|
||||
@@ -445,22 +420,9 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
|
||||
int set3dSelectedImagesAs2dSelection(lua_State* L) {
|
||||
ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::set3dSelectedImagesAs2dSelection");
|
||||
const std::string id = ghoul::lua::value<std::string>(L, 1);
|
||||
const std::string pairId = ghoul::lua::value<std::string>(L, 1);
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
Pair* pair = module->getPair(id);
|
||||
|
||||
if (pair && module->get3dBrowser()) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
module->get3dBrowser()->renderable());
|
||||
// Empty 3D browser selection
|
||||
browser3d->getSelectedImages().clear();
|
||||
// Copy 2D selection of images to 3D browser
|
||||
const std::deque<int> images = pair->getSelectedImages();
|
||||
std::for_each(std::begin(images), std::end(images), [&](const int i) {
|
||||
const ImageData& image = module->getWWTDataHandler()->getImage(i);
|
||||
browser3d->displayImage(image, i);
|
||||
});
|
||||
}
|
||||
module->add2dSelectedImagesTo3d(pairId);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -480,10 +442,8 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
module->getPair(id)->setImageOpacity(i, opacity);
|
||||
|
||||
}
|
||||
else if (module->get3dBrowser() != nullptr) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
module->get3dBrowser()->renderable());
|
||||
browser3d->sendMessageToWwt(message);
|
||||
else if (module->get3dBrowser(id)) {
|
||||
module->get3dBrowser(id)->sendMessageToWwt(message);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -505,9 +465,9 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::setSelectedBrowser");
|
||||
const std::string id = ghoul::lua::value<std::string>(L, 1);
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
if (module->getPair(id)) {
|
||||
module->setSelectedBrowser(id);
|
||||
}
|
||||
|
||||
module->setSelectedBrowser(id);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -535,16 +495,7 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
|
||||
const ImageData image = module->getWWTDataHandler()->getImage(i);
|
||||
|
||||
// If the image has a 3D position, add it to the scene graph
|
||||
if (image.has3dCoords && module->get3dBrowser()) {
|
||||
RenderableSkyBrowser* browser = dynamic_cast<RenderableSkyBrowser*>(
|
||||
module->get3dBrowser()->renderable());
|
||||
browser->displayImage(image, i);
|
||||
browser->placeAt3dPosition(image);
|
||||
}
|
||||
else {
|
||||
LINFO("Image has no 3D coordinate!");
|
||||
}
|
||||
module->place3dBrowser(image, i);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -562,10 +513,8 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
if (pair) {
|
||||
pair->removeSelectedImage(i);
|
||||
}
|
||||
else if (module->get3dBrowser() != nullptr) {
|
||||
RenderableSkyBrowser* browser3d = dynamic_cast<RenderableSkyBrowser*>(
|
||||
module->get3dBrowser()->renderable());
|
||||
browser3d->removeSelectedImage(image, i);
|
||||
else if (module->get3dBrowser(id)) {
|
||||
module->get3dBrowser(id)->removeSelectedImage(image, i);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -243,6 +243,9 @@ namespace openspace {
|
||||
void Pair::incrementallyFade(float goalState, float fadeTime, float deltaTime)
|
||||
{
|
||||
float opacityDelta = static_cast<float>(deltaTime / fadeTime);
|
||||
if (_target->opacity() > goalState) {
|
||||
opacityDelta *= -1.f;
|
||||
}
|
||||
|
||||
if (!isTargetFadeFinished(goalState)) {
|
||||
_target->setOpacity(_target->opacity() + opacityDelta);
|
||||
|
||||
@@ -138,8 +138,8 @@ namespace openspace {
|
||||
ScreenSpaceSkyBrowser::~ScreenSpaceSkyBrowser() {
|
||||
// Set flag to false so the thread can exit
|
||||
_isSyncedWithWwt = false;
|
||||
if (_threadWwtMessages.joinable()) {
|
||||
_threadWwtMessages.join();
|
||||
if (_wwtMessages.joinable()) {
|
||||
_wwtMessages.join();
|
||||
LINFO("Joined thread");
|
||||
}
|
||||
}
|
||||
@@ -198,8 +198,8 @@ namespace openspace {
|
||||
bool ScreenSpaceSkyBrowser::deinitializeGL() {
|
||||
// Set flag to false so the thread can exit
|
||||
_isSyncedWithWwt = false;
|
||||
if (_threadWwtMessages.joinable()) {
|
||||
_threadWwtMessages.join();
|
||||
if (_wwtMessages.joinable()) {
|
||||
_wwtMessages.join();
|
||||
LINFO("Joined thread");
|
||||
}
|
||||
return ScreenSpaceBrowser::deinitializeGL();
|
||||
@@ -311,7 +311,7 @@ namespace openspace {
|
||||
void ScreenSpaceSkyBrowser::syncWwtView() {
|
||||
|
||||
// Start a thread to enable user interaction while sending the calls to WWT
|
||||
_threadWwtMessages = std::thread([&] {
|
||||
_wwtMessages = std::thread([&] {
|
||||
while (_isSyncedWithWwt) {
|
||||
if (_skyTarget) {
|
||||
// Message WorldWide Telescope current view
|
||||
|
||||
Reference in New Issue
Block a user