mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-22 12:59:07 -06:00
Add enabled property to Exoplanets and Skybrowser module (#1945)
* Add enabled property to exoplanets and sky browser module * Create assets for default settings and restructure assets into a components folder * Update exoplanets data * Set sky browser enabled to true per default and include hover circle asset * Add name and description of hover circle, and used synced version of ring image
This commit is contained in:
@@ -4,6 +4,10 @@
|
||||
|
||||
asset.require("./base_blank")
|
||||
|
||||
-- Modules and component settings
|
||||
asset.require("modules/exoplanets/exoplanets")
|
||||
asset.require("modules/skybrowser/skybrowser")
|
||||
|
||||
-- Specifying which other assets should be loaded in this scene
|
||||
asset.require("scene/solarsystem/sun/sun")
|
||||
asset.require("scene/solarsystem/sun/glare")
|
||||
@@ -20,10 +24,6 @@ asset.require("scene/milkyway/constellations/constellation_keybinds")
|
||||
asset.require("scene/milkyway/objects/orionnebula/orionnebula")
|
||||
asset.require("util/launcher_images")
|
||||
|
||||
-- For exoplanet system visualizations
|
||||
asset.require("scene/milkyway/exoplanets/exoplanets_data")
|
||||
asset.require("scene/milkyway/exoplanets/exoplanets_textures")
|
||||
|
||||
asset.require("scene/digitaluniverse/2dF")
|
||||
asset.require("scene/digitaluniverse/2mass")
|
||||
asset.require("scene/digitaluniverse/6dF")
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB |
@@ -1,29 +0,0 @@
|
||||
-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_SPOUT enabled
|
||||
|
||||
local transforms = asset.require("scene/solarsystem/sun/transforms")
|
||||
|
||||
local circle = {
|
||||
Identifier = "hoverCircle",
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = 3.0E15,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "${ASSETS}/circle.png"
|
||||
},
|
||||
GUI = {
|
||||
Path = "/SkyBrowser"
|
||||
}
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(circle)
|
||||
openspace.skybrowser.setHoverCircle('hoverCircle')
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(circle)
|
||||
end)
|
||||
|
||||
asset.export(circle)
|
||||
16
data/assets/modules/exoplanets/default_settings.asset
Normal file
16
data/assets/modules/exoplanets/default_settings.asset
Normal file
@@ -0,0 +1,16 @@
|
||||
asset.onInitialize(function ()
|
||||
openspace.setPropertyValueSingle("Modules.Exoplanets.Enabled", true)
|
||||
openspace.setPropertyValueSingle("Modules.Exoplanets.ShowComparisonCircle", false)
|
||||
openspace.setPropertyValueSingle("Modules.Exoplanets.ShowHabitableZone", true)
|
||||
openspace.setPropertyValueSingle("Modules.Exoplanets.UseOptimisticZone", true)
|
||||
openspace.setPropertyValueSingle("Modules.Exoplanets.HabitableZoneOpacity", 0.1)
|
||||
end)
|
||||
|
||||
asset.meta = {
|
||||
Name = "Exoplanet Default Settings",
|
||||
Version = "1.0",
|
||||
Description = [[ Some default settings related to the exoplanet module ]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
3
data/assets/modules/exoplanets/exoplanets.asset
Normal file
3
data/assets/modules/exoplanets/exoplanets.asset
Normal file
@@ -0,0 +1,3 @@
|
||||
asset.require("./default_settings")
|
||||
asset.require("./exoplanets_data")
|
||||
asset.require("./exoplanets_textures")
|
||||
@@ -2,7 +2,7 @@ local DataPath = asset.syncedResource({
|
||||
Name = "Exoplanet Data Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "exoplanets_data",
|
||||
Version = 2
|
||||
Version = 3
|
||||
})
|
||||
|
||||
local colormaps = asset.syncedResource({
|
||||
@@ -13,6 +13,8 @@ local colormaps = asset.syncedResource({
|
||||
})
|
||||
|
||||
asset.onInitialize(function ()
|
||||
-- Set the default data files used for the exoplanet system creation
|
||||
-- (Check if already set, to not override value set in another file)
|
||||
local p = "Modules.Exoplanets.DataFolder";
|
||||
if (openspace.getPropertyValue(p) == "") then
|
||||
openspace.setPropertyValueSingle(p, DataPath)
|
||||
@@ -28,7 +30,7 @@ asset.export("DataPath", DataPath)
|
||||
|
||||
asset.meta = {
|
||||
Name = "Exoplanet Data",
|
||||
Version = "2.0",
|
||||
Version = "3.0",
|
||||
Description = [[ The data that is used for the exoplanet systems. The data has been
|
||||
derived from the 'Planetary Systems Composite Data' dataset from the NASA Exoplanet
|
||||
Archive]],
|
||||
@@ -1,5 +1,6 @@
|
||||
local habitableZoneTextures =
|
||||
asset.require("../habitable_zones/habitable_zone_textures").TexturesPath
|
||||
local habitableZoneTextures = asset.require(
|
||||
"scene/milkyway/habitable_zones/habitable_zone_textures"
|
||||
).TexturesPath
|
||||
|
||||
local sunTextures = asset.syncedResource({
|
||||
Type = "HttpSynchronization",
|
||||
@@ -25,7 +26,7 @@ asset.onInitialize(function ()
|
||||
local hzTexture = habitableZoneTextures .. "hot_to_cold_faded.png"
|
||||
|
||||
-- Set the default textures used for the exoplanet system creation
|
||||
-- (Check if already set, to not override value in config file)
|
||||
-- (Check if already set, to not override value set in another file)
|
||||
local p = "Modules.Exoplanets.StarTexture";
|
||||
if (openspace.getPropertyValue(p) == "") then
|
||||
openspace.setPropertyValueSingle(p, starTexture)
|
||||
13
data/assets/modules/skybrowser/default_settings.asset
Normal file
13
data/assets/modules/skybrowser/default_settings.asset
Normal file
@@ -0,0 +1,13 @@
|
||||
asset.onInitialize(function ()
|
||||
openspace.setPropertyValueSingle("Modules.SkyBrowser.Enabled", true)
|
||||
-- More settings are available, but for now using the default values
|
||||
end)
|
||||
|
||||
asset.meta = {
|
||||
Name = "SkyBrowser Module Default Settings",
|
||||
Version = "1.0",
|
||||
Description = [[ Some default settings related to the SkyBrowser module ]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
50
data/assets/modules/skybrowser/hoverCircle.asset
Normal file
50
data/assets/modules/skybrowser/hoverCircle.asset
Normal file
@@ -0,0 +1,50 @@
|
||||
-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_SPOUT enabled
|
||||
|
||||
local transforms = asset.require("scene/solarsystem/sun/transforms")
|
||||
|
||||
local ringImage = asset.syncedResource({
|
||||
Name = "Hover Circle Image",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "misc_ring_image",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local circle = {
|
||||
Identifier = "hoverCircle",
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = 3.0E15,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = ringImage
|
||||
},
|
||||
GUI = {
|
||||
Name = "Hover Circle",
|
||||
Description = [[A circular marker that shows the position on the night sky
|
||||
of the object hovered in the sky browser UI. The circle will hide/show up
|
||||
dynamically, depending on the interaction with the items in the UI. ]],
|
||||
Path = "/SkyBrowser"
|
||||
}
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(circle)
|
||||
openspace.skybrowser.setHoverCircle('hoverCircle')
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(circle)
|
||||
end)
|
||||
|
||||
asset.export(circle)
|
||||
|
||||
asset.meta = {
|
||||
Name = "SkyBrowser Hover Circle",
|
||||
Version = "1.0",
|
||||
Description = [[Includes a circular marker that shows the position on the night sky
|
||||
of the object hovered in the sky browser UI. ]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
2
data/assets/modules/skybrowser/skybrowser.asset
Normal file
2
data/assets/modules/skybrowser/skybrowser.asset
Normal file
@@ -0,0 +1,2 @@
|
||||
asset.require("./default_settings")
|
||||
asset.require("./hoverCircle")
|
||||
@@ -51,6 +51,12 @@
|
||||
#include "exoplanetsmodule_lua.inl"
|
||||
|
||||
namespace {
|
||||
constexpr const openspace::properties::Property::PropertyInfo EnabledInfo = {
|
||||
"Enabled",
|
||||
"Enabled",
|
||||
"Decides if the GUI for this module should be enabled."
|
||||
};
|
||||
|
||||
constexpr const openspace::properties::Property::PropertyInfo DataFolderInfo = {
|
||||
"DataFolder",
|
||||
"Data Folder",
|
||||
@@ -139,6 +145,9 @@ namespace {
|
||||
constexpr const char LookupTableFileName[] = "lookup.txt";
|
||||
|
||||
struct [[codegen::Dictionary(ExoplanetsModule)]] Parameters {
|
||||
// [[codegen::verbatim(EnabledInfo.description)]]
|
||||
std::optional<bool> enabled;
|
||||
|
||||
// [[codegen::verbatim(DataFolderInfo.description)]]
|
||||
std::optional<std::filesystem::path> dataFolder [[codegen::directory()]];
|
||||
|
||||
@@ -181,6 +190,7 @@ using namespace exoplanets;
|
||||
|
||||
ExoplanetsModule::ExoplanetsModule()
|
||||
: OpenSpaceModule(Name)
|
||||
, _enabled(EnabledInfo)
|
||||
, _exoplanetsDataFolder(DataFolderInfo)
|
||||
, _bvColorMapPath(BvColorMapInfo)
|
||||
, _starTexturePath(StarTextureInfo)
|
||||
@@ -191,10 +201,12 @@ ExoplanetsModule::ExoplanetsModule()
|
||||
, _showComparisonCircle(ShowComparisonCircleInfo, false)
|
||||
, _showHabitableZone(ShowHabitableZoneInfo, true)
|
||||
, _useOptimisticZone(UseOptimisticZoneInfo, true)
|
||||
, _habitableZoneOpacity(HabitableZoneOpacityInfo, 0.1f, 0.0f, 1.0f)
|
||||
, _habitableZoneOpacity(HabitableZoneOpacityInfo, 0.1f, 0.f, 1.f)
|
||||
{
|
||||
_exoplanetsDataFolder.setReadOnly(true);
|
||||
|
||||
addProperty(_enabled);
|
||||
|
||||
addProperty(_exoplanetsDataFolder);
|
||||
addProperty(_bvColorMapPath);
|
||||
addProperty(_starTexturePath);
|
||||
@@ -273,6 +285,8 @@ float ExoplanetsModule::habitableZoneOpacity() const {
|
||||
void ExoplanetsModule::internalInitialize(const ghoul::Dictionary& dict) {
|
||||
const Parameters p = codegen::bake<Parameters>(dict);
|
||||
|
||||
_enabled = p.enabled.value_or(true);
|
||||
|
||||
if (p.dataFolder.has_value()) {
|
||||
_exoplanetsDataFolder = p.dataFolder.value().string();
|
||||
}
|
||||
|
||||
@@ -74,6 +74,8 @@ protected:
|
||||
properties::BoolProperty _useOptimisticZone;
|
||||
|
||||
properties::FloatProperty _habitableZoneOpacity;
|
||||
|
||||
properties::BoolProperty _enabled;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
@@ -39,6 +39,12 @@
|
||||
#include "skybrowsermodule_lua.inl"
|
||||
|
||||
namespace {
|
||||
constexpr const openspace::properties::Property::PropertyInfo EnabledInfo = {
|
||||
"Enabled",
|
||||
"Enabled",
|
||||
"Decides if the GUI for this module should be enabled."
|
||||
};
|
||||
|
||||
constexpr const openspace::properties::Property::PropertyInfo AllowRotationInfo = {
|
||||
"AllowCameraRotation",
|
||||
"Allow Camera Rotation",
|
||||
@@ -66,6 +72,9 @@ namespace {
|
||||
};
|
||||
|
||||
struct [[codegen::Dictionary(SkyBrowserModule)]] Parameters {
|
||||
// [[codegen::verbatim(EnabledInfo.description)]]
|
||||
std::optional<bool> enabled;
|
||||
|
||||
// [[codegen::verbatim(AllowRotationInfo.description)]]
|
||||
std::optional<bool> allowCameraRotation;
|
||||
|
||||
@@ -86,11 +95,13 @@ namespace openspace {
|
||||
|
||||
SkyBrowserModule::SkyBrowserModule()
|
||||
: OpenSpaceModule(SkyBrowserModule::Name)
|
||||
, _enabled(EnabledInfo)
|
||||
, _allowCameraRotation(AllowRotationInfo, true)
|
||||
, _cameraRotationSpeed(CameraRotSpeedInfo, 0.5, 0.0, 1.0)
|
||||
, _targetAnimationSpeed(TargetSpeedInfo, 0.2, 0.0, 1.0)
|
||||
, _browserAnimationSpeed(BrowserSpeedInfo, 5.0, 0.0, 10.0)
|
||||
{
|
||||
addProperty(_enabled);
|
||||
addProperty(_allowCameraRotation);
|
||||
addProperty(_cameraRotationSpeed);
|
||||
addProperty(_targetAnimationSpeed);
|
||||
@@ -108,7 +119,7 @@ SkyBrowserModule::SkyBrowserModule()
|
||||
|
||||
global::callback::preSync->emplace_back([this]() {
|
||||
constexpr double SolarSystemRadius = 30.0 * distanceconstants::AstronomicalUnit;
|
||||
|
||||
|
||||
// Disable browser and targets when camera is outside of solar system
|
||||
bool camWasInSolarSystem = _isCameraInSolarSystem;
|
||||
glm::dvec3 cameraPos = global::navigationHandler->camera()->positionVec3();
|
||||
@@ -160,7 +171,8 @@ SkyBrowserModule::SkyBrowserModule()
|
||||
void SkyBrowserModule::internalInitialize(const ghoul::Dictionary& dict) {
|
||||
const Parameters p = codegen::bake<Parameters>(dict);
|
||||
|
||||
// Register ScreenSpaceRenderable
|
||||
_enabled = p.enabled.value_or(true);
|
||||
|
||||
ghoul::TemplateFactory<ScreenSpaceRenderable>* fScreenSpaceRenderable =
|
||||
FactoryManager::ref().factory<ScreenSpaceRenderable>();
|
||||
ghoul_assert(fScreenSpaceRenderable, "ScreenSpaceRenderable factory was not created");
|
||||
@@ -168,7 +180,6 @@ void SkyBrowserModule::internalInitialize(const ghoul::Dictionary& dict) {
|
||||
// Register ScreenSpaceSkyBrowser
|
||||
fScreenSpaceRenderable->registerClass<ScreenSpaceSkyBrowser>("ScreenSpaceSkyBrowser");
|
||||
|
||||
// Register ScreenSpaceRenderable
|
||||
ghoul::TemplateFactory<Renderable>* fRenderable =
|
||||
FactoryManager::ref().factory<Renderable>();
|
||||
ghoul_assert(fRenderable, "Renderable factory was not created");
|
||||
|
||||
@@ -103,6 +103,7 @@ protected:
|
||||
void internalInitialize(const ghoul::Dictionary& dict) override;
|
||||
|
||||
private:
|
||||
properties::BoolProperty _enabled;
|
||||
properties::BoolProperty _allowCameraRotation;
|
||||
properties::DoubleProperty _cameraRotationSpeed;
|
||||
properties::DoubleProperty _targetAnimationSpeed;
|
||||
|
||||
@@ -187,13 +187,10 @@ ModuleConfigurations = {
|
||||
},
|
||||
Space = {
|
||||
ShowExceptions = false
|
||||
},
|
||||
Exoplanets = {
|
||||
ShowComparisonCircle = false,
|
||||
ShowHabitableZone = true,
|
||||
UseOptimisticZone = true,
|
||||
HabitableZoneOpacity = 0.1
|
||||
}
|
||||
-- OBS! The settings for the SkyBrowser and Exoplanets modules are
|
||||
-- set in individual assets, see "data/assets/modules". Note that
|
||||
-- any settings addded here might be overwritten by those assets
|
||||
}
|
||||
|
||||
Fonts = {
|
||||
|
||||
Reference in New Issue
Block a user