mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-03-13 17:09:05 -05:00
Merge branch 'master' of https://github.com/OpenSpace/OpenSpace
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -121,3 +121,4 @@ data/spice/sat375.bsp
|
||||
data/spice/new_horizons/
|
||||
data/scene/mars/map_datasets/mars_COL_v006_mars2000_rgb.tif
|
||||
data/scene/mars/map_datasets/mars_COL_v006_mars2000_rgb.vrt
|
||||
data/spice/Juno/
|
||||
|
||||
@@ -28,9 +28,9 @@ project(OpenSpace)
|
||||
message(STATUS "Generating OpenSpace project")
|
||||
|
||||
set(OPENSPACE_VERSION_MAJOR 0)
|
||||
set(OPENSPACE_VERSION_MINOR 9)
|
||||
set(OPENSPACE_VERSION_MINOR 10)
|
||||
set(OPENSPACE_VERSION_PATCH 0)
|
||||
set(OPENSPACE_VERSION_STRING "prerelease-14 (Astronomy Live)")
|
||||
set(OPENSPACE_VERSION_STRING "prerelease-15 (ASTC)")
|
||||
|
||||
set(OPENSPACE_BASE_DIR "${PROJECT_SOURCE_DIR}")
|
||||
set(OPENSPACE_APPS_DIR "${OPENSPACE_BASE_DIR}/apps")
|
||||
|
||||
@@ -8,4 +8,4 @@ The project stems from the same academic collaboration between Sweden’s [Link
|
||||
|
||||
This repository contains the source code and example scenes for OpenSpace, but does not contain any data. To build and install the client, we refer to the [Wiki](https://github.com/OpenSpace/OpenSpace/wiki) pages here on GitHub, specifically [building](https://github.com/OpenSpace/OpenSpace/wiki/General-Getting-Started-Guide%3A-Compiling-OpenSpace) for [Windows](https://github.com/OpenSpace/OpenSpace/wiki/Guides-Compile-OpenSpace-on-Windows), [Linux](https://github.com/OpenSpace/OpenSpace/wiki/Guides-Compile-OpenSpace-on-Linux), and [MacOS](https://github.com/OpenSpace/OpenSpace/wiki/Guides-Compile-OpenSpace-on-OSX). Required preexisting dependencies are: [Boost](http://www.boost.org/) and [Qt](http://www.qt.io/download). Feel free to create issues for missing features, bug reports, or compile problems or contact us via [email](mailto:alexander.bock@me.com?subject=OpenSpace:).
|
||||
|
||||
Regarding any issues, you are very welcome on our [Slack support channel](https://openspacesupport.slack.com) to which you can freely [sign-up](https://join.slack.com/openspacesupport/shared_invite/MjA4ODY1MDQzNTUzLTE0OTk0MzUyODEtOGZkYTMwNmI5ZA).
|
||||
Regarding any issues, you are very welcome on our [Slack support channel](https://openspacesupport.slack.com) to which you can freely [sign-up](https://join.slack.com/t/openspacesupport/shared_invite/enQtMjUxNzUyMTQ1ODQxLTI4YjNmMTY3ZDI1N2Q1NWM1ZjQ1NTQyNzAxM2YyMGQ5Y2NmYWJiNjI1NjU4YTkyNTc5ZDE5NzdhNGM2YmUzYTk).
|
||||
|
||||
@@ -555,7 +555,8 @@ int main_main(int argc, char** argv) {
|
||||
{ { 4, 2 }, sgct::Engine::RunMode::OpenGL_4_2_Core_Profile },
|
||||
{ { 4, 3 }, sgct::Engine::RunMode::OpenGL_4_3_Core_Profile },
|
||||
{ { 4, 4 }, sgct::Engine::RunMode::OpenGL_4_4_Core_Profile },
|
||||
{ { 4, 5 }, sgct::Engine::RunMode::OpenGL_4_5_Core_Profile }
|
||||
{ { 4, 5 }, sgct::Engine::RunMode::OpenGL_4_5_Core_Profile },
|
||||
{ { 4, 6 }, sgct::Engine::RunMode::OpenGL_4_6_Core_Profile }
|
||||
};
|
||||
ghoul_assert(
|
||||
versionMapping.find(glVersion) != versionMapping.end(),
|
||||
|
||||
123
data/fonts/Bitstream-Vera-Sans-Mono/Bitstream Vera License.txt
Normal file
123
data/fonts/Bitstream-Vera-Sans-Mono/Bitstream Vera License.txt
Normal file
@@ -0,0 +1,123 @@
|
||||
Bitstream Vera Fonts Copyright
|
||||
|
||||
The fonts have a generous copyright, allowing derivative works (as
|
||||
long as "Bitstream" or "Vera" are not in the names), and full
|
||||
redistribution (so long as they are not *sold* by themselves). They
|
||||
can be be bundled, redistributed and sold with any software.
|
||||
|
||||
The fonts are distributed under the following copyright:
|
||||
|
||||
Copyright
|
||||
=========
|
||||
|
||||
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream
|
||||
Vera is a trademark of Bitstream, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the fonts accompanying this license ("Fonts") and associated
|
||||
documentation files (the "Font Software"), to reproduce and distribute
|
||||
the Font Software, including without limitation the rights to use,
|
||||
copy, merge, publish, distribute, and/or sell copies of the Font
|
||||
Software, and to permit persons to whom the Font Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice
|
||||
shall be included in all copies of one or more of the Font Software
|
||||
typefaces.
|
||||
|
||||
The Font Software may be modified, altered, or added to, and in
|
||||
particular the designs of glyphs or characters in the Fonts may be
|
||||
modified and additional glyphs or characters may be added to the
|
||||
Fonts, only if the fonts are renamed to names not containing either
|
||||
the words "Bitstream" or the word "Vera".
|
||||
|
||||
This License becomes null and void to the extent applicable to Fonts
|
||||
or Font Software that has been modified and is distributed under the
|
||||
"Bitstream Vera" names.
|
||||
|
||||
The Font Software may be sold as part of a larger software package but
|
||||
no copy of one or more of the Font Software typefaces may be sold by
|
||||
itself.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
|
||||
BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
|
||||
OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
|
||||
SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of Gnome, the Gnome
|
||||
Foundation, and Bitstream Inc., shall not be used in advertising or
|
||||
otherwise to promote the sale, use or other dealings in this Font
|
||||
Software without prior written authorization from the Gnome Foundation
|
||||
or Bitstream Inc., respectively. For further information, contact:
|
||||
fonts at gnome dot org.
|
||||
|
||||
Copyright FAQ
|
||||
=============
|
||||
|
||||
1. I don't understand the resale restriction... What gives?
|
||||
|
||||
Bitstream is giving away these fonts, but wishes to ensure its
|
||||
competitors can't just drop the fonts as is into a font sale system
|
||||
and sell them as is. It seems fair that if Bitstream can't make money
|
||||
from the Bitstream Vera fonts, their competitors should not be able to
|
||||
do so either. You can sell the fonts as part of any software package,
|
||||
however.
|
||||
|
||||
2. I want to package these fonts separately for distribution and
|
||||
sale as part of a larger software package or system. Can I do so?
|
||||
|
||||
Yes. A RPM or Debian package is a "larger software package" to begin
|
||||
with, and you aren't selling them independently by themselves.
|
||||
See 1. above.
|
||||
|
||||
3. Are derivative works allowed?
|
||||
Yes!
|
||||
|
||||
4. Can I change or add to the font(s)?
|
||||
Yes, but you must change the name(s) of the font(s).
|
||||
|
||||
5. Under what terms are derivative works allowed?
|
||||
|
||||
You must change the name(s) of the fonts. This is to ensure the
|
||||
quality of the fonts, both to protect Bitstream and Gnome. We want to
|
||||
ensure that if an application has opened a font specifically of these
|
||||
names, it gets what it expects (though of course, using fontconfig,
|
||||
substitutions could still could have occurred during font
|
||||
opening). You must include the Bitstream copyright. Additional
|
||||
copyrights can be added, as per copyright law. Happy Font Hacking!
|
||||
|
||||
6. If I have improvements for Bitstream Vera, is it possible they might get
|
||||
adopted in future versions?
|
||||
|
||||
Yes. The contract between the Gnome Foundation and Bitstream has
|
||||
provisions for working with Bitstream to ensure quality additions to
|
||||
the Bitstream Vera font family. Please contact us if you have such
|
||||
additions. Note, that in general, we will want such additions for the
|
||||
entire family, not just a single font, and that you'll have to keep
|
||||
both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add
|
||||
glyphs to the font, they must be stylistically in keeping with Vera's
|
||||
design. Vera cannot become a "ransom note" font. Jim Lyles will be
|
||||
providing a document describing the design elements used in Vera, as a
|
||||
guide and aid for people interested in contributing to Vera.
|
||||
|
||||
7. I want to sell a software package that uses these fonts: Can I do so?
|
||||
|
||||
Sure. Bundle the fonts with your software and sell your software
|
||||
with the fonts. That is the intent of the copyright.
|
||||
|
||||
8. If applications have built the names "Bitstream Vera" into them,
|
||||
can I override this somehow to use fonts of my choosing?
|
||||
|
||||
This depends on exact details of the software. Most open source
|
||||
systems and software (e.g., Gnome, KDE, etc.) are now converting to
|
||||
use fontconfig (see www.fontconfig.org) to handle font configuration,
|
||||
selection and substitution; it has provisions for overriding font
|
||||
names and subsituting alternatives. An example is provided by the
|
||||
supplied local.conf file, which chooses the family Bitstream Vera for
|
||||
"sans", "serif" and "monospace". Other software (e.g., the XFree86
|
||||
core server) has other mechanisms for font substitution.
|
||||
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono-Bold-Italic.ttf
Normal file
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono-Bold-Italic.ttf
Normal file
Binary file not shown.
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono-Bold.ttf
Normal file
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono-Bold.ttf
Normal file
Binary file not shown.
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono-Italic.ttf
Normal file
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono-Italic.ttf
Normal file
Binary file not shown.
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono.ttf
Normal file
BIN
data/fonts/Bitstream-Vera-Sans-Mono/VeraMono.ttf
Normal file
Binary file not shown.
BIN
data/fonts/arimo/Arimo-Bold.ttf
Normal file
BIN
data/fonts/arimo/Arimo-Bold.ttf
Normal file
Binary file not shown.
BIN
data/fonts/arimo/Arimo-BoldItalic.ttf
Normal file
BIN
data/fonts/arimo/Arimo-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
data/fonts/arimo/Arimo-Italic.ttf
Normal file
BIN
data/fonts/arimo/Arimo-Italic.ttf
Normal file
Binary file not shown.
BIN
data/fonts/arimo/Arimo-Regular.ttf
Normal file
BIN
data/fonts/arimo/Arimo-Regular.ttf
Normal file
Binary file not shown.
202
data/fonts/arimo/LICENSE.txt
Normal file
202
data/fonts/arimo/LICENSE.txt
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -20,6 +20,7 @@ return {
|
||||
SourceFrame = "J2000",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Milky Way/Stars"
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,25 @@
|
||||
-- Add folders to this list that contain .info files describing HiRISE patches
|
||||
local mars_folders = {
|
||||
-- Add a folder here whose contents will be automatically added to the Mars globe
|
||||
-- If multiple folders are added, the results will be added sequentially, meaning that
|
||||
-- if areas overlap (for example CTX and HiRISE) and CTX is specified *after* HiRISE,
|
||||
-- CTX will stomp over the HiRISE
|
||||
--
|
||||
-- tl;dr: Specify CTX folders first, then HiRISE
|
||||
local vrt_folders = {
|
||||
Mars = {
|
||||
-- Add folders here whose contents will be automatically added to the Mars globe
|
||||
-- If multiple folders are added, the results will be added sequentially, meaning that
|
||||
-- if areas overlap (for example CTX and HiRISE) and CTX is specified *after* HiRISE,
|
||||
-- CTX will stomp over the HiRISE
|
||||
--
|
||||
-- tl;dr: Specify CTX folders first, then HiRISE
|
||||
-- example: 'C:/OpenSpace/GlobeBrowsingData/Mars/CTX'
|
||||
},
|
||||
Moon = {
|
||||
-- Add folders here whose contents will be automatically added to the Moon globe
|
||||
-- If multiple folders are added, the results will be added sequentially, meaning that
|
||||
-- if areas overlap, images from the lower results will overwrite the images from former
|
||||
-- results
|
||||
-- example: 'C:/OpenSpace/GlobeBrowsingData/Moon'
|
||||
}
|
||||
}
|
||||
|
||||
dofile(openspace.absPath('${SCRIPTS}/scene_helper.lua'))
|
||||
|
||||
function preInitialization()
|
||||
--[[
|
||||
The scripts in this function are executed after the scene is loaded but before the
|
||||
@@ -22,7 +34,6 @@ function preInitialization()
|
||||
openspace.time.setTime(openspace.time.currentWallTime())
|
||||
dofile(openspace.absPath('${SCRIPTS}/bind_common_keys.lua'))
|
||||
|
||||
|
||||
-- Toggle night texture, shading, atmosphere and water
|
||||
openspace.bindKey("s",
|
||||
helper.property.invert('Earth.RenderableGlobe.Layers.NightLayers.Earth at Night 2012.Enabled') ..
|
||||
@@ -91,10 +102,23 @@ function postInitialization()
|
||||
|
||||
openspace.printInfo("Done setting default values")
|
||||
|
||||
-- Add the CTX and HiRISE patches described at the top of this file
|
||||
for _, file in pairs(mars_folders) do
|
||||
openspace.globebrowsing.addBlendingLayersFromDirectory(file, "Mars")
|
||||
-- Add local patches described at the top of this file
|
||||
for obj, list in pairs(vrt_folders) do
|
||||
print(obj)
|
||||
print(list)
|
||||
for _, dir in pairs(list) do
|
||||
print(dir)
|
||||
openspace.globebrowsing.addBlendingLayersFromDirectory(dir, obj)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- Defined in scene_helper.lua
|
||||
-- Used to create focus buttons for a subset of scenegraph nodes
|
||||
mark_interesting_nodes({
|
||||
"Earth", "Mars", "Moon"
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Earth"
|
||||
},
|
||||
{
|
||||
-- The default reference frame for Earth-orbiting satellites
|
||||
@@ -23,7 +24,8 @@ return {
|
||||
SourceFrame = "J2000",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Earth"
|
||||
},
|
||||
-- EarthTrail module
|
||||
{
|
||||
@@ -44,7 +46,7 @@ return {
|
||||
Resolution = 1000
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_terrestrial" },
|
||||
GuiName = "/Solar/EarthTrail"
|
||||
GuiPath = "/Solar System/Planets/Earth"
|
||||
},
|
||||
-- RenderableGlobe module
|
||||
{
|
||||
@@ -57,7 +59,6 @@ return {
|
||||
DestinationFrame = "GALACTIC",
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_terrestrial" },
|
||||
Renderable = {
|
||||
Type = "RenderableGlobe",
|
||||
Radii = earthEllipsoid,
|
||||
@@ -212,6 +213,8 @@ return {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_terrestrial" },
|
||||
GuiPath = "/Solar System/Planets/Earth"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@ return {
|
||||
-0.9938214 , -0.1109906, -0.0003515167, 0.0,
|
||||
-0.09647644, 0.8622859, 0.4971472 , 0.0,
|
||||
0.0 , 0.0 , 0.0 , 1.0 }
|
||||
}
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
},
|
||||
{
|
||||
Name = "Equatorial Grid",
|
||||
@@ -24,7 +25,8 @@ return {
|
||||
-0.8734371 , -0.4448296, -0.1980764, 0.0,
|
||||
-0.483835 , 0.7469823, 0.4559838, 0.0,
|
||||
0.0 , 0.0 , 0.0 , 1.0 }
|
||||
}
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
},
|
||||
{
|
||||
Name = "Galactic Grid",
|
||||
@@ -33,6 +35,7 @@ return {
|
||||
Type = "RenderableSphericalGrid",
|
||||
LineWidth = 0.75,
|
||||
GridColor = { 0.0, 0.75, 0.75, 1.0}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
dofile(openspace.absPath('${SCRIPTS}/scene_helper.lua'))
|
||||
|
||||
function preInitialization()
|
||||
--[[
|
||||
The scripts in this function are executed after the scene is loaded but before the
|
||||
@@ -8,7 +10,7 @@ function preInitialization()
|
||||
openspace.spice.loadKernel("${SPICE}/naif0012.tls")
|
||||
openspace.spice.loadKernel("${SPICE}/pck00010.tpc")
|
||||
|
||||
openspace.time.setTime("2016-07-05T10:05:00.00")
|
||||
openspace.time.setTime("2016-07-01T10:05:00.00")
|
||||
|
||||
dofile(openspace.absPath('${SCRIPTS}/common.lua'))
|
||||
openspace.clearKeys()
|
||||
@@ -36,6 +38,10 @@ function postInitialization()
|
||||
openspace.setPropertyValue('Jupiter.renderable.PerformShading', false);
|
||||
|
||||
openspace.printInfo("Done setting default values")
|
||||
|
||||
mark_interesting_nodes({
|
||||
"Jupiter", "Juno"
|
||||
})
|
||||
end
|
||||
|
||||
return {
|
||||
@@ -43,7 +49,8 @@ return {
|
||||
CommonFolder = "common",
|
||||
Camera = {
|
||||
Focus = "Juno",
|
||||
Position = {1, 0, 0, 5},
|
||||
Position = {1837386367.601345, -389860693812.834839, 714830404470.398926},
|
||||
Rotation = {-0.336540, 0.711402, -0.099212, 0.608937},
|
||||
},
|
||||
Modules = {
|
||||
"sun",
|
||||
|
||||
@@ -29,7 +29,8 @@ return {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
|
||||
-- Trail module
|
||||
@@ -46,6 +47,7 @@ return {
|
||||
Color = { 0.4, 0.3, 0.01 },
|
||||
Period = 17,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ return {
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
|
||||
-- Trail module
|
||||
@@ -46,6 +47,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 85 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ return {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
-- Trail module
|
||||
{
|
||||
@@ -45,6 +46,7 @@ return {
|
||||
Color = { 0.4, 0.3, 0.3 },
|
||||
Period = 172 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ return {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
-- Trail module
|
||||
{
|
||||
@@ -45,6 +46,7 @@ return {
|
||||
Color = { 0.4, 0.4, 0.2 },
|
||||
Period = 42 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter"
|
||||
},
|
||||
-- RenderableGlobe module
|
||||
{
|
||||
@@ -38,6 +39,7 @@ return {
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_giants" },
|
||||
GuiPath = "/Solar System/Planets/Jupiter"
|
||||
},
|
||||
-- Trail module
|
||||
{
|
||||
@@ -54,6 +56,7 @@ return {
|
||||
Period = 4330.595,
|
||||
Resolution = 1000
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" }
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" },
|
||||
GuiPath = "/Solar System/Planets/Jupiter"
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Mars"
|
||||
},
|
||||
-- RenderableGlobe module
|
||||
{
|
||||
@@ -131,6 +132,7 @@ return {
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_terrestrial" },
|
||||
GuiPath = "/Solar System/Planets/Mars"
|
||||
},
|
||||
|
||||
-- Trail module
|
||||
@@ -148,6 +150,7 @@ return {
|
||||
Period = 686.973,
|
||||
Resolution = 1000
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_terrestrial" }
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_terrestrial" },
|
||||
GuiPath = "/Solar System/Planets/Mars"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Mercury"
|
||||
},
|
||||
-- RenderableGlobe module
|
||||
{
|
||||
@@ -55,6 +56,7 @@ return {
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_terrestrial" },
|
||||
GuiPath = "/Solar System/Planets/Mercury"
|
||||
},
|
||||
-- Trail module
|
||||
{
|
||||
@@ -71,6 +73,7 @@ return {
|
||||
Period = 87.968,
|
||||
Resolution = 100
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_terrestrial" }
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_terrestrial" },
|
||||
GuiPath = "/Solar System/Planets/Mercury"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ return {
|
||||
Alpha = 0.2,
|
||||
Texture = "textures/DarkUniverse_mellinger_8k.jpg",
|
||||
Orientation = "Inside/Outside"
|
||||
}
|
||||
},
|
||||
GuiPath = "/Milky Way/Milky Way"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ return {
|
||||
Segments = 40,
|
||||
Texture = "textures/eso0932a_blend.png",
|
||||
Orientation = "Inside/Outside"
|
||||
}
|
||||
},
|
||||
GuiPath = "/Milky Way/Milky Way"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,8 @@ return {
|
||||
Type = "Spice",
|
||||
Frame = "IAU_CERES",
|
||||
Reference = "GALACTIC"
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Ceres"
|
||||
},
|
||||
--[[ Ceres Trail Module
|
||||
{
|
||||
|
||||
@@ -19,6 +19,7 @@ return {
|
||||
StartTime = "2007 SEP 27 08:15:00",
|
||||
EndTime = "2012 SEP 12 23:57:00"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn",
|
||||
Ephemeris = {
|
||||
Type = "Spice",
|
||||
Body = "DAWN",
|
||||
@@ -637,6 +638,7 @@ return {
|
||||
Destination = "GALACTIC"
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
},
|
||||
|
||||
-- Dawn Solar Array module 2
|
||||
@@ -660,6 +662,7 @@ return {
|
||||
StartTime = "2007 SEP 27 08:15:00",
|
||||
EndTime = "2012 SEP 12 12:00:00"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
},
|
||||
|
||||
-- Dawn Trail Module
|
||||
@@ -702,6 +705,7 @@ return {
|
||||
EndTime = "2012 SEP 12 12:00:00",
|
||||
SampleInterval = 3600 * 24
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
},
|
||||
--
|
||||
-- -- Dawn Trail Module
|
||||
@@ -753,6 +757,7 @@ return {
|
||||
"CERES"
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
},
|
||||
|
||||
-- DawnFov 1
|
||||
@@ -779,5 +784,6 @@ return {
|
||||
"CERES"
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
},
|
||||
}
|
||||
|
||||
@@ -93,7 +93,8 @@ return {
|
||||
--"${OPENSPACE_DATA}/spice/DAWN_KERNELS/pck/dawn_vesta_v06.tpc",
|
||||
"${OPENSPACE_DATA}/spice/DawnKernels/spk/sb_vesta_071107.bsp",
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Asteroid Belt/Vesta"
|
||||
},
|
||||
-- Vesta Trail Module
|
||||
{
|
||||
@@ -110,6 +111,7 @@ return {
|
||||
StartTime = "2007 JUL 20 12:00:00",
|
||||
EndTime = "2018 JAN 22 12:00:00",
|
||||
SampleInterval = 3600 * 24
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Asteroid Belt/Vesta"
|
||||
}
|
||||
}
|
||||
|
||||
BIN
data/scene/missions/juno/juno/Juno.torrent
Normal file
BIN
data/scene/missions/juno/juno/Juno.torrent
Normal file
Binary file not shown.
9
data/scene/missions/juno/juno/juno.data
Normal file
9
data/scene/missions/juno/juno/juno.data
Normal file
@@ -0,0 +1,9 @@
|
||||
return {
|
||||
FileRequest = {
|
||||
{ Identifier = "juno_model", Destination = ".", Version = 1 },
|
||||
{ Identifier = "juno_textures", Destination = "textures", Version = 1 }
|
||||
},
|
||||
TorrentFiles = {
|
||||
{ File = "Juno.torrent", Destination = "${SPICE}" },
|
||||
}
|
||||
}
|
||||
@@ -1,138 +1,160 @@
|
||||
local JunoKernels = {
|
||||
"${SPICE}/Juno/JNO_SCLKSCET.00039.tsc",
|
||||
"${SPICE}/Juno/juno_jade_v00.ti",
|
||||
"${SPICE}/Juno/juno_jedi_v00.ti",
|
||||
"${SPICE}/Juno/juno_jiram_v01.ti",
|
||||
"${SPICE}/Juno/juno_junocam_v00.ti",
|
||||
"${SPICE}/Juno/juno_mag_v00.ti",
|
||||
"${SPICE}/Juno/juno_mwr_v01.ti",
|
||||
"${SPICE}/Juno/juno_struct_v01.ti",
|
||||
"${SPICE}/Juno/juno_uvs_v00.ti",
|
||||
"${SPICE}/Juno/juno_v08.tf",
|
||||
"${SPICE}/Juno/juno_waves_v00.ti",
|
||||
"${SPICE}/Juno/juno_mwr_v01.ti",
|
||||
"${SPICE}/Juno/spk_merge_110805_171017_130515.bsp",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_110930_111028_jc003c01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_111028_111125_jc004b00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_111125_111223_jc005b00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_111223_120127_jc006a02_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120127_120217_jc007a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120217_120316_jc008b00_v02.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120316_120413_jc009a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120413_120511_jc010a04_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120511_120608_jc011a01_v02.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120608_120706_jc012b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120706_120802_jc013a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120802_120824_jc014b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120824_120928_jc015m00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120919_120928_jc015o00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_120928_121026_jc016c03_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_121026_121123_jc017a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_121123_121221_jc018b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_121221_130118_jc019a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130118_130215_jc020b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130315_130412_jc022b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130412_130510_jc023b03_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130510_130607_jc024a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130607_130705_jc025a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130705_130802_jc026a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130726_131020_jx024a02_EFB_v03.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130802_130830_jc027a02_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130830_130927_jc028a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130926_131025_jc029a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_130927_131025_jc029c01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_131022_131025_jc029f00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_131025_131122_jc030b04_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_131122_131220_jc031b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_131220_140124_jc032a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140124_140214_jc033a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140214_140314_jc034b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140314_140411_jc035a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140411_140509_jc036b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140509_140606_jc037b02_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140606_140704_jc038a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140704_140801_jc039b01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140801_140829_jc040a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140829_140926_jc041a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_140926_141024_jc042a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_141024_141121_jc043a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_141105_141121_jc043m01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_141107_141121_jc043s01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_141121_141219_jc044a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_141219_150123_jc045a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150123_150213_jc046a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150213_150313_jc047a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150312_150409_jc048a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150410_150508_jc049a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150508_150605_jc050a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150605_150703_jc051a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150703_150731_jc052a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150731_150828_jc053a01_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150805_150828_jc053m00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150807_150828_jc053s00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150828_150924_jc054a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_150924_151023_jc055a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_151023_151120_jc056a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_151120_151218_jc057a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_151218_160115_jc058a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160115_160212_jc059a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160212_160311_jc060a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160311_160408_jc061a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160408_160506_jc062a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160506_160603_jc063a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160603_160630_jc064a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160708_160729_jm0001rp_v02.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160729_160826_jm0002rp_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160827_160920_jm0003a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_160924_161019_jm0004a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_161014_161115_jm0005a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_161022_161115_jm0005b00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_161115_161213_jx0405rp_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_161210_170115_jm0031a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170115_170201_jm0032a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170201_170309_jm0041a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170309_170326_jm0042rp_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170326_170427_jm0051rp_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170427_170518_jm0052rp_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170518_170615_jm0061a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170615_170710_jm0062a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170710_170805_jm0071a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170805_170831_jm0072a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170831_170927_jm0081a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_170927_171023_jm0082a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_171023_171030_jm0091a00_v01.bc",
|
||||
"${SPICE}/Juno/ck/juno_sc_prl_171023_171030_jm0091a00_v01.bc"
|
||||
}
|
||||
|
||||
|
||||
local RotationMatrix = {
|
||||
0, 1, 0,
|
||||
0, 0, 1,
|
||||
1, 0, 0
|
||||
}
|
||||
|
||||
return {
|
||||
-- New Horizons Body module
|
||||
{
|
||||
Name = "Juno",
|
||||
-- Parent = "PlutoBarycenter",
|
||||
-- Parent = "JupiterBarycenter",
|
||||
Parent = "JupiterBarycenter",
|
||||
Parent = "JupiterBarycenter",
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Body = "JUNO",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = "Juno.obj",
|
||||
Magnification = 4,
|
||||
},
|
||||
ColorTexture = "textures/gray.png",
|
||||
ColorTexture = "textures/gray.png",
|
||||
ModelTransform = RotationMatrix
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUNO",
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = JunoKernels
|
||||
},
|
||||
Rotation = {
|
||||
Source = "JUNO_SPACECRAFT",
|
||||
Destination = "GALACTIC",
|
||||
ModelTransform = {
|
||||
1.0, 0.0, 0.0,
|
||||
0.0, 0.0, 1.0,
|
||||
0.0, -1.0, 0.0
|
||||
}
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "JUNO_SPACECRAFT",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
},
|
||||
|
||||
Ephemeris = {
|
||||
Type = "Spice",
|
||||
Body = "JUNO",
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = {
|
||||
"spice/JNO_SCLKSCET.00039.tsc",
|
||||
"spice/juno_jade_v00.ti",
|
||||
"spice/juno_jedi_v00.ti",
|
||||
"spice/juno_jiram_v01.ti",
|
||||
"spice/juno_junocam_v00.ti",
|
||||
"spice/juno_mag_v00.ti",
|
||||
"spice/juno_mwr_v01.ti",
|
||||
"spice/juno_struct_v01.ti",
|
||||
"spice/juno_uvs_v00.ti",
|
||||
"spice/juno_v08.tf",
|
||||
"spice/juno_waves_v00.ti",
|
||||
"spice/juno_mwr_v01.ti",
|
||||
"spice/spk_merge_110805_171017_130515.bsp",
|
||||
"spice/ck/juno_sc_prl_110930_111028_jc003c01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_111028_111125_jc004b00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_111125_111223_jc005b00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_111223_120127_jc006a02_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120127_120217_jc007a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120217_120316_jc008b00_v02.bc",
|
||||
"spice/ck/juno_sc_prl_120316_120413_jc009a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120413_120511_jc010a04_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120511_120608_jc011a01_v02.bc",
|
||||
"spice/ck/juno_sc_prl_120608_120706_jc012b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120706_120802_jc013a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120802_120824_jc014b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120824_120928_jc015m00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120919_120928_jc015o00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_120928_121026_jc016c03_v01.bc",
|
||||
"spice/ck/juno_sc_prl_121026_121123_jc017a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_121123_121221_jc018b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_121221_130118_jc019a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130118_130215_jc020b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130315_130412_jc022b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130412_130510_jc023b03_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130510_130607_jc024a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130607_130705_jc025a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130705_130802_jc026a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130726_131020_jx024a02_EFB_v03.bc",
|
||||
"spice/ck/juno_sc_prl_130802_130830_jc027a02_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130830_130927_jc028a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130926_131025_jc029a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_130927_131025_jc029c01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_131022_131025_jc029f00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_131025_131122_jc030b04_v01.bc",
|
||||
"spice/ck/juno_sc_prl_131122_131220_jc031b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_131220_140124_jc032a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140124_140214_jc033a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140214_140314_jc034b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140314_140411_jc035a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140411_140509_jc036b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140509_140606_jc037b02_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140606_140704_jc038a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140704_140801_jc039b01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140801_140829_jc040a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140829_140926_jc041a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_140926_141024_jc042a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_141024_141121_jc043a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_141105_141121_jc043m01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_141107_141121_jc043s01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_141121_141219_jc044a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_141219_150123_jc045a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150123_150213_jc046a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150213_150313_jc047a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150312_150409_jc048a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150410_150508_jc049a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150508_150605_jc050a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150605_150703_jc051a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150703_150731_jc052a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150731_150828_jc053a01_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150805_150828_jc053m00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150807_150828_jc053s00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150828_150924_jc054a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_150924_151023_jc055a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_151023_151120_jc056a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_151120_151218_jc057a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_151218_160115_jc058a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_160115_160212_jc059a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_160212_160311_jc060a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_160311_160408_jc061a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_160408_160506_jc062a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_160506_160603_jc063a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_160603_160630_jc064a00_v01.bc",
|
||||
"spice/ck/juno_sc_prl_160708_160729_jm0001rp_v02.bc",
|
||||
"spice/ck/juno_sc_prl_160729_160826_jm0002rp_v01.bc",
|
||||
"spice/ck/juno_sc_prl_161115_161213_jx0405rp_v01.bc"
|
||||
}
|
||||
}
|
||||
GuiName = "/Solar System/Missions/Juno"
|
||||
},
|
||||
--NewHorizonsTrail module
|
||||
{
|
||||
{
|
||||
Name = "JunoTrail",
|
||||
Parent = "JupiterBarycenter",
|
||||
Renderable = {
|
||||
Type = "RenderableTrailTrajectory",
|
||||
Translation = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUNO",
|
||||
Observer = "JUPITER BARYCENTER"
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = JunoKernels
|
||||
},
|
||||
Color = { 0.70, 0.50, 0.20 },
|
||||
StartTime = "2016 JUN 28",
|
||||
EndTime = "2016 APR 01",
|
||||
SampleInterval = 3600
|
||||
Color = { 0.70,0.50,0.20 },
|
||||
StartTime = "2016 JUL 01",
|
||||
EndTime = "2016 DEC 13",
|
||||
SampleInterval = 2
|
||||
},
|
||||
},
|
||||
GuiName = "/Solar System/Missions/Juno"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
{
|
||||
Name = "CallistoText",
|
||||
@@ -79,6 +80,7 @@ return {
|
||||
Position = {0, -10000000, 0}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
-- CallistoTrail module
|
||||
{
|
||||
@@ -94,6 +96,7 @@ return {
|
||||
Color = { 0.4, 0.3, 0.01 },
|
||||
Period = 17,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
{
|
||||
Name = "EuropaText",
|
||||
@@ -79,6 +80,7 @@ return {
|
||||
Position = {0, -10000000, 0}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
-- EuropaTrail module
|
||||
{
|
||||
@@ -94,6 +96,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 85 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
{
|
||||
Name = "GanymedeText",
|
||||
@@ -73,6 +74,7 @@ return {
|
||||
Position = {0, -10000000, 0}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
-- GanymedeTrail module
|
||||
{
|
||||
@@ -88,6 +90,7 @@ return {
|
||||
Color = { 0.4, 0.3, 0.3 },
|
||||
Period = 172 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
--[[
|
||||
Ephemeris = {
|
||||
Type = "Spice",
|
||||
@@ -89,6 +90,7 @@ return {
|
||||
Position = {0, -10000000, 0}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
},
|
||||
-- IoTrail module
|
||||
{
|
||||
@@ -104,6 +106,7 @@ return {
|
||||
Color = { 0.4, 0.4, 0.2 },
|
||||
Period = 42 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,6 +98,7 @@ return {
|
||||
DestinationFrame = "GALACTIC",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter"
|
||||
},
|
||||
{
|
||||
Name = "JupiterText",
|
||||
@@ -116,7 +117,8 @@ return {
|
||||
Position = {0, -100000000, 0}
|
||||
},
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter"
|
||||
},
|
||||
-- JupiterTrail module
|
||||
{
|
||||
Name = "JupiterTrail",
|
||||
@@ -131,7 +133,8 @@ return {
|
||||
Color = { 0.8, 0.7, 0.7 },
|
||||
Period = 4330.595,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Jupiter"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
122
data/scene/missions/newhorizons/newhorizons/newhorizons.mission
Normal file
122
data/scene/missions/newhorizons/newhorizons/newhorizons.mission
Normal file
@@ -0,0 +1,122 @@
|
||||
-- Source: http://pluto.jhuapl.edu/Mission/index.php
|
||||
-- Many of the values (especially days of the month if 01 or 30 or 31 and hh::mm::ss if all 0)
|
||||
-- are approximate and need fixing
|
||||
|
||||
return {
|
||||
Name = "New Horizons",
|
||||
Phases = {
|
||||
{
|
||||
Name = "Cruise Phase",
|
||||
TimeRange = { Start = "2006 JAN 19 00:00:00", End = "2015 JAN 15 00:00:00" },
|
||||
Phases = {
|
||||
{
|
||||
Name = "Jupiter fly-by",
|
||||
TimeRange = { Start = "2007 FEB 28 00:00:00", End = "2007 FEB 28 23:59:59" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 1",
|
||||
TimeRange = { Start = "2007 SEP 01 00:00:00", End = "2007 NOV 30 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 2",
|
||||
TimeRange = { Start = "2008 JUL 01 00:00:00", End = "2008 AUG 31 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 3",
|
||||
TimeRange = { Start = "2009 JUL 01 00:00:00", End = "2009 AUG 31 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 4",
|
||||
TimeRange = { Start = "2010 MAY 01 00:00:00", End = "2010 JUL 31 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 5",
|
||||
TimeRange = { Start = "2011 MAY 01 00:00:00", End = "2011 JUL 31 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 6",
|
||||
TimeRange = { Start = "2012 MAY 01 00:00:00", End = "2012 JUL 31 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 7",
|
||||
TimeRange = { Start = "2013 MAY 01 00:00:00", End = "2013 AUG 31 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Annual checkout 8 and Optical Navigation campaign 1",
|
||||
TimeRange = { Start = "2014 JUN 01 00:00:00", End = "2014 AUG 31 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Final Wakeup from Hibernation",
|
||||
TimeRange = { Start = "2014 DEC 06 00:00:00", End = "2014 DEC 06 23:59:59" }
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
Name = "Pluto Encounter/Approach Phase 1",
|
||||
TimeRange = { Start = "2015 JAN 15 00:00:00", End = "2015 APR 01 00:00:00" },
|
||||
Phases = {
|
||||
{
|
||||
Name = "Optical nagivation campaign 2",
|
||||
TimeRange = { Start = "2015 JAN 25 00:00:00", End = "2015 APR 01 00:00:00" }
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
Name = "Pluto Encounter/Approach Phase 2",
|
||||
TimeRange = { Start = "2015 APR 01 00:00:00", End = "2015 JUN 01 00:00:00" },
|
||||
Phases = {
|
||||
{
|
||||
Name = "Best-ever images of Pluto",
|
||||
TimeRange = { Start = "2015 MAY 01 00:00:00", End = "2015 JUN 01 00:00:00" }
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
Name = "Pluto Encounter/Approach Phase 3",
|
||||
TimeRange = { Start = "2015 JUN 01 00:00:00", End = "2015 JUL 15 00:00:00" },
|
||||
Phases = {
|
||||
{
|
||||
Name = "Closest approach to Pluto",
|
||||
TimeRange = { Start = "2015 JUL 14 11:49:57", End = "2015 JUL 14 11:49:58" }
|
||||
},
|
||||
{
|
||||
Name = "Closest approach to Charon",
|
||||
TimeRange = { Start = "2015 JUL 14 12:03:50", End = "2015 JUL 14 12:03:51" }
|
||||
},
|
||||
{
|
||||
Name = "Pluto-Sun Occultation",
|
||||
TimeRange = { Start = "2015 JUL 14 12:51:25", End = "2015 JUL 14 12:52:00" }
|
||||
},
|
||||
{
|
||||
Name = "Pluto-Earth Occultation",
|
||||
TimeRange = { Start = "2015 JUL 14 12:52:27", End = "2015 JUL 14 12:53:00" }
|
||||
},
|
||||
{
|
||||
Name = "Charon-Sun Occultation",
|
||||
TimeRange = { Start = "2015 JUL 14 14:17:40", End = "2015 JUL 14 14:18:00" }
|
||||
},
|
||||
{
|
||||
Name = "Charon-Earth Occultation",
|
||||
TimeRange = { Start = "2015 JUL 14 14:20:00", End = "2015 JUL 14 14:21:00" }
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
Name = "Departure Phase 1",
|
||||
TimeRange = { Start = "2015 JUL 15 00:00:00", End = "2015 AUG 01 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Departure Phase 2",
|
||||
TimeRange = { Start = "2015 AUG 01 00:00:00", End = "2015 OCT 01 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Departure Phase 3",
|
||||
TimeRange = { Start = "2015 OCT 01 00:00:00", End = "2016 JAN 01 00:00:00" }
|
||||
},
|
||||
{
|
||||
Name = "Data Playback Ends",
|
||||
TimeRange = { Start = "2016 OCT 01 00:00:00", End = "2016 DEC 01 00:00:00" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ return {
|
||||
SourceFrame = "NH_SPACECRAFT",
|
||||
DestinationFrame = "GALACTIC",
|
||||
},
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
{
|
||||
Name = "NewHorizons",
|
||||
@@ -67,6 +68,7 @@ return {
|
||||
Ghosting = false,
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
--NewHorizonsTrail module
|
||||
--[[{
|
||||
@@ -118,7 +120,8 @@ return {
|
||||
Fadeable = false,
|
||||
Ghosting = false,
|
||||
},
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
{
|
||||
Name = "NewHorizonsTrailPluto",
|
||||
@@ -140,6 +143,7 @@ return {
|
||||
EnableFade = false,
|
||||
Rendering = "Lines+Points"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
--[[
|
||||
-- NewHorizonsPath module
|
||||
|
||||
@@ -28,306 +28,318 @@ return {
|
||||
Type = "StaticTranslation",
|
||||
Position = LorriOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_LEISA
|
||||
{
|
||||
Name = "NH_RALPH_LEISA",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_LEISA",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_PAN1
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_PAN1",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_PAN1",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_PAN2
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_PAN2",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_PAN2",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_RED
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_RED",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_RED",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_BLUE
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_BLUE",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_BLUE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_FT
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_FT",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_FT",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_METHANE
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_METHANE",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_METHANE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_NIR
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_NIR",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_NIR",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_ALICE_AIRGLOW
|
||||
{
|
||||
Name = "NH_ALICE_AIRGLOW",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_ALICE_AIRGLOW",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = AliceOffset
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_ALICE_SOC
|
||||
{
|
||||
Name = "NH_ALICE_SOC",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_ALICE_SOC",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = AliceOffset
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
-- Module NH_REX
|
||||
{
|
||||
Name = "NH_REX",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableCrawlingLine",
|
||||
Source = "NH_REX",
|
||||
Target = "EARTH",
|
||||
Instrument = "NH_REX",
|
||||
Color = {
|
||||
Start = { 1.0, 0.7, 0.0, 1.0},
|
||||
End = {0.0, 0.0, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = {
|
||||
0.0, 1.0, 0.0,
|
||||
0.0, 0.0, 1.0,
|
||||
1.0, 0.0, 0.0
|
||||
{
|
||||
Name = "NH_RALPH_LEISA",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_LEISA",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RexOffset
|
||||
}
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_PAN1
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_PAN1",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_PAN1",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_PAN2
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_PAN2",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_PAN2",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_RED
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_RED",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_RED",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_BLUE
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_BLUE",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_BLUE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_FT
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_FT",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_FT",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_METHANE
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_METHANE",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_METHANE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_RALPH_MVIC_NIR
|
||||
{
|
||||
Name = "NH_RALPH_MVIC_NIR",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_RALPH_MVIC_NIR",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RalphOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_ALICE_AIRGLOW
|
||||
{
|
||||
Name = "NH_ALICE_AIRGLOW",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_ALICE_AIRGLOW",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = AliceOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- NewHorizonsFov module NH_ALICE_SOC
|
||||
{
|
||||
Name = "NH_ALICE_SOC",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_ALICE_SOC",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
"Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = AliceOffset
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
},
|
||||
|
||||
-- Module NH_REX
|
||||
{
|
||||
Name = "NH_REX",
|
||||
Parent = "NewHorizonsPosition",
|
||||
Renderable = {
|
||||
Type = "RenderableCrawlingLine",
|
||||
Source = "NH_REX",
|
||||
Target = "EARTH",
|
||||
Instrument = "NH_REX",
|
||||
Color = {
|
||||
Start = { 1.0, 0.7, 0.0, 1.0},
|
||||
End = {0.0, 0.0, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = {
|
||||
0.0, 1.0, 0.0,
|
||||
0.0, 0.0, 1.0,
|
||||
1.0, 0.0, 0.0
|
||||
}
|
||||
},
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = RexOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ return {
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "CharonText",
|
||||
@@ -73,6 +74,7 @@ return {
|
||||
Position = {0, -1000000, 0}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "CharonShadow",
|
||||
@@ -86,9 +88,10 @@ return {
|
||||
BodyFrame = "IAU_CHARON",
|
||||
Aberration = "NONE",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- CharonTrail module
|
||||
{
|
||||
{
|
||||
Name = "CharonTrail",
|
||||
Parent = "PlutoBarycenter",
|
||||
Renderable = {
|
||||
@@ -102,5 +105,6 @@ return {
|
||||
Period = 6.38725,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000"
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "HydraText",
|
||||
@@ -51,6 +52,7 @@ return {
|
||||
Position = {1000000, 0, 1000000},
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- HydraTrail module
|
||||
{
|
||||
@@ -67,6 +69,7 @@ return {
|
||||
Period = 38.20177,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000"
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "KerberosText",
|
||||
@@ -51,7 +52,8 @@ return {
|
||||
Position = {1000000, 0, 1000000},
|
||||
},
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- KerberosTrail module
|
||||
{
|
||||
Name = "KerberosTrail",
|
||||
@@ -67,6 +69,6 @@ return {
|
||||
Period = 32.16756,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000"
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "NixText",
|
||||
@@ -45,6 +46,7 @@ return {
|
||||
Billboard = true,
|
||||
Texture = "textures/Nix-Text.png"
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- NixTrail module
|
||||
{
|
||||
@@ -61,6 +63,6 @@ return {
|
||||
Period = 24.85463,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ return {
|
||||
Kernels = NewHorizonsKernels
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- Pluto module
|
||||
{
|
||||
@@ -122,7 +123,7 @@ return {
|
||||
},
|
||||
},
|
||||
|
||||
Instrument = {
|
||||
Instrument = {
|
||||
Name = "NH_LORRI",
|
||||
Method = "ELLIPSOID",
|
||||
Aberration = "NONE",
|
||||
@@ -155,8 +156,9 @@ return {
|
||||
DestinationFrame = "GALACTIC",
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
{
|
||||
Name = "PlutoBarycenterLabel",
|
||||
Parent = "PlutoBarycenter",
|
||||
Renderable = {
|
||||
@@ -170,6 +172,7 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "PlutoText",
|
||||
@@ -188,6 +191,7 @@ return {
|
||||
Position = {0, -2000000, 0}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "PlutoTexture",
|
||||
@@ -206,6 +210,7 @@ return {
|
||||
Position = {0, -4000000, 0}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "PlutoShadow",
|
||||
@@ -219,6 +224,7 @@ return {
|
||||
BodyFrame = "IAU_PLUTO",
|
||||
Aberration = "NONE",
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- PlutoBarycentricTrail module
|
||||
{
|
||||
@@ -235,6 +241,7 @@ return {
|
||||
Period = 6.38723,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- PlutoTrail module
|
||||
{
|
||||
@@ -253,5 +260,6 @@ return {
|
||||
Period = 160 * 365.242,
|
||||
Resolution = 1000
|
||||
},
|
||||
}
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ return {
|
||||
DestinationFrame = "ECLIPJ2000"
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
{
|
||||
Name = "StyxText",
|
||||
@@ -52,6 +53,7 @@ return {
|
||||
Position = {1000000, 0, 1000000}
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
},
|
||||
-- StyxTrail module
|
||||
{
|
||||
@@ -68,5 +70,6 @@ return {
|
||||
Period = 20.16155,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,6 @@ return {
|
||||
Far = 1000000,
|
||||
},
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
Transform = {
|
||||
@@ -92,6 +91,7 @@ return {
|
||||
DestinationFrame = "GALACTIC",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Asteroid"
|
||||
},
|
||||
{
|
||||
Name = "BennuTrail",
|
||||
@@ -108,5 +108,6 @@ return {
|
||||
EndTime = "2023 MAY 31 00:00:00.000",
|
||||
SampleInterval = 3600,
|
||||
},
|
||||
GuiPath = "/Solar System/Asteroid"
|
||||
},
|
||||
}
|
||||
|
||||
@@ -189,6 +189,7 @@ return {
|
||||
DestinationFrame = "GALACTIC",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
{
|
||||
Name = "ORX_OCAMS_POLYCAM",
|
||||
@@ -219,6 +220,7 @@ return {
|
||||
DestinationFrame = "ORX_SPACECRAFT",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
{
|
||||
Name = "ORX_REXIS",
|
||||
@@ -249,6 +251,7 @@ return {
|
||||
DestinationFrame = "ORX_SPACECRAFT",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
{
|
||||
Name = "POLYCAM FOV",
|
||||
@@ -267,6 +270,7 @@ return {
|
||||
BENNU_BODY -- Bennu
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
{
|
||||
Name = "REXIS FOV",
|
||||
@@ -288,6 +292,7 @@ return {
|
||||
[BENNU_BODY] = "IAU_BENNU"
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
--[[
|
||||
-- Latest image taken by POLYCAM
|
||||
@@ -345,6 +350,7 @@ return {
|
||||
EndTime = "2016 SEP 9 00:05:00",
|
||||
SampleInterval = 60,
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
|
||||
-- Trail relative to solar system barycenter
|
||||
@@ -363,6 +369,7 @@ return {
|
||||
EndTime = "2023 SEP 24 12:00:00",
|
||||
SampleInterval = 3600,
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
|
||||
-- Trail relative to Bennu
|
||||
@@ -381,5 +388,6 @@ return {
|
||||
EndTime = "2023 SEP 24 12:00:00",
|
||||
SampleInterval = 3600,
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/OSIRIS REx"
|
||||
},
|
||||
}
|
||||
|
||||
@@ -10,8 +10,9 @@ return {
|
||||
Observer = "SUN",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Comets/67P Churymov-Gerasimenko"
|
||||
},
|
||||
{
|
||||
{
|
||||
Name = "67P",
|
||||
Parent = "67PBarycenter",
|
||||
|
||||
@@ -78,6 +79,7 @@ return {
|
||||
DestinationFrame = "GALACTIC",
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Comets/67P Churymov-Gerasimenko"
|
||||
},
|
||||
-- -- 67P Trail Module
|
||||
{
|
||||
@@ -95,6 +97,7 @@ return {
|
||||
EndTime = "2017 JAN 01 00:00:00.000",
|
||||
SampleInterval = 3600,
|
||||
},
|
||||
GuiPath = "/Solar System/Comets/67P Churymov-Gerasimenko"
|
||||
},
|
||||
--[[
|
||||
{
|
||||
|
||||
@@ -72,7 +72,8 @@ return {
|
||||
SourceFrame = "ROS_SPACECRAFT",
|
||||
DestinationFrame = "GALACTIC",
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "RosettaModel",
|
||||
@@ -83,7 +84,8 @@ return {
|
||||
-- The scale of the model is in cm; OpenSpace is in m
|
||||
Scale = 0.01
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_black_foil",
|
||||
@@ -97,7 +99,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/foil_silver_ramp.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_black_parts",
|
||||
@@ -111,7 +114,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/foil_silver_ramp.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_dish",
|
||||
@@ -126,6 +130,7 @@ return {
|
||||
ColorTexture = "textures/dish_AO.png",
|
||||
ModelTransform = RotationMatrix
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_parts",
|
||||
@@ -139,7 +144,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/parts2_AO.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_silver_foil",
|
||||
@@ -153,7 +159,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/foil_silver_ramp.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_vents",
|
||||
@@ -167,7 +174,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/tex_01.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_wing_a",
|
||||
@@ -182,6 +190,7 @@ return {
|
||||
ColorTexture = "textures/tex_01.png",
|
||||
ModelTransform = RotationMatrix
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Rosetta_wing_b",
|
||||
@@ -196,6 +205,7 @@ return {
|
||||
ColorTexture = "textures/tex_01.png",
|
||||
ModelTransform = RotationMatrix
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
-- Transform = {
|
||||
-- Rotation = {
|
||||
-- Type = "SpiceRotation",
|
||||
@@ -216,7 +226,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/foil_gold_ramp.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Philae",
|
||||
@@ -240,7 +251,8 @@ return {
|
||||
-- The scale of the model is in cm; OpenSpace is in m
|
||||
Scale = 0.01
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Philae_foil",
|
||||
@@ -254,7 +266,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/foil_silver_ramp.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Philae_lids",
|
||||
@@ -268,7 +281,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/parts2_AO.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Philae_parts",
|
||||
@@ -282,7 +296,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/foil_silver_ramp.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "Philae_solarp",
|
||||
@@ -296,7 +311,8 @@ return {
|
||||
},
|
||||
ColorTexture = "textures/tex_01.png",
|
||||
ModelTransform = RotationMatrix
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "RosettaCometTrail",
|
||||
@@ -313,6 +329,7 @@ return {
|
||||
EndTime = "2016 SEP 30 12:00:00",
|
||||
SampleInterval = 3600,
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "PhilaeTrail",
|
||||
@@ -329,12 +346,14 @@ return {
|
||||
EndTime = "2014 NOV 12 17:00:00",
|
||||
SampleInterval = 2,
|
||||
},
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
Name = "NAVCAM",
|
||||
Parent = "Rosetta",
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
{
|
||||
{
|
||||
Name = "NAVCAM FOV",
|
||||
Parent = "NAVCAM",
|
||||
Renderable = {
|
||||
@@ -359,6 +378,7 @@ return {
|
||||
["CHURYUMOV-GERASIMENKO"] = "67P/C-G_CK"
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
},
|
||||
-- Latest image taken by NAVCAM
|
||||
{
|
||||
@@ -372,6 +392,7 @@ return {
|
||||
Instrument = "ROS_NAVCAM-A",
|
||||
Moving = false,
|
||||
Texture = "textures/defaultProj.png",
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Rosetta"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ return {
|
||||
{
|
||||
Name = "LRO WAC Mosaic [OnMoon]",
|
||||
FilePath = "map_service_configs/OnMoonColor.xml",
|
||||
Enabled = true,
|
||||
},
|
||||
-- Utah based servers
|
||||
{
|
||||
@@ -38,8 +37,9 @@ return {
|
||||
FilePath = "map_service_configs/Utah/Kaguya.wms"
|
||||
},
|
||||
{
|
||||
Name = "WAC",
|
||||
FilePath = "map_service_configs/Utah/Wac.wms"
|
||||
Name = "WAC [Utah]",
|
||||
FilePath = "map_service_configs/Utah/Wac.wms",
|
||||
Enabled = true,
|
||||
}
|
||||
},
|
||||
HeightLayers = {
|
||||
@@ -61,7 +61,8 @@ return {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Earth/Moon"
|
||||
},
|
||||
-- MoonTrail module
|
||||
{
|
||||
@@ -77,6 +78,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 27,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Earth/Moon"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Neptune"
|
||||
},
|
||||
-- RenderableGlobe module
|
||||
{
|
||||
@@ -38,6 +39,7 @@ return {
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_giants" },
|
||||
GuiPath = "/Solar System/Planets/Neptune"
|
||||
|
||||
},
|
||||
-- Trail module
|
||||
@@ -55,6 +57,7 @@ return {
|
||||
Period = 60200,
|
||||
Resolution = 1000
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" }
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" },
|
||||
GuiPath = "/Solar System/Planets/Neptune"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ charon_image = "textures/NH_Charon_mosaic.png"
|
||||
charon_height = "textures/NH_Charon_DTM.png"
|
||||
-- charon_height = "textures/NH_Charon_DTM_8192.png"
|
||||
|
||||
dofile(openspace.absPath('${SCRIPTS}/scene_helper.lua'))
|
||||
|
||||
function preInitialization()
|
||||
--[[
|
||||
The scripts in this function are executed after the scene is loaded but before the
|
||||
@@ -185,6 +187,14 @@ function postInitialization()
|
||||
openspace.setPropertyValue("MilkyWay.renderable.Segments", 50)
|
||||
|
||||
openspace.printInfo("Done setting default values")
|
||||
|
||||
openspace.loadMission("${OPENSPACE_DATA}/scene/missions/newhorizons/newhorizons/newhorizons.mission")
|
||||
|
||||
-- Defined in scene_helper.lua
|
||||
-- Used to create focus buttons for a subset of scenegraph nodes
|
||||
mark_interesting_nodes({
|
||||
"Pluto", "NewHorizons", "Charon"
|
||||
})
|
||||
end
|
||||
|
||||
return {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
KernelCase = 2 -- Right now we only have the image times for case 2
|
||||
|
||||
dofile(openspace.absPath('${SCRIPTS}/scene_helper.lua'))
|
||||
|
||||
function preInitialization()
|
||||
--[[
|
||||
@@ -102,6 +103,10 @@ function postInitialization()
|
||||
openspace.loadMission("${OPENSPACE_DATA}/scene/missions/osirisrex/osirisrex/osirisrex.mission")
|
||||
|
||||
openspace.navigation.resetCameraDirection()
|
||||
|
||||
mark_interesting_nodes({
|
||||
"OsirisRex", "BennuBarycenter", "Earth"
|
||||
})
|
||||
end
|
||||
|
||||
return {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
dofile(openspace.absPath('${SCRIPTS}/scene_helper.lua'))
|
||||
|
||||
function preInitialization()
|
||||
--[[
|
||||
The scripts in this function are executed after the scene is loaded but before the
|
||||
@@ -102,6 +104,10 @@ function postInitialization()
|
||||
openspace.setPropertyValue('67P.renderable.PerformShading', false);
|
||||
|
||||
openspace.printInfo("Done setting default values")
|
||||
|
||||
mark_interesting_nodes({
|
||||
"Pluto", "NewHorizons", "Charon"
|
||||
})
|
||||
end
|
||||
|
||||
return {
|
||||
|
||||
@@ -76,7 +76,8 @@ function getSat(title, file, lineNum)
|
||||
Type = "StaticScale",
|
||||
Scale = 1,
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Earth/Satellites"
|
||||
}
|
||||
end
|
||||
|
||||
@@ -99,7 +100,7 @@ function getSatTrail(title, file, lineNum, per, color)
|
||||
Period = per,
|
||||
Resolution = 160
|
||||
},
|
||||
GuiName = "/Satellites/" .. trailName
|
||||
GuiPath = "/Solar System/Planets/Earth/Satellites"
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -28,7 +28,8 @@ return {
|
||||
SourceFrame = "IAU_ENCELADUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
},
|
||||
{
|
||||
Name = "DioneTrail",
|
||||
@@ -43,6 +44,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 66 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ return {
|
||||
SourceFrame = "IAU_ENCELADUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
},
|
||||
{
|
||||
Name = "EnceladusTrail",
|
||||
@@ -43,6 +44,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 33 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ return {
|
||||
SourceFrame = "IAU_ENCELADUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
},
|
||||
{
|
||||
Name = "IapetusTrail",
|
||||
@@ -43,6 +44,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 79,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ return {
|
||||
SourceFrame = "IAU_MIMAS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
},
|
||||
{
|
||||
Name = "MimasTrail",
|
||||
@@ -43,6 +44,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 23 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,8 @@ return {
|
||||
SourceFrame = "IAU_ENCELADUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
},
|
||||
{
|
||||
Name = "RheaTrail",
|
||||
@@ -43,6 +44,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 108 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn"
|
||||
},
|
||||
|
||||
-- Saturn module
|
||||
@@ -38,7 +39,8 @@ return {
|
||||
SourceFrame = "IAU_SATURN",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn"
|
||||
},
|
||||
{
|
||||
Name = "SaturnRings",
|
||||
@@ -48,7 +50,8 @@ return {
|
||||
Texture = "textures/saturn_rings.png",
|
||||
Size = 140220000,
|
||||
Offset = { 74500 / 140445.100671159, 1.0 } -- min / max extend
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn"
|
||||
},
|
||||
-- SaturnTrail module
|
||||
{
|
||||
@@ -65,6 +68,7 @@ return {
|
||||
Period = 10746.94,
|
||||
Resolution = 1000,
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" }
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" },
|
||||
GuiPath = "/Solar System/Planets/Saturn"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ return {
|
||||
SourceFrame = "IAU_ENCELADUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
},
|
||||
{
|
||||
Name = "TethysTrail",
|
||||
@@ -43,6 +44,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 45 / 24,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ return {
|
||||
SourceFrame = "IAU_ENCELADUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
},
|
||||
{
|
||||
Name = "TitanTrail",
|
||||
@@ -43,6 +44,7 @@ return {
|
||||
Color = { 0.5, 0.3, 0.3 },
|
||||
Period = 16,
|
||||
Resolution = 1000
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Saturn/Moons"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ return {
|
||||
Texture = "textures/halo.png",
|
||||
ColorMap = "denver_colorbv.cmap"
|
||||
},
|
||||
GuiPath = "/Milky Way/Stars"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ return {
|
||||
Texture = "textures/halo.png",
|
||||
ColorMap = "colorbv.cmap"
|
||||
},
|
||||
GuiPath = "/Milky Way/Stars"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,8 @@ return {
|
||||
SourceFrame = "IAU_SUN",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Sun"
|
||||
},
|
||||
|
||||
{
|
||||
@@ -60,7 +61,8 @@ return {
|
||||
Observer = "SSB",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Sun"
|
||||
},
|
||||
|
||||
{
|
||||
@@ -79,6 +81,7 @@ return {
|
||||
Type = "StaticTranslation",
|
||||
Position = {0, 0, 0, 5}
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Sun"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Uranus"
|
||||
},
|
||||
-- RenderableGlobe module
|
||||
{
|
||||
@@ -37,7 +38,8 @@ return {
|
||||
}
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_giants" }
|
||||
Tag = { "planet_solarSystem", "planet_giants" },
|
||||
GuiPath = "/Solar System/Planets/Uranus"
|
||||
},
|
||||
-- Trail module
|
||||
{
|
||||
@@ -54,6 +56,7 @@ return {
|
||||
Period = 30588.740,
|
||||
Resolution = 1000
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" }
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_giants" },
|
||||
GuiPath = "/Solar System/Planets/Uranus"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ return {
|
||||
Observer = "SUN",
|
||||
Kernels = "${OPENSPACE_DATA}/spice/de430_1850-2150.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Planets/Venus"
|
||||
},
|
||||
-- RenderableGlobe module
|
||||
{
|
||||
@@ -44,6 +45,7 @@ return {
|
||||
}
|
||||
},
|
||||
Tag = { "planet_solarSystem", "planet_terrestrial" },
|
||||
GuiPath = "/Solar System/Planets/Venus"
|
||||
},
|
||||
-- Trail module
|
||||
{
|
||||
@@ -60,6 +62,7 @@ return {
|
||||
Period = 224.695,
|
||||
Resolution = 1000
|
||||
},
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_terrestrial" }
|
||||
Tag = { "planetTrail_solarSystem", "planetTrail_terrestrial" },
|
||||
GuiPath = "/Solar System/Planets/Venus"
|
||||
}
|
||||
}
|
||||
|
||||
2
ext/sgct
2
ext/sgct
Submodule ext/sgct updated: 34d3ebb4dd...ee29d15894
@@ -55,13 +55,14 @@ public:
|
||||
const ghoul::Dictionary& dictionary);
|
||||
|
||||
ScreenSpaceRenderable(const ghoul::Dictionary& dictionary);
|
||||
virtual ~ScreenSpaceRenderable();
|
||||
virtual ~ScreenSpaceRenderable() = default;
|
||||
|
||||
virtual void render() = 0;
|
||||
virtual bool initialize() = 0;
|
||||
virtual bool deinitialize() = 0;
|
||||
virtual void render();
|
||||
|
||||
virtual bool initialize();
|
||||
virtual bool deinitialize();
|
||||
virtual void update() = 0;
|
||||
virtual bool isReady() const = 0;
|
||||
virtual bool isReady() const;
|
||||
bool isEnabled() const;
|
||||
|
||||
glm::vec3 euclideanPosition() const;
|
||||
|
||||
@@ -124,6 +124,8 @@ public:
|
||||
const Renderable* renderable() const;
|
||||
Renderable* renderable();
|
||||
|
||||
const std::string& guiPath() const;
|
||||
|
||||
static documentation::Documentation Documentation();
|
||||
|
||||
private:
|
||||
@@ -141,6 +143,8 @@ private:
|
||||
|
||||
std::unique_ptr<Renderable> _renderable;
|
||||
|
||||
std::string _guiPath;
|
||||
|
||||
// Transformation defined by ephemeris, rotation and scale
|
||||
struct {
|
||||
std::unique_ptr<Translation> translation;
|
||||
|
||||
@@ -44,8 +44,9 @@ public:
|
||||
void clearKeyframes();
|
||||
void setTimeNextFrame(Time t);
|
||||
size_t nKeyframes() const;
|
||||
|
||||
private:
|
||||
bool _shouldSetTime;
|
||||
bool _shouldSetTime = false;
|
||||
Time _timeNextFrame;
|
||||
Timeline<Time> _timeline;
|
||||
SyncData<Time> _currentTime;
|
||||
|
||||
@@ -35,7 +35,8 @@ set(HEADER_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderabletrailorbit.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderabletrailtrajectory.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceframebuffer.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceimage.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceimagelocal.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceimageonline.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/translation/statictranslation.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rotation/staticrotation.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/scale/staticscale.h
|
||||
@@ -53,7 +54,8 @@ set(SOURCE_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderabletrailorbit.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/renderabletrailtrajectory.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceframebuffer.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceimage.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceimagelocal.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rendering/screenspaceimageonline.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/translation/statictranslation.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rotation/staticrotation.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/scale/staticscale.cpp
|
||||
|
||||
@@ -39,7 +39,8 @@
|
||||
#include <modules/base/rendering/renderableplane.h>
|
||||
#include <modules/base/rendering/modelgeometry.h>
|
||||
#include <modules/base/rendering/multimodelgeometry.h>
|
||||
#include <modules/base/rendering/screenspaceimage.h>
|
||||
#include <modules/base/rendering/screenspaceimagelocal.h>
|
||||
#include <modules/base/rendering/screenspaceimageonline.h>
|
||||
#include <modules/base/rendering/screenspaceframebuffer.h>
|
||||
|
||||
#include <modules/base/translation/statictranslation.h>
|
||||
@@ -67,7 +68,8 @@ void BaseModule::internalInitialize() {
|
||||
auto fScreenSpaceRenderable = FactoryManager::ref().factory<ScreenSpaceRenderable>();
|
||||
ghoul_assert(fScreenSpaceRenderable, "ScreenSpaceRenderable factory was not created");
|
||||
|
||||
fScreenSpaceRenderable->registerClass<ScreenSpaceImage>("ScreenSpaceImage");
|
||||
fScreenSpaceRenderable->registerClass<ScreenSpaceImageLocal>("ScreenSpaceImageLocal");
|
||||
fScreenSpaceRenderable->registerClass<ScreenSpaceImageOnline>("ScreenSpaceImageOnline");
|
||||
fScreenSpaceRenderable->registerClass<ScreenSpaceFramebuffer>("ScreenSpaceFramebuffer");
|
||||
|
||||
auto fRenderable = FactoryManager::ref().factory<Renderable>();
|
||||
@@ -108,7 +110,8 @@ std::vector<documentation::Documentation> BaseModule::documentations() const {
|
||||
RenderableTrailOrbit::Documentation(),
|
||||
RenderableTrailTrajectory::Documentation(),
|
||||
ScreenSpaceFramebuffer::Documentation(),
|
||||
ScreenSpaceImage::Documentation(),
|
||||
ScreenSpaceImageLocal::Documentation(),
|
||||
ScreenSpaceImageOnline::Documentation(),
|
||||
StaticRotation::Documentation(),
|
||||
StaticScale::Documentation(),
|
||||
StaticTranslation::Documentation(),
|
||||
|
||||
@@ -76,29 +76,14 @@ ScreenSpaceFramebuffer::ScreenSpaceFramebuffer(const ghoul::Dictionary& dictiona
|
||||
ScreenSpaceFramebuffer::~ScreenSpaceFramebuffer() {}
|
||||
|
||||
bool ScreenSpaceFramebuffer::initialize() {
|
||||
_originalViewportSize = OsEng.windowWrapper().currentWindowResolution();
|
||||
|
||||
createPlane();
|
||||
createShaders();
|
||||
ScreenSpaceRenderable::initialize();
|
||||
createFragmentbuffer();
|
||||
|
||||
return isReady();
|
||||
}
|
||||
|
||||
bool ScreenSpaceFramebuffer::deinitialize() {
|
||||
glDeleteVertexArrays(1, &_quad);
|
||||
_quad = 0;
|
||||
|
||||
glDeleteBuffers(1, &_vertexPositionBuffer);
|
||||
_vertexPositionBuffer = 0;
|
||||
|
||||
_texture = nullptr;
|
||||
|
||||
RenderEngine& renderEngine = OsEng.renderEngine();
|
||||
if (_shader) {
|
||||
renderEngine.removeRenderProgram(_shader);
|
||||
_shader = nullptr;
|
||||
}
|
||||
ScreenSpaceRenderable::deinitialize();
|
||||
|
||||
_framebuffer->detachAll();
|
||||
removeAllRenderFunctions();
|
||||
|
||||
@@ -31,8 +31,6 @@
|
||||
#include <ghoul/opengl/framebufferobject.h>
|
||||
#include <ghoul/opengl/textureunit.h>
|
||||
|
||||
#include <modules/base/rendering/screenspaceimage.h>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
namespace documentation { struct Documentation; }
|
||||
|
||||
127
modules/base/rendering/screenspaceimagelocal.cpp
Normal file
127
modules/base/rendering/screenspaceimagelocal.cpp
Normal file
@@ -0,0 +1,127 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/base/rendering/screenspaceimagelocal.h>
|
||||
|
||||
#include <openspace/documentation/documentation.h>
|
||||
#include <openspace/documentation/verifier.h>
|
||||
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/engine/wrapper/windowwrapper.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
#include <ghoul/io/texture/texturereader.h>
|
||||
#include <ghoul/filesystem/filesystem>
|
||||
#include <ghoul/opengl/textureconversion.h>
|
||||
|
||||
namespace {
|
||||
const char* KeyName = "Name";
|
||||
const char* KeyUrl = "URL";
|
||||
|
||||
static const openspace::properties::Property::PropertyInfo TexturePathInfo = {
|
||||
"TexturePath",
|
||||
"Texture path",
|
||||
"Sets the path of the texture that is displayed on this screen space plane. If "
|
||||
"this value is changed, the image at the new path will automatically be loaded "
|
||||
"and displayed. The size of the image will also automatically set the default "
|
||||
"size of this plane."
|
||||
};
|
||||
} // namespace
|
||||
|
||||
namespace openspace {
|
||||
|
||||
documentation::Documentation ScreenSpaceImageLocal::Documentation() {
|
||||
using namespace openspace::documentation;
|
||||
return {
|
||||
"ScreenSpace Local Image",
|
||||
"base_screenspace_image_local",
|
||||
{
|
||||
{
|
||||
KeyName,
|
||||
new StringVerifier,
|
||||
Optional::Yes,
|
||||
"Specifies the GUI name of the ScreenspaceImage"
|
||||
},
|
||||
{
|
||||
TexturePathInfo.identifier,
|
||||
new StringVerifier,
|
||||
Optional::Yes,
|
||||
TexturePathInfo.description
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ScreenSpaceImageLocal::ScreenSpaceImageLocal(const ghoul::Dictionary& dictionary)
|
||||
: ScreenSpaceRenderable(dictionary)
|
||||
, _texturePath(TexturePathInfo)
|
||||
, _textureIsDirty(false)
|
||||
{
|
||||
documentation::testSpecificationAndThrow(
|
||||
Documentation(),
|
||||
dictionary,
|
||||
"ScreenSpaceImageLocal"
|
||||
);
|
||||
|
||||
if (dictionary.hasKey(KeyName)) {
|
||||
setName(dictionary.value<std::string>(KeyName));
|
||||
}
|
||||
else {
|
||||
static int id = 0;
|
||||
setName("ScreenSpaceImageLocal " + std::to_string(id));
|
||||
++id;
|
||||
}
|
||||
|
||||
_texturePath.onChange([this]() { _textureIsDirty = true; });
|
||||
addProperty(_texturePath);
|
||||
|
||||
if (dictionary.hasKey(TexturePathInfo.identifier)) {
|
||||
_texturePath = dictionary.value<std::string>(TexturePathInfo.identifier);
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenSpaceImageLocal::update() {
|
||||
if (_textureIsDirty && !_texturePath.value().empty()) {
|
||||
std::unique_ptr<ghoul::opengl::Texture> texture =
|
||||
ghoul::io::TextureReader::ref().loadTexture(absPath(_texturePath));
|
||||
|
||||
if (texture) {
|
||||
// Images don't need to start on 4-byte boundaries, for example if the
|
||||
// image is only RGB
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
|
||||
texture->uploadTexture();
|
||||
|
||||
// Textures of planets looks much smoother with AnisotropicMipMap rather than linear
|
||||
texture->setFilter(ghoul::opengl::Texture::FilterMode::Linear);
|
||||
|
||||
_texture = std::move(texture);
|
||||
_textureIsDirty = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
@@ -22,55 +22,32 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <openspace/engine/moduleengine.h>
|
||||
#ifndef __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGELOCAL___H__
|
||||
#define __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGELOCAL___H__
|
||||
|
||||
namespace openspace::gui::luascriptfunctions {
|
||||
|
||||
/**
|
||||
* \ingroup LuaScripts
|
||||
* show():
|
||||
* Shows the GUI
|
||||
*/
|
||||
int show(lua_State* L) {
|
||||
int nArguments = lua_gettop(L);
|
||||
if (nArguments != 0) {
|
||||
return luaL_error(L, "Expected %i arguments, got %i", 0, nArguments);
|
||||
}
|
||||
#include <openspace/rendering/screenspacerenderable.h>
|
||||
|
||||
OsEng.moduleEngine().module<ImGUIModule>()->gui.setEnabled(true);
|
||||
return 0;
|
||||
}
|
||||
#include <openspace/properties/stringproperty.h>
|
||||
|
||||
/**
|
||||
* \ingroup LuaScripts
|
||||
* hide():
|
||||
* Hides the console
|
||||
*/
|
||||
int hide(lua_State* L) {
|
||||
int nArguments = lua_gettop(L);
|
||||
if (nArguments != 0) {
|
||||
return luaL_error(L, "Expected %i arguments, got %i", 0, nArguments);
|
||||
}
|
||||
#include <ghoul/opengl/texture.h>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
namespace documentation { struct Documentation; }
|
||||
|
||||
OsEng.moduleEngine().module<ImGUIModule>()->gui.setEnabled(false);
|
||||
return 0;
|
||||
}
|
||||
class ScreenSpaceImageLocal : public ScreenSpaceRenderable {
|
||||
public:
|
||||
ScreenSpaceImageLocal(const ghoul::Dictionary& dictionary);
|
||||
|
||||
/**
|
||||
* \ingroup LuaScripts
|
||||
* toggle():
|
||||
* Toggles the console
|
||||
*/
|
||||
int toggle(lua_State* L) {
|
||||
int nArguments = lua_gettop(L);
|
||||
if (nArguments != 0) {
|
||||
return luaL_error(L, "Expected %i arguments, got %i", 0, nArguments);
|
||||
}
|
||||
void update() override;
|
||||
|
||||
OsEng.moduleEngine().module<ImGUIModule>()->gui.setEnabled(
|
||||
!OsEng.moduleEngine().module<ImGUIModule>()->gui.isEnabled()
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
static documentation::Documentation Documentation();
|
||||
|
||||
} // namespace openspace::gui::luascriptfunctions
|
||||
private:
|
||||
properties::StringProperty _texturePath;
|
||||
bool _textureIsDirty;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGELOCAL___H__
|
||||
@@ -22,7 +22,7 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/base/rendering/screenspaceimage.h>
|
||||
#include <modules/base/rendering/screenspaceimageonline.h>
|
||||
|
||||
#include <openspace/documentation/documentation.h>
|
||||
#include <openspace/documentation/verifier.h>
|
||||
@@ -38,12 +38,11 @@
|
||||
namespace {
|
||||
const char* KeyName = "Name";
|
||||
const char* KeyTexturePath = "TexturePath";
|
||||
const char* KeyUrl = "URL";
|
||||
|
||||
static const openspace::properties::Property::PropertyInfo TexturePathInfo = {
|
||||
"TexturePath",
|
||||
"Texture path",
|
||||
"Sets the path of the texture that is displayed on this screen space plane. If "
|
||||
"Sets the URL of the texture that is displayed on this screen space plane. If "
|
||||
"this value is changed, the image at the new path will automatically be loaded "
|
||||
"and displayed. The size of the image will also automatically set the default "
|
||||
"size of this plane."
|
||||
@@ -52,11 +51,11 @@ namespace {
|
||||
|
||||
namespace openspace {
|
||||
|
||||
documentation::Documentation ScreenSpaceImage::Documentation() {
|
||||
documentation::Documentation ScreenSpaceImageOnline::Documentation() {
|
||||
using namespace openspace::documentation;
|
||||
return {
|
||||
"ScreenSpace Image",
|
||||
"base_screenspace_image",
|
||||
"ScreenSpace Online Image",
|
||||
"base_screenspace_image_online",
|
||||
{
|
||||
{
|
||||
KeyName,
|
||||
@@ -68,16 +67,14 @@ documentation::Documentation ScreenSpaceImage::Documentation() {
|
||||
KeyTexturePath,
|
||||
new StringVerifier,
|
||||
Optional::Yes,
|
||||
"Specifies the image that is shown on the screenspace-aligned plane. If "
|
||||
"this value is set and the URL is not, the disk image is used."
|
||||
TexturePathInfo.description
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ScreenSpaceImage::ScreenSpaceImage(const ghoul::Dictionary& dictionary)
|
||||
ScreenSpaceImageOnline::ScreenSpaceImageOnline(const ghoul::Dictionary& dictionary)
|
||||
: ScreenSpaceRenderable(dictionary)
|
||||
, _downloadImage(false)
|
||||
, _textureIsDirty(false)
|
||||
, _texturePath(TexturePathInfo)
|
||||
{
|
||||
@@ -92,138 +89,78 @@ ScreenSpaceImage::ScreenSpaceImage(const ghoul::Dictionary& dictionary)
|
||||
}
|
||||
else {
|
||||
static int id = 0;
|
||||
setName("ScreenSpaceImage " + std::to_string(id));
|
||||
setName("ScreenSpaceImageOnline " + std::to_string(id));
|
||||
++id;
|
||||
}
|
||||
|
||||
std::string texturePath;
|
||||
if (dictionary.getValue(KeyTexturePath, texturePath)) {
|
||||
_texturePath = dictionary.value<std::string>(KeyTexturePath);
|
||||
}
|
||||
|
||||
if (dictionary.getValue(KeyUrl, _url)) {
|
||||
_downloadImage = true;
|
||||
}
|
||||
|
||||
_texturePath.onChange([this]() { _textureIsDirty = true; });
|
||||
addProperty(_texturePath);
|
||||
}
|
||||
|
||||
bool ScreenSpaceImage::initialize() {
|
||||
_originalViewportSize = OsEng.windowWrapper().currentWindowResolution();
|
||||
|
||||
createPlane();
|
||||
createShaders();
|
||||
updateTexture();
|
||||
|
||||
return isReady();
|
||||
}
|
||||
|
||||
bool ScreenSpaceImage::deinitialize() {
|
||||
glDeleteVertexArrays(1, &_quad);
|
||||
_quad = 0;
|
||||
|
||||
glDeleteBuffers(1, &_vertexPositionBuffer);
|
||||
_vertexPositionBuffer = 0;
|
||||
|
||||
_texturePath = "";
|
||||
_texture = nullptr;
|
||||
|
||||
if (_shader) {
|
||||
OsEng.renderEngine().removeRenderProgram(_shader);
|
||||
_shader = nullptr;
|
||||
std::string texturePath;
|
||||
if (dictionary.hasKey(TexturePathInfo.identifier)) {
|
||||
_texturePath = dictionary.value<std::string>(TexturePathInfo.identifier);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ScreenSpaceImage::render() {
|
||||
draw(rotationMatrix() * translationMatrix() * scaleMatrix());
|
||||
}
|
||||
void ScreenSpaceImageOnline::update() {
|
||||
if (_textureIsDirty) {
|
||||
if (!_imageFuture.valid()) {
|
||||
std::future<DownloadManager::MemoryFile> future = downloadImageToMemory(_texturePath);
|
||||
if (future.valid()) {
|
||||
_imageFuture = std::move(future);
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenSpaceImage::update() {
|
||||
bool download = _downloadImage ? (_futureImage.valid() && DownloadManager::futureReady(_futureImage)) : true;
|
||||
if (download && _textureIsDirty) {
|
||||
loadTexture();
|
||||
}
|
||||
}
|
||||
if (_imageFuture.valid() && DownloadManager::futureReady(_imageFuture)) {
|
||||
DownloadManager::MemoryFile imageFile = _imageFuture.get();
|
||||
|
||||
bool ScreenSpaceImage::isReady() const {
|
||||
return _shader && _texture;
|
||||
}
|
||||
if (imageFile.corrupted) {
|
||||
LERRORC(
|
||||
"ScreenSpaceImageOnline",
|
||||
"Error loading image from URL '" << _texturePath << "'"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
void ScreenSpaceImage::loadTexture() {
|
||||
std::unique_ptr<ghoul::opengl::Texture> texture = nullptr;
|
||||
if (!_downloadImage)
|
||||
texture = loadFromDisk();
|
||||
else
|
||||
texture = loadFromMemory();
|
||||
std::unique_ptr<ghoul::opengl::Texture> texture =
|
||||
ghoul::io::TextureReader::ref().loadTexture(
|
||||
reinterpret_cast<void*>(imageFile.buffer),
|
||||
imageFile.size,
|
||||
imageFile.format
|
||||
);
|
||||
|
||||
if (texture) {
|
||||
// LDEBUG("Loaded texture from '" << absPath(_texturePath) << "'");
|
||||
texture->uploadTexture();
|
||||
if (texture) {
|
||||
// Images don't need to start on 4-byte boundaries, for example if the
|
||||
// image is only RGB
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
|
||||
// Textures of planets looks much smoother with AnisotropicMipMap rather than linear
|
||||
texture->setFilter(ghoul::opengl::Texture::FilterMode::Linear);
|
||||
texture->uploadTexture();
|
||||
|
||||
_texture = std::move(texture);
|
||||
_textureIsDirty = false;
|
||||
}
|
||||
}
|
||||
// Textures of planets looks much smoother with AnisotropicMipMap rather than linear
|
||||
texture->setFilter(ghoul::opengl::Texture::FilterMode::Linear);
|
||||
|
||||
void ScreenSpaceImage::updateTexture() {
|
||||
if (!_downloadImage) {
|
||||
loadTexture();
|
||||
} else {
|
||||
if (_futureImage.valid())
|
||||
return;
|
||||
|
||||
std::future<DownloadManager::MemoryFile> future = downloadImageToMemory(_url);
|
||||
if (future.valid()) {
|
||||
_futureImage = std::move(future);
|
||||
_texture = std::move(texture);
|
||||
_textureIsDirty = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<ghoul::opengl::Texture> ScreenSpaceImage::loadFromDisk() {
|
||||
if (_texturePath.value() != "")
|
||||
return (ghoul::io::TextureReader::ref().loadTexture(absPath(_texturePath.value())));
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::unique_ptr<ghoul::opengl::Texture> ScreenSpaceImage::loadFromMemory() {
|
||||
if (_futureImage.valid() && DownloadManager::futureReady(_futureImage)) {
|
||||
DownloadManager::MemoryFile imageFile = _futureImage.get();
|
||||
|
||||
if (imageFile.corrupted) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return (ghoul::io::TextureReader::ref().loadTexture(
|
||||
reinterpret_cast<void*>(imageFile.buffer),
|
||||
imageFile.size,
|
||||
imageFile.format)
|
||||
);
|
||||
}
|
||||
else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
std::future<DownloadManager::MemoryFile> ScreenSpaceImage::downloadImageToMemory(
|
||||
std::future<DownloadManager::MemoryFile> ScreenSpaceImageOnline::downloadImageToMemory(
|
||||
std::string url)
|
||||
{
|
||||
return OsEng.downloadManager().fetchFile(
|
||||
url,
|
||||
[url](const DownloadManager::MemoryFile&) {
|
||||
LDEBUGC(
|
||||
"ScreenSpaceImage",
|
||||
"ScreenSpaceImageOnline",
|
||||
"Download to memory finished for screen space image"
|
||||
);
|
||||
},
|
||||
[url](const std::string& err) {
|
||||
LDEBUGC(
|
||||
"ScreenSpaceImage",
|
||||
"ScreenSpaceImageOnline",
|
||||
"Download to memory failer for screen space image: " + err
|
||||
);
|
||||
}
|
||||
@@ -22,8 +22,8 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGE___H__
|
||||
#define __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGE___H__
|
||||
#ifndef __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGEONLINE___H__
|
||||
#define __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGEONLINE___H__
|
||||
|
||||
#include <openspace/rendering/screenspacerenderable.h>
|
||||
|
||||
@@ -36,37 +36,24 @@ namespace openspace {
|
||||
|
||||
namespace documentation { struct Documentation; }
|
||||
|
||||
class ScreenSpaceImage : public ScreenSpaceRenderable {
|
||||
class ScreenSpaceImageOnline : public ScreenSpaceRenderable {
|
||||
public:
|
||||
ScreenSpaceImage(const ghoul::Dictionary& dictionary);
|
||||
ScreenSpaceImageOnline(const ghoul::Dictionary& dictionary);
|
||||
|
||||
bool initialize() override;
|
||||
bool deinitialize() override;
|
||||
void render() override;
|
||||
void update() override;
|
||||
bool isReady() const override;
|
||||
|
||||
static documentation::Documentation Documentation();
|
||||
|
||||
protected:
|
||||
void loadTexture();
|
||||
void updateTexture();
|
||||
|
||||
std::string _url;
|
||||
bool _downloadImage;
|
||||
bool _textureIsDirty;
|
||||
std::future<DownloadManager::MemoryFile> _futureImage;
|
||||
|
||||
private:
|
||||
std::future<DownloadManager::MemoryFile> downloadImageToMemory(std::string url);
|
||||
std::unique_ptr<ghoul::opengl::Texture> loadFromDisk();
|
||||
std::unique_ptr<ghoul::opengl::Texture> loadFromMemory();
|
||||
|
||||
std::future<DownloadManager::MemoryFile> _imageFuture;
|
||||
properties::StringProperty _texturePath;
|
||||
|
||||
|
||||
private:
|
||||
std::future<DownloadManager::MemoryFile> downloadImageToMemory(std::string url);
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGE___H__
|
||||
#endif // __OPENSPACE_MODULE_BASE___SCREENSPACEIMAGEONLINE___H__
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#version __CONTEXT__
|
||||
|
||||
layout(location = 0) in vec4 in_position;
|
||||
layout(location = 0) in vec2 in_position;
|
||||
layout(location = 1) in vec2 in_st;
|
||||
|
||||
out vec2 vs_st;
|
||||
@@ -36,6 +36,6 @@ uniform mat4 ViewProjectionMatrix;
|
||||
|
||||
void main() {
|
||||
vs_st = in_st;
|
||||
vs_position = ViewProjectionMatrix * ModelTransform * in_position;
|
||||
vs_position = ViewProjectionMatrix * ModelTransform * vec4(in_position, 0.0, 1.0);
|
||||
gl_Position = vec4(vs_position);
|
||||
}
|
||||
|
||||
@@ -158,7 +158,7 @@ void RenderableGalaxy::initialize() {
|
||||
_aspect = static_cast<glm::vec3>(_volumeDimensions);
|
||||
_aspect = _aspect / std::max(std::max(_aspect.x, _aspect.y), _aspect.z);
|
||||
|
||||
RawVolumeReader<glm::tvec4<GLfloat>> reader(_volumeFilename, _volumeDimensions);
|
||||
volume::RawVolumeReader<glm::tvec4<GLfloat>> reader(_volumeFilename, _volumeDimensions);
|
||||
_volume = reader.read();
|
||||
|
||||
_texture = std::make_unique<ghoul::opengl::Texture>(
|
||||
|
||||
@@ -63,7 +63,7 @@ private:
|
||||
std::string _pointsFilename;
|
||||
|
||||
std::unique_ptr<GalaxyRaycaster> _raycaster;
|
||||
std::unique_ptr<RawVolume<glm::tvec4<GLfloat>>> _volume;
|
||||
std::unique_ptr<volume::RawVolume<glm::tvec4<GLfloat>>> _volume;
|
||||
std::unique_ptr<ghoul::opengl::Texture> _texture;
|
||||
glm::mat4 _pointTransform;
|
||||
glm::vec3 _aspect;
|
||||
|
||||
@@ -83,6 +83,8 @@ std::string MilkywayConversionTask::description()
|
||||
}
|
||||
|
||||
void MilkywayConversionTask::perform(const Task::ProgressCallback& progressCallback) {
|
||||
using namespace openspace::volume;
|
||||
|
||||
std::vector<std::string> filenames;
|
||||
for (int i = 0; i < _inNSlices; i++) {
|
||||
filenames.push_back(_inFilenamePrefix + std::to_string(i + _inFirstIndex) + _inFilenameSuffix);
|
||||
|
||||
@@ -32,11 +32,11 @@ set(HEADER_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guifilepathcomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guiglobebrowsingcomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guihelpcomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guiorigincomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guimissioncomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guiperformancecomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guiparallelcomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guipropertycomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guitimecomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guispacetimecomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/guiiswacomponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/imgui_include.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/renderproperties.h
|
||||
@@ -45,16 +45,15 @@ source_group("Header Files" FILES ${HEADER_FILES})
|
||||
|
||||
set(SOURCE_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/gui.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/gui_lua.inl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guicomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guifilepathcomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guiglobebrowsingcomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guihelpcomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guiorigincomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guimissioncomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guiperformancecomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guiparallelcomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guipropertycomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guitimecomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guispacetimecomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/guiiswacomponent.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/renderproperties.cpp
|
||||
|
||||
|
||||
@@ -99,6 +99,27 @@ ImGUIModule::ImGUIModule() : OpenSpaceModule(Name) {
|
||||
return res;
|
||||
}
|
||||
);
|
||||
|
||||
gui._featuredProperties.setSource(
|
||||
[](){
|
||||
std::vector<SceneGraphNode*> nodes =
|
||||
OsEng.renderEngine().scene()->allSceneGraphNodes();
|
||||
|
||||
nodes.erase(
|
||||
std::remove_if(
|
||||
nodes.begin(),
|
||||
nodes.end(),
|
||||
[](SceneGraphNode* n) {
|
||||
const std::vector<std::string>& tags = n->tags();
|
||||
auto it = std::find(tags.begin(), tags.end(), "GUI.Interesting");
|
||||
return it == tags.end();
|
||||
}
|
||||
),
|
||||
nodes.end()
|
||||
);
|
||||
return std::vector<properties::PropertyOwner*>(nodes.begin(), nodes.end());
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -29,15 +29,15 @@
|
||||
#include <modules/imgui/include/guifilepathcomponent.h>
|
||||
#include <modules/imgui/include/guiglobebrowsingcomponent.h>
|
||||
#include <modules/imgui/include/guihelpcomponent.h>
|
||||
#include <modules/imgui/include/guiiswacomponent.h>
|
||||
#include <modules/imgui/include/guimissioncomponent.h>
|
||||
#include <modules/imgui/include/guiparallelcomponent.h>
|
||||
#include <modules/imgui/include/guiperformancecomponent.h>
|
||||
#include <modules/imgui/include/guipropertycomponent.h>
|
||||
#include <modules/imgui/include/guiorigincomponent.h>
|
||||
#include <modules/imgui/include/guitimecomponent.h>
|
||||
#include <modules/imgui/include/guiiswacomponent.h>
|
||||
#include <modules/imgui/include/guiparallelcomponent.h>
|
||||
#include <openspace/scripting/scriptengine.h>
|
||||
#include <openspace/properties/property.h>
|
||||
#include <modules/imgui/include/guispacetimecomponent.h>
|
||||
|
||||
#include <openspace/properties/property.h>
|
||||
#include <openspace/scripting/scriptengine.h>
|
||||
#include <openspace/util/keys.h>
|
||||
#include <openspace/util/mouse.h>
|
||||
|
||||
@@ -70,17 +70,18 @@ public:
|
||||
#ifdef GLOBEBROWSING_USE_GDAL
|
||||
GuiGlobeBrowsingComponent _globeBrowsing;
|
||||
#endif // GLOBEBROWSING_USE_GDAL
|
||||
GuiOriginComponent _origin;
|
||||
GuiPerformanceComponent _performance;
|
||||
GuiPropertyComponent _globalProperty;
|
||||
GuiPropertyComponent _property;
|
||||
GuiPropertyComponent _screenSpaceProperty;
|
||||
GuiPropertyComponent _virtualProperty;
|
||||
GuiTimeComponent _time;
|
||||
GuiSpaceTimeComponent _spaceTime;
|
||||
GuiMissionComponent _mission;
|
||||
#ifdef OPENSPACE_MODULE_ISWA_ENABLED
|
||||
GuiIswaComponent _iswa;
|
||||
#endif // OPENSPACE_MODULE_ISWA_ENABLED
|
||||
GuiParallelComponent _parallel;
|
||||
GuiPropertyComponent _featuredProperties;
|
||||
|
||||
bool _showInternals;
|
||||
|
||||
@@ -91,6 +92,8 @@ private:
|
||||
|
||||
};
|
||||
|
||||
void CaptionText(const char* text);
|
||||
|
||||
} // namespace openspace::gui
|
||||
|
||||
#endif // __OPENSPACE_MODULE_IMGUI___GUI___H__
|
||||
|
||||
@@ -22,20 +22,20 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_MODULE_IMGUI___GUIORIGINCOMPONENT___H__
|
||||
#define __OPENSPACE_MODULE_IMGUI___GUIORIGINCOMPONENT___H__
|
||||
#ifndef __OPENSPACE_MODULE_IMGUI___GUIMISSIONCOMPONENT___H__
|
||||
#define __OPENSPACE_MODULE_IMGUI___GUIMISSIONCOMPONENT___H__
|
||||
|
||||
#include <modules/imgui/include/guicomponent.h>
|
||||
|
||||
namespace openspace::gui {
|
||||
|
||||
class GuiOriginComponent : public GuiComponent {
|
||||
class GuiMissionComponent: public GuiComponent {
|
||||
public:
|
||||
GuiOriginComponent();
|
||||
GuiMissionComponent();
|
||||
|
||||
void render() override;
|
||||
};
|
||||
|
||||
} // namespace openspace::gui
|
||||
|
||||
#endif // __OPENSPACE_MODULE_IMGUI___GUIORIGINCOMPONENT___H__
|
||||
#endif // __OPENSPACE_MODULE_IMGUI___GUIMISSIONCOMPONENT___H__
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
#include <openspace/properties/property.h>
|
||||
|
||||
#include <ghoul/misc/boolean.h>
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
@@ -44,7 +46,12 @@ class GuiPropertyComponent : public GuiComponent {
|
||||
public:
|
||||
using SourceFunction = std::function<std::vector<properties::PropertyOwner*>()>;
|
||||
|
||||
GuiPropertyComponent(std::string name);
|
||||
using UseTreeLayout = ghoul::Boolean;
|
||||
using IsTopLevelWindow = ghoul::Boolean;
|
||||
|
||||
|
||||
GuiPropertyComponent(std::string name, UseTreeLayout useTree = UseTreeLayout::No,
|
||||
IsTopLevelWindow isTopLevel = IsTopLevelWindow::No);
|
||||
|
||||
// This is the function that evaluates to the list of Propertyowners that this
|
||||
// component should render
|
||||
@@ -66,6 +73,9 @@ protected:
|
||||
/// are regular, i.e., not containing wildcards, regex, or groups
|
||||
/// This variable only has an impact on which \c setPropertyValue function is called
|
||||
bool _hasOnlyRegularProperties = false;
|
||||
UseTreeLayout _useTreeLayout;
|
||||
bool _currentUseTreeLayout;
|
||||
IsTopLevelWindow _isTopLevel;
|
||||
};
|
||||
|
||||
} // namespace openspace::gui
|
||||
|
||||
@@ -22,58 +22,20 @@
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/imgui/include/guiorigincomponent.h>
|
||||
#ifndef __OPENSPACE_MODULE_IMGUI___GUISPACETIMECOMPONENT___H__
|
||||
#define __OPENSPACE_MODULE_IMGUI___GUISPACETIMECOMPONENT___H__
|
||||
|
||||
#include <modules/imgui/include/imgui_include.h>
|
||||
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/interaction/navigationhandler.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/scene/scenegraphnode.h>
|
||||
#include <openspace/scene/scene.h>
|
||||
|
||||
#include <ghoul/misc/assert.h>
|
||||
#include <modules/imgui/include/guicomponent.h>
|
||||
|
||||
namespace openspace::gui {
|
||||
|
||||
GuiOriginComponent::GuiOriginComponent()
|
||||
: GuiComponent("Origin")
|
||||
{}
|
||||
class GuiSpaceTimeComponent : public GuiComponent {
|
||||
public:
|
||||
GuiSpaceTimeComponent();
|
||||
|
||||
void GuiOriginComponent::render() {
|
||||
SceneGraphNode* currentFocus = OsEng.navigationHandler().focusNode();
|
||||
|
||||
std::vector<SceneGraphNode*> nodes =
|
||||
OsEng.renderEngine().scene()->allSceneGraphNodes();
|
||||
|
||||
std::sort(
|
||||
nodes.begin(),
|
||||
nodes.end(),
|
||||
[](SceneGraphNode* lhs, SceneGraphNode* rhs) {
|
||||
return lhs->name() < rhs->name();
|
||||
}
|
||||
);
|
||||
std::string nodeNames = "";
|
||||
for (SceneGraphNode* n : nodes) {
|
||||
nodeNames += n->name() + '\0';
|
||||
}
|
||||
|
||||
auto iCurrentFocus = std::find(nodes.begin(), nodes.end(), currentFocus);
|
||||
if (!nodes.empty()) {
|
||||
// Only check if we found the current focus node if we have any nodes at all
|
||||
// only then it would be a real error
|
||||
ghoul_assert(iCurrentFocus != nodes.end(), "Focus node not found");
|
||||
}
|
||||
int currentPosition = static_cast<int>(std::distance(nodes.begin(), iCurrentFocus));
|
||||
|
||||
bool hasChanged = ImGui::Combo("Origin", ¤tPosition, nodeNames.c_str());
|
||||
if (hasChanged) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.setPropertyValue('NavigationHandler.Origin', '" +
|
||||
nodes[currentPosition]->name() + "');",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
}
|
||||
void render() override;
|
||||
};
|
||||
|
||||
} // namespace openspace::gui
|
||||
|
||||
#endif // __OPENSPACE_MODULE_IMGUI___GUISPACETIMECOMPONENT___H__
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <modules/imgui/imguimodule.h>
|
||||
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/mission/missionmanager.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/util/keys.h>
|
||||
|
||||
@@ -39,15 +40,15 @@
|
||||
|
||||
#include <modules/imgui/include/imgui_include.h>
|
||||
|
||||
#include "gui_lua.inl"
|
||||
|
||||
//#define SHOW_IMGUI_HELPERS
|
||||
|
||||
namespace {
|
||||
|
||||
const char* _loggerCat = "GUI";
|
||||
const char* configurationFile = "imgui.ini";
|
||||
const char* GuiFont = "${FONTS}/Roboto/Roboto-Regular.ttf";
|
||||
//const char* GuiFont = "${FONTS}/ubuntu/Ubuntu-Regular.ttf";
|
||||
const char* GuiFont = "${FONTS}/arimo/Arimo-Regular.ttf";
|
||||
const float FontSize = 14.f;
|
||||
const ImVec2 size = ImVec2(350, 500);
|
||||
|
||||
//GLuint fontTex = 0;
|
||||
@@ -60,6 +61,8 @@ std::unique_ptr<ghoul::opengl::ProgramObject> _program;
|
||||
std::unique_ptr<ghoul::opengl::Texture> _fontTexture;
|
||||
char* iniFileBuffer = nullptr;
|
||||
|
||||
ImFont* captionFont = nullptr;
|
||||
|
||||
static void RenderDrawLists(ImDrawData* drawData) {
|
||||
// Avoid rendering when minimized, scale coordinates for retina displays
|
||||
// (screen coordinates != framebuffer coordinates)
|
||||
@@ -211,32 +214,51 @@ static void RenderDrawLists(ImDrawData* drawData) {
|
||||
}
|
||||
|
||||
|
||||
void addScreenSpaceRenderable(std::string texturePath) {
|
||||
void addScreenSpaceRenderableLocal(std::string texturePath) {
|
||||
if (!FileSys.fileExists(texturePath)) {
|
||||
LWARNING("Could not find image '" << texturePath << "'");
|
||||
return;
|
||||
}
|
||||
|
||||
const std::string luaTable =
|
||||
"{Type = 'ScreenSpaceImage', TexturePath = openspace.absPath('" + texturePath + "') }";
|
||||
"{Type = 'ScreenSpaceImageLocal', TexturePath = openspace.absPath('" + texturePath + "') }";
|
||||
const std::string script = "openspace.registerScreenSpaceRenderable(" + luaTable + ");";
|
||||
OsEng.scriptEngine().queueScript(script, openspace::scripting::ScriptEngine::RemoteScripting::Yes);
|
||||
}
|
||||
|
||||
void addScreenSpaceRenderableOnline(std::string texturePath) {
|
||||
const std::string luaTable =
|
||||
"{Type = 'ScreenSpaceImageOnline', TexturePath = '" + texturePath + "' }";
|
||||
const std::string script = "openspace.registerScreenSpaceRenderable(" + luaTable + ");";
|
||||
OsEng.scriptEngine().queueScript(script, openspace::scripting::ScriptEngine::RemoteScripting::Yes);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace openspace::gui {
|
||||
|
||||
void CaptionText(const char* text) {
|
||||
ImGui::PushFont(captionFont);
|
||||
ImGui::Text("%s", text);
|
||||
ImGui::PopFont();
|
||||
}
|
||||
|
||||
GUI::GUI()
|
||||
: GuiComponent("Main")
|
||||
, _globalProperty("Global")
|
||||
, _property("Properties")
|
||||
, _property(
|
||||
"Properties",
|
||||
GuiPropertyComponent::UseTreeLayout::Yes
|
||||
)
|
||||
, _screenSpaceProperty("ScreenSpace Properties")
|
||||
, _virtualProperty("Virtual Properties")
|
||||
, _featuredProperties("Featured Properties",
|
||||
GuiPropertyComponent::UseTreeLayout::No,
|
||||
GuiPropertyComponent::IsTopLevelWindow::Yes)
|
||||
, _showInternals(false)
|
||||
, _currentVisibility(properties::Property::Visibility::Developer)
|
||||
{
|
||||
addPropertySubOwner(_help);
|
||||
addPropertySubOwner(_origin);
|
||||
addPropertySubOwner(_performance);
|
||||
addPropertySubOwner(_globalProperty);
|
||||
addPropertySubOwner(_property);
|
||||
@@ -246,7 +268,8 @@ GUI::GUI()
|
||||
addPropertySubOwner(_globeBrowsing);
|
||||
#endif // GLOBEBROWSING_USE_GDAL
|
||||
addPropertySubOwner(_filePath);
|
||||
addPropertySubOwner(_time);
|
||||
addPropertySubOwner(_spaceTime);
|
||||
addPropertySubOwner(_mission);
|
||||
#ifdef OPENSPACE_MODULE_ISWA_ENABLED
|
||||
addPropertySubOwner(_iswa);
|
||||
#endif // OPENSPACE_MODULE_ISWA_ENABLED
|
||||
@@ -289,7 +312,12 @@ void GUI::initialize() {
|
||||
io.RenderDrawListsFn = RenderDrawLists;
|
||||
io.Fonts->AddFontFromFileTTF(
|
||||
absPath(GuiFont).c_str(),
|
||||
16.f
|
||||
FontSize
|
||||
);
|
||||
|
||||
captionFont = io.Fonts->AddFontFromFileTTF(
|
||||
absPath(GuiFont).c_str(),
|
||||
FontSize * 1.5f
|
||||
);
|
||||
|
||||
ImGuiStyle& style = ImGui::GetStyle();
|
||||
@@ -297,32 +325,58 @@ void GUI::initialize() {
|
||||
style.WindowRounding = 0.f;
|
||||
style.FramePadding = { 3.f, 3.f };
|
||||
style.FrameRounding = 0.f;
|
||||
style.ScrollbarSize = 15.f;
|
||||
style.ItemSpacing = { 3.f, 2.f };
|
||||
style.ItemInnerSpacing = { 3.f, 2.f };
|
||||
style.TouchExtraPadding = { 1.f, 1.f };
|
||||
style.IndentSpacing = 15.f;
|
||||
style.ScrollbarSize = 10.f;
|
||||
style.ScrollbarRounding = 0.f;
|
||||
style.IndentSpacing = 25;
|
||||
style.ItemSpacing = { 4.f, 2.f };
|
||||
style.GrabMinSize = 10.f;
|
||||
style.GrabRounding = 16.f;
|
||||
|
||||
style.Colors[ImGuiCol_WindowBg] = ImVec4(0.0f, 0.21f, 0.24f, 1.0f);
|
||||
style.Colors[ImGuiCol_Border] = ImVec4(0.1f, 0.39f, 0.42f, 0.59f);
|
||||
style.Colors[ImGuiCol_BorderShadow] = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
style.Colors[ImGuiCol_TitleBg] = ImVec4(0.5f, 0.94f, 1.0f, 0.45f);
|
||||
style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.5f, 0.94f, 1.0f, 0.45f);
|
||||
style.Colors[ImGuiCol_ScrollbarBg] = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.12f, 0.71f, 0.8f, 0.43f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.4f, 0.75f, 0.8f, 0.65f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.4f, 0.75f, 0.8f, 0.65f);
|
||||
style.Colors[ImGuiCol_ComboBg] = ImVec4(0.18f, 0.51f, 0.78f, 1.f);
|
||||
style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.5f, 0.8f, 0.76f, 1.0f);
|
||||
style.Colors[ImGuiCol_Button] = ImVec4(0.0f, 0.36f, 0.67f, 0.6f);
|
||||
style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.0f, 0.51f, 0.94f, 1.0f);
|
||||
style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.0f, 0.43f, 0.8f, 1.0f);
|
||||
style.Colors[ImGuiCol_Header] = ImVec4(0.f, 0.36f, 0.67f, 0.45f);
|
||||
style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.f, 0.54f, 1.0f, 0.8f);
|
||||
style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.53f, 0.63f, 0.87f, 0.8f);
|
||||
style.Colors[ImGuiCol_ResizeGrip] = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
style.Colors[ImGuiCol_CloseButton] = ImVec4(0.75f, 0.75f, 0.75f, 1.0f);
|
||||
style.Colors[ImGuiCol_CloseButtonHovered] = ImVec4(0.52f, 0.52f, 0.52f, 0.6f);
|
||||
style.Colors[ImGuiCol_CloseButtonActive] = ImVec4(0.52f, 0.52f, 0.52f, 1.0f);
|
||||
style.Colors[ImGuiCol_WindowBg] = ImVec4(0.13f, 0.13f, 0.13f, 0.96f);
|
||||
style.Colors[ImGuiCol_Border] = ImVec4(0.65f, 0.65f, 0.65f, 0.59f);
|
||||
style.Colors[ImGuiCol_TitleBg] = ImVec4(0.71f, 0.81f, 1.00f, 0.45f);
|
||||
style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.71f, 0.81f, 1.00f, 0.45f);
|
||||
style.Colors[ImGuiCol_TitleBgActive] = ImVec4(0.51f, 0.69f, 1.00f, 0.63f);
|
||||
style.Colors[ImGuiCol_ScrollbarBg] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.12f, 0.71f, 0.80f, 0.43f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.40f, 0.75f, 0.80f, 0.65f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.40f, 0.75f, 0.80f, 0.65f);
|
||||
style.Colors[ImGuiCol_ComboBg] = ImVec4(0.18f, 0.51f, 0.78f, 1.00f);
|
||||
style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.50f, 0.80f, 0.76f, 1.00f);
|
||||
style.Colors[ImGuiCol_Button] = ImVec4(0.36f, 0.54f, 0.68f, 0.62f);
|
||||
style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.00f, 0.51f, 0.94f, 1.00f);
|
||||
style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.00f, 0.43f, 0.80f, 1.00f);
|
||||
style.Colors[ImGuiCol_Header] = ImVec4(0.69f, 0.69f, 0.69f, 0.45f);
|
||||
style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.36f, 0.54f, 0.68f, 0.62f);
|
||||
style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.53f, 0.63f, 0.87f, 0.80f);
|
||||
style.Colors[ImGuiCol_ResizeGrip] = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
|
||||
style.Colors[ImGuiCol_CloseButton] = ImVec4(0.75f, 0.75f, 0.75f, 1.00f);
|
||||
style.Colors[ImGuiCol_CloseButtonHovered] = ImVec4(0.52f, 0.52f, 0.52f, 0.60f);
|
||||
style.Colors[ImGuiCol_CloseButtonActive] = ImVec4(0.52f, 0.52f, 0.52f, 1.00f);
|
||||
|
||||
//style.Colors[ImGuiCol_WindowBg] = ImVec4(0.0f, 0.21f, 0.24f, 1.0f);
|
||||
//style.Colors[ImGuiCol_Border] = ImVec4(0.1f, 0.39f, 0.42f, 0.59f);
|
||||
//style.Colors[ImGuiCol_BorderShadow] = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
//style.Colors[ImGuiCol_TitleBg] = ImVec4(0.5f, 0.94f, 1.0f, 0.45f);
|
||||
//style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.5f, 0.94f, 1.0f, 0.45f);
|
||||
//style.Colors[ImGuiCol_ScrollbarBg] = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
//style.Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.12f, 0.71f, 0.8f, 0.43f);
|
||||
//style.Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.4f, 0.75f, 0.8f, 0.65f);
|
||||
//style.Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.4f, 0.75f, 0.8f, 0.65f);
|
||||
//style.Colors[ImGuiCol_ComboBg] = ImVec4(0.18f, 0.51f, 0.78f, 1.f);
|
||||
//style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.5f, 0.8f, 0.76f, 1.0f);
|
||||
//style.Colors[ImGuiCol_Button] = ImVec4(0.0f, 0.36f, 0.67f, 0.6f);
|
||||
//style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.0f, 0.51f, 0.94f, 1.0f);
|
||||
//style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.0f, 0.43f, 0.8f, 1.0f);
|
||||
//style.Colors[ImGuiCol_Header] = ImVec4(0.f, 0.36f, 0.67f, 0.45f);
|
||||
//style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.f, 0.54f, 1.0f, 0.8f);
|
||||
//style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.53f, 0.63f, 0.87f, 0.8f);
|
||||
//style.Colors[ImGuiCol_ResizeGrip] = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
//style.Colors[ImGuiCol_CloseButton] = ImVec4(0.75f, 0.75f, 0.75f, 1.0f);
|
||||
//style.Colors[ImGuiCol_CloseButtonHovered] = ImVec4(0.52f, 0.52f, 0.52f, 0.6f);
|
||||
//style.Colors[ImGuiCol_CloseButtonActive] = ImVec4(0.52f, 0.52f, 0.52f, 1.0f);
|
||||
|
||||
_property.initialize();
|
||||
_property.setHasRegularProperties(true);
|
||||
@@ -330,6 +384,7 @@ void GUI::initialize() {
|
||||
_screenSpaceProperty.setHasRegularProperties(true);
|
||||
_globalProperty.initialize();
|
||||
_globalProperty.setHasRegularProperties(true);
|
||||
_featuredProperties.initialize();
|
||||
_virtualProperty.initialize();
|
||||
_filePath.initialize();
|
||||
#ifdef GLOBEBROWSING_USE_GDAL
|
||||
@@ -338,6 +393,7 @@ void GUI::initialize() {
|
||||
_performance.initialize();
|
||||
_help.initialize();
|
||||
_parallel.initialize();
|
||||
_mission.initialize();
|
||||
#ifdef OPENSPACE_MODULE_ISWA_ENABLED
|
||||
_iswa.initialize();
|
||||
#endif // OPENSPACE_MODULE_ISWA_ENABLED
|
||||
@@ -349,10 +405,12 @@ void GUI::deinitialize() {
|
||||
#ifdef OPENSPACE_MODULE_ISWA_ENABLED
|
||||
_iswa.deinitialize();
|
||||
#endif // OPENSPACE_MODULE_ISWA_ENABLED
|
||||
_mission.deinitialize();
|
||||
_parallel.deinitialize();
|
||||
_help.deinitialize();
|
||||
_performance.deinitialize();
|
||||
_globalProperty.deinitialize();
|
||||
_featuredProperties.deinitialize();
|
||||
_screenSpaceProperty.deinitialize();
|
||||
_virtualProperty.deinitialize();
|
||||
_filePath.deinitialize();
|
||||
@@ -432,6 +490,7 @@ void GUI::initializeGL() {
|
||||
_property.initializeGL();
|
||||
_screenSpaceProperty.initializeGL();
|
||||
_globalProperty.initializeGL();
|
||||
_featuredProperties.initializeGL();
|
||||
_performance.initializeGL();
|
||||
_help.initializeGL();
|
||||
#ifdef GLOBEBROWSING_USE_GDAL
|
||||
@@ -439,6 +498,7 @@ void GUI::initializeGL() {
|
||||
#endif // GLOBEBROWSING_USE_GDAL
|
||||
_filePath.initializeGL();
|
||||
_parallel.initializeGL();
|
||||
_mission.initializeGL();
|
||||
#ifdef OPENSPACE_MODULE_ISWA_ENABLED
|
||||
_iswa.initializeGL();
|
||||
#endif // OPENSPACE_MODULE_ISWA_ENABLED
|
||||
@@ -462,9 +522,11 @@ void GUI::deinitializeGL() {
|
||||
#ifdef OPENSPACE_MODULE_ISWA_ENABLED
|
||||
_iswa.deinitializeGL();
|
||||
#endif // OPENSPACE_MODULE_ISWA_ENABLED
|
||||
_mission.deinitializeGL();
|
||||
_parallel.deinitializeGL();
|
||||
_help.deinitializeGL();
|
||||
_performance.deinitializeGL();
|
||||
_featuredProperties.deinitializeGL();
|
||||
_globalProperty.deinitializeGL();
|
||||
_screenSpaceProperty.deinitializeGL();
|
||||
#ifdef GLOBEBROWSING_USE_GDAL
|
||||
@@ -535,6 +597,16 @@ void GUI::endFrame() {
|
||||
_globeBrowsing.render();
|
||||
}
|
||||
#endif // GLOBEBROWSING_USE_GDAL
|
||||
|
||||
if (_mission.isEnabled() && MissionManager::ref().hasCurrentMission()) {
|
||||
_mission.render();
|
||||
}
|
||||
|
||||
// We always want to render the Space/Time component
|
||||
_spaceTime.render();
|
||||
|
||||
// We always want to render the featured properties component
|
||||
_featuredProperties.render();
|
||||
}
|
||||
|
||||
ImGui::Render();
|
||||
@@ -630,6 +702,10 @@ void GUI::render() {
|
||||
ImGui::Checkbox("Virtual Properties", &virtualProperty);
|
||||
_virtualProperty.setEnabled(virtualProperty);
|
||||
|
||||
bool mission = _mission.isEnabled();
|
||||
ImGui::Checkbox("Mission Information", &mission);
|
||||
_mission.setEnabled(mission);
|
||||
|
||||
bool filePath = _filePath.isEnabled();
|
||||
ImGui::Checkbox("File Paths", &filePath);
|
||||
_filePath.setEnabled(filePath);
|
||||
@@ -646,9 +722,6 @@ void GUI::render() {
|
||||
_iswa.setEnabled(iswa);
|
||||
#endif // OPENSPACE_MODULE_ISWA_ENABLED
|
||||
|
||||
_origin.render();
|
||||
_time.render();
|
||||
|
||||
bool help = _help.isEnabled();
|
||||
ImGui::Checkbox("Help", &help);
|
||||
_help.setEnabled(help);
|
||||
@@ -656,16 +729,27 @@ void GUI::render() {
|
||||
renderAndUpdatePropertyVisibility();
|
||||
|
||||
static const int addImageBufferSize = 256;
|
||||
static char addImageBuffer[addImageBufferSize];
|
||||
static char addImageLocalBuffer[addImageBufferSize];
|
||||
static char addImageOnlineBuffer[addImageBufferSize];
|
||||
|
||||
bool addImage = ImGui::InputText(
|
||||
"addImage",
|
||||
addImageBuffer,
|
||||
bool addImageLocal = ImGui::InputText(
|
||||
"Add Local Image",
|
||||
addImageLocalBuffer,
|
||||
addImageBufferSize,
|
||||
ImGuiInputTextFlags_EnterReturnsTrue
|
||||
);
|
||||
if (addImage) {
|
||||
addScreenSpaceRenderable(std::string(addImageBuffer));
|
||||
if (addImageLocal) {
|
||||
addScreenSpaceRenderableLocal(std::string(addImageLocalBuffer));
|
||||
}
|
||||
|
||||
bool addImageOnline = ImGui::InputText(
|
||||
"Add Online Image",
|
||||
addImageOnlineBuffer,
|
||||
addImageBufferSize,
|
||||
ImGuiInputTextFlags_EnterReturnsTrue
|
||||
);
|
||||
if (addImageOnline) {
|
||||
addScreenSpaceRenderableOnline(std::string(addImageOnlineBuffer));
|
||||
}
|
||||
|
||||
ImGui::Checkbox("ImGUI Internals", &_showInternals);
|
||||
@@ -700,6 +784,7 @@ void GUI::renderAndUpdatePropertyVisibility() {
|
||||
_property.setVisibility(_currentVisibility);
|
||||
_screenSpaceProperty.setVisibility(_currentVisibility);
|
||||
_virtualProperty.setVisibility(_currentVisibility);
|
||||
_featuredProperties.setVisibility(_currentVisibility);
|
||||
}
|
||||
|
||||
|
||||
|
||||
104
modules/imgui/src/guimissioncomponent.cpp
Normal file
104
modules/imgui/src/guimissioncomponent.cpp
Normal file
@@ -0,0 +1,104 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/imgui/include/guimissioncomponent.h>
|
||||
|
||||
#include <modules/imgui/include/gui.h>
|
||||
#include <modules/imgui/include/imgui_include.h>
|
||||
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/mission/mission.h>
|
||||
#include <openspace/mission/missionmanager.h>
|
||||
#include <openspace/util/timerange.h>
|
||||
#include <openspace/util/time.h>
|
||||
#include <openspace/util/timemanager.h>
|
||||
|
||||
namespace {
|
||||
const ImVec2 size = ImVec2(350, 500);
|
||||
|
||||
void renderMission(const openspace::Mission& mission) {
|
||||
// The hashname is necessary since ImGui computes a hash based off the name of the
|
||||
// elements. This does not play well with using %s as the name
|
||||
std::string missionHashname = "##" + mission.name();
|
||||
|
||||
|
||||
double currentTime = OsEng.timeManager().time().j2000Seconds();
|
||||
openspace::MissionPhase::Trace t = mission.phaseTrace(currentTime, 0);
|
||||
|
||||
int treeOption = t.empty() ? 0 : ImGuiTreeNodeFlags_DefaultOpen;
|
||||
if (ImGui::TreeNodeEx(("%s" + missionHashname).c_str(), treeOption, mission.name().c_str())) {
|
||||
if (!mission.description().empty()) {
|
||||
ImGui::Text("%s", mission.description().c_str());
|
||||
}
|
||||
|
||||
openspace::TimeRange range = mission.timeRange();
|
||||
openspace::Time startTime = openspace::Time(range.start);
|
||||
openspace::Time endTime = openspace::Time(range.end);
|
||||
|
||||
openspace::gui::CaptionText("Mission Progress");
|
||||
|
||||
ImGui::Text("%s", startTime.UTC().c_str());
|
||||
ImGui::SameLine();
|
||||
float v = static_cast<float>(currentTime);
|
||||
float s = static_cast<float>(startTime.j2000Seconds());
|
||||
float e = static_cast<float>(endTime.j2000Seconds());
|
||||
|
||||
ImGui::SliderFloat(missionHashname.c_str(), &v, s, e, OsEng.timeManager().time().UTC().c_str());
|
||||
ImGui::SameLine();
|
||||
ImGui::Text("%s", endTime.UTC().c_str());
|
||||
|
||||
openspace::gui::CaptionText("Phases");
|
||||
|
||||
for (const openspace::Mission& m : mission.phases()) {
|
||||
renderMission(m);
|
||||
}
|
||||
|
||||
|
||||
ImGui::TreePop();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace openspace::gui {
|
||||
|
||||
GuiMissionComponent::GuiMissionComponent() : GuiComponent("Mission Information") {}
|
||||
|
||||
void GuiMissionComponent::render() {
|
||||
bool v = _isEnabled;
|
||||
ImGui::Begin(name().c_str(), &v, size, 0.75f);
|
||||
_isEnabled = v;
|
||||
|
||||
ghoul_assert(
|
||||
MissionManager::ref().hasCurrentMission(),
|
||||
"Must have a current mission"
|
||||
);
|
||||
|
||||
const Mission& currentMission = MissionManager::ref().currentMission();
|
||||
renderMission(currentMission);
|
||||
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
} // namespace openspace gui
|
||||
@@ -28,6 +28,9 @@
|
||||
#include <modules/imgui/include/renderproperties.h>
|
||||
|
||||
#include <openspace/properties/propertyowner.h>
|
||||
#include <openspace/scene/scenegraphnode.h>
|
||||
|
||||
#include <ghoul/misc/misc.h>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
@@ -57,12 +60,95 @@ namespace {
|
||||
ImGui::SetTooltip("%s", propOwner->description().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
struct TreeNode {
|
||||
TreeNode(std::string p) : path(std::move(p)) {}
|
||||
std::string path;
|
||||
std::vector<std::unique_ptr<TreeNode>> children;
|
||||
std::vector<openspace::SceneGraphNode*> nodes;
|
||||
};
|
||||
|
||||
void addPathToTree(TreeNode& node, const std::vector<std::string>& path,
|
||||
openspace::SceneGraphNode* owner)
|
||||
{
|
||||
if (path.empty()) {
|
||||
// No more path, so we have reached a leaf
|
||||
node.nodes.push_back(owner);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if any of the children's paths contains the first part of the path
|
||||
auto it = std::find_if(
|
||||
node.children.begin(),
|
||||
node.children.end(),
|
||||
[p = *path.begin()](const std::unique_ptr<TreeNode>& c) {
|
||||
return c.get()->path == p;
|
||||
}
|
||||
);
|
||||
|
||||
TreeNode* n;
|
||||
if (it != node.children.end()) {
|
||||
// We have a child, so we use it
|
||||
n = it->get();
|
||||
}
|
||||
else {
|
||||
// We don't have a child, so we must generate it
|
||||
std::unique_ptr<TreeNode> newNode = std::make_unique<TreeNode>(*path.begin());
|
||||
n = newNode.get();
|
||||
node.children.push_back(std::move(newNode));
|
||||
|
||||
}
|
||||
|
||||
// Recurse into the tree and chop off the first path
|
||||
addPathToTree(
|
||||
*n,
|
||||
std::vector<std::string>(path.begin() + 1, path.end()),
|
||||
owner
|
||||
);
|
||||
};
|
||||
|
||||
void simplifyTree(TreeNode& node) {
|
||||
// Merging consecutive nodes if they only have a single child
|
||||
|
||||
for (const std::unique_ptr<TreeNode>& c : node.children) {
|
||||
simplifyTree(*c);
|
||||
}
|
||||
|
||||
if ((node.children.size() == 1) && (node.nodes.empty())) {
|
||||
node.path = node.path + "/" + node.children[0]->path;
|
||||
node.nodes = std::move(node.children[0]->nodes);
|
||||
std::vector<std::unique_ptr<TreeNode>> cld = std::move(
|
||||
node.children[0]->children
|
||||
);
|
||||
node.children = std::move(cld);
|
||||
}
|
||||
}
|
||||
|
||||
void renderTree(const TreeNode& node, const std::function<void (openspace::properties::PropertyOwner*)>& renderFunc) {
|
||||
if (node.path.empty() || ImGui::TreeNode(node.path.c_str())) {
|
||||
for (const std::unique_ptr<TreeNode>& c : node.children) {
|
||||
renderTree(*c, renderFunc);
|
||||
}
|
||||
|
||||
for (openspace::SceneGraphNode* n : node.nodes) {
|
||||
renderFunc(n);
|
||||
}
|
||||
|
||||
if (!node.path.empty()) {
|
||||
ImGui::TreePop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace openspace::gui {
|
||||
|
||||
GuiPropertyComponent::GuiPropertyComponent(std::string name)
|
||||
GuiPropertyComponent::GuiPropertyComponent(std::string name, UseTreeLayout useTree, IsTopLevelWindow topLevel)
|
||||
: GuiComponent(std::move(name))
|
||||
, _useTreeLayout(useTree)
|
||||
, _isTopLevel(topLevel)
|
||||
, _currentUseTreeLayout(useTree)
|
||||
{}
|
||||
|
||||
void GuiPropertyComponent::setSource(SourceFunction function) {
|
||||
@@ -142,12 +228,23 @@ void GuiPropertyComponent::renderPropertyOwner(properties::PropertyOwner* owner)
|
||||
}
|
||||
|
||||
void GuiPropertyComponent::render() {
|
||||
bool v = _isEnabled;
|
||||
ImGui::Begin(name().c_str(), &v, size, 0.5f);
|
||||
_isEnabled = v;
|
||||
if (_isTopLevel) {
|
||||
ImGui::Begin(name().c_str(), nullptr, size, 0.75f);
|
||||
}
|
||||
else {
|
||||
bool v = _isEnabled;
|
||||
ImGui::Begin(name().c_str(), &v, size, 0.75f);
|
||||
_isEnabled = v;
|
||||
}
|
||||
|
||||
if (_function) {
|
||||
if (_useTreeLayout) {
|
||||
ImGui::Checkbox("Use Tree layout", &_currentUseTreeLayout);
|
||||
}
|
||||
|
||||
|
||||
std::vector<properties::PropertyOwner*> owners = _function();
|
||||
|
||||
std::sort(
|
||||
owners.begin(),
|
||||
owners.end(),
|
||||
@@ -156,11 +253,49 @@ void GuiPropertyComponent::render() {
|
||||
}
|
||||
);
|
||||
|
||||
for (properties::PropertyOwner* pOwner : owners) {
|
||||
if (_currentUseTreeLayout) {
|
||||
for (properties::PropertyOwner* owner : owners) {
|
||||
ghoul_assert(
|
||||
dynamic_cast<SceneGraphNode*>(owner),
|
||||
"When using the tree layout, all owners must be SceneGraphNodes"
|
||||
);
|
||||
}
|
||||
|
||||
// Sort:
|
||||
// if guigrouping, sort by name and shortest first
|
||||
// then all w/o guigroup
|
||||
std::stable_sort(
|
||||
owners.begin(),
|
||||
owners.end(),
|
||||
[](properties::PropertyOwner* lhs, properties::PropertyOwner* rhs) {
|
||||
std::string lhsGroup = static_cast<SceneGraphNode*>(lhs)->guiPath();
|
||||
std::string rhsGroup = static_cast<SceneGraphNode*>(rhs)->guiPath();
|
||||
|
||||
if (lhsGroup.empty()) {
|
||||
return false;
|
||||
}
|
||||
if (rhsGroup.empty()) {
|
||||
return true;
|
||||
}
|
||||
return lhsGroup < rhsGroup;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// If the owners list is empty, we wnat to do the normal thing (-> nothing)
|
||||
// Otherwise, check if the first owner has a GUI group
|
||||
// This makes the assumption that the tree layout is only used if the owners are
|
||||
// SceenGraphNodes (checked above)
|
||||
bool noGuiGroups =
|
||||
owners.empty() ||
|
||||
(dynamic_cast<SceneGraphNode*>(*owners.begin()) &&
|
||||
dynamic_cast<SceneGraphNode*>(*owners.begin())->guiPath().empty());
|
||||
|
||||
auto renderProp = [&](properties::PropertyOwner* pOwner) {
|
||||
int count = nVisibleProperties(pOwner->propertiesRecursive(), _visibility);
|
||||
|
||||
if (count == 0) {
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
|
||||
auto header = [&]() -> bool {
|
||||
@@ -182,6 +317,47 @@ void GuiPropertyComponent::render() {
|
||||
|
||||
if (header()) {
|
||||
renderPropertyOwner(pOwner);
|
||||
}
|
||||
};
|
||||
|
||||
if (!_currentUseTreeLayout || noGuiGroups) {
|
||||
std::for_each(owners.begin(), owners.end(), renderProp);
|
||||
}
|
||||
else { // _useTreeLayout && gui groups exist
|
||||
TreeNode root("");
|
||||
|
||||
for (properties::PropertyOwner* pOwner : owners) {
|
||||
// We checked above that pOwner is a SceneGraphNode
|
||||
SceneGraphNode* nOwner = static_cast<SceneGraphNode*>(pOwner);
|
||||
|
||||
if (nOwner->guiPath().empty()) {
|
||||
// We know that we are done now since we stable_sort:ed them above
|
||||
break;
|
||||
}
|
||||
|
||||
std::vector<std::string> paths = ghoul::tokenizeString(
|
||||
nOwner->guiPath().substr(1),
|
||||
'/'
|
||||
);
|
||||
|
||||
addPathToTree(root, paths, nOwner);
|
||||
}
|
||||
|
||||
simplifyTree(root);
|
||||
|
||||
renderTree(root, renderProp);
|
||||
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 20.f);
|
||||
|
||||
for (properties::PropertyOwner* pOwner : owners) {
|
||||
// We checked above that pOwner is a SceneGraphNode
|
||||
SceneGraphNode* nOwner = static_cast<SceneGraphNode*>(pOwner);
|
||||
|
||||
if (!nOwner->guiPath().empty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
renderProp(pOwner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
361
modules/imgui/src/guispacetimecomponent.cpp
Normal file
361
modules/imgui/src/guispacetimecomponent.cpp
Normal file
@@ -0,0 +1,361 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#include <modules/imgui/include/guispacetimecomponent.h>
|
||||
|
||||
#include <modules/imgui/include/gui.h>
|
||||
#include <modules/imgui/include/imgui_include.h>
|
||||
|
||||
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/util/timemanager.h>
|
||||
#include <openspace/util/time.h>
|
||||
#include <openspace/interaction/navigationhandler.h>
|
||||
#include <openspace/rendering/renderengine.h>
|
||||
#include <openspace/scene/scenegraphnode.h>
|
||||
#include <openspace/scene/scene.h>
|
||||
|
||||
namespace {
|
||||
const ImVec2 size = ImVec2(350, 500);
|
||||
} // namespace
|
||||
|
||||
namespace openspace::gui {
|
||||
|
||||
GuiSpaceTimeComponent::GuiSpaceTimeComponent() : GuiComponent("Space/Time") {}
|
||||
|
||||
void GuiSpaceTimeComponent::render() {
|
||||
ImGui::Begin(name().c_str(), nullptr, size, 0.5f, ImGuiWindowFlags_AlwaysAutoResize);
|
||||
|
||||
std::vector<SceneGraphNode*> nodes =
|
||||
OsEng.renderEngine().scene()->allSceneGraphNodes();
|
||||
|
||||
std::sort(
|
||||
nodes.begin(),
|
||||
nodes.end(),
|
||||
[](SceneGraphNode* lhs, SceneGraphNode* rhs) {
|
||||
return lhs->name() < rhs->name();
|
||||
}
|
||||
);
|
||||
|
||||
ImGui::BeginGroup();
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"%s",
|
||||
"These buttons and the dropdown menu determine the focus object in the scene "
|
||||
"that is the center of all camera movement"
|
||||
);
|
||||
}
|
||||
|
||||
CaptionText("Focus Selection");
|
||||
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.f);
|
||||
|
||||
ImGui::Text("%s", "Focus on:");
|
||||
ImGui::SameLine();
|
||||
// Buttons for important SceneGraphNodes
|
||||
for (SceneGraphNode* n : nodes) {
|
||||
const std::vector<std::string>& tags = n->tags();
|
||||
auto it = std::find(tags.begin(), tags.end(), "GUI.Interesting");
|
||||
if (it != tags.end()) {
|
||||
bool pressed = ImGui::Button(n->name().c_str());
|
||||
ImGui::SameLine();
|
||||
if (pressed) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.setPropertyValue('NavigationHandler.Origin', '" +
|
||||
n->name() + "');",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::NewLine();
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.f);
|
||||
|
||||
SceneGraphNode* currentFocus = OsEng.navigationHandler().focusNode();
|
||||
|
||||
std::string nodeNames = "";
|
||||
for (SceneGraphNode* n : nodes) {
|
||||
nodeNames += n->name() + '\0';
|
||||
}
|
||||
|
||||
auto iCurrentFocus = std::find(nodes.begin(), nodes.end(), currentFocus);
|
||||
if (!nodes.empty()) {
|
||||
// Only check if we found the current focus node if we have any nodes at all
|
||||
// only then it would be a real error
|
||||
ghoul_assert(iCurrentFocus != nodes.end(), "Focus node not found");
|
||||
}
|
||||
int currentPosition = static_cast<int>(std::distance(nodes.begin(), iCurrentFocus));
|
||||
|
||||
bool hasChanged = ImGui::Combo("Focus Node", ¤tPosition, nodeNames.c_str());
|
||||
if (hasChanged) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.setPropertyValue('NavigationHandler.Origin', '" +
|
||||
nodes[currentPosition]->name() + "');",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
|
||||
ImGui::EndGroup();
|
||||
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 20.f);
|
||||
|
||||
ImGui::Separator();
|
||||
ImGui::Separator();
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 20.f);
|
||||
|
||||
|
||||
ImGui::BeginGroup();
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"%s",
|
||||
"These elements determine the simulation time inside OpenSpace."
|
||||
);
|
||||
}
|
||||
|
||||
CaptionText("Time Controls");
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.f);
|
||||
|
||||
constexpr int BufferSize = 256;
|
||||
static char Buffer[BufferSize];
|
||||
bool dateChanged = ImGui::InputText(
|
||||
"Date",
|
||||
Buffer,
|
||||
BufferSize,
|
||||
ImGuiInputTextFlags_EnterReturnsTrue
|
||||
);
|
||||
if (dateChanged) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setTime(\"" + std::string(Buffer) + "\")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"%s",
|
||||
"Entering a date here and confirming with ENTER sets the current simulation "
|
||||
"time to the entered date. The format of the date has to be either ISO 8601 "
|
||||
"YYYY-MM-DDThh:mm:ss (2017-08-27T04:00:00) or YYYY MMM DD hh:mm:ss "
|
||||
"(2017 MAY 01 12:00:00). The hours are in 24h and specified as UTC."
|
||||
);
|
||||
}
|
||||
|
||||
auto incrementTime = [](int days) {
|
||||
using namespace std::chrono;
|
||||
double j2000 = OsEng.timeManager().time().j2000Seconds();
|
||||
|
||||
long long seconds = duration_cast<std::chrono::seconds>(
|
||||
std::chrono::hours(24) * std::abs(days)
|
||||
).count();
|
||||
|
||||
double newTime = [days, j2000, seconds](){
|
||||
if (days < 0) {
|
||||
return static_cast<double>(j2000 - seconds);
|
||||
}
|
||||
else {
|
||||
return static_cast<double>(j2000 + seconds);
|
||||
}
|
||||
}();
|
||||
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setTime(" + std::to_string(newTime) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
};
|
||||
|
||||
bool minusMonth = ImGui::Button("-Month");
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"%s",
|
||||
"OBS: A month here equals 30 days."
|
||||
);
|
||||
}
|
||||
if (minusMonth) {
|
||||
incrementTime(-30);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
bool minusWeek = ImGui::Button("-Week");
|
||||
if (minusWeek) {
|
||||
incrementTime(-7);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
bool minusDay = ImGui::Button("-Day");
|
||||
if (minusDay) {
|
||||
incrementTime(-1);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + 55.f);
|
||||
|
||||
bool plusDay = ImGui::Button("+Day");
|
||||
if (plusDay) {
|
||||
incrementTime(1);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
bool plusWeek = ImGui::Button("+Week");
|
||||
if (plusWeek) {
|
||||
incrementTime(7);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
bool plusMonth = ImGui::Button("+Month");
|
||||
if (plusMonth) {
|
||||
incrementTime(30);
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"%s",
|
||||
"OBS: A month here equals 30 days."
|
||||
);
|
||||
}
|
||||
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 20.f);
|
||||
|
||||
|
||||
float deltaTime = static_cast<float>(OsEng.timeManager().time().deltaTime());
|
||||
bool changed = ImGui::SliderFloat("Delta Time", &deltaTime, -100000.f, 100000.f, "%.3f", 5.f);
|
||||
if (changed) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(deltaTime) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"%s",
|
||||
"This determines the simulation time increment, that is the passage "
|
||||
"of time in OpenSpace relative to a wall clock. Times are expressed as "
|
||||
"simulation time / real world time."
|
||||
);
|
||||
}
|
||||
|
||||
bool isPaused = OsEng.timeManager().time().paused();
|
||||
|
||||
|
||||
bool pauseChanged = ImGui::Button(isPaused ? "Resume" : "Pause", { ImGui::GetWindowWidth() - 7.5f, 0.f } );
|
||||
if (pauseChanged) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.togglePause()",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
|
||||
auto setDeltaTime = [](std::chrono::seconds dt) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(dt.count()) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
};
|
||||
|
||||
bool minusDs = ImGui::Button("-1d/s");
|
||||
if (minusDs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(-24 * 60 * 60) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
bool minusHs = ImGui::Button("-1h/s");
|
||||
if (minusHs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(-60 * 60) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
bool minusMs = ImGui::Button("-1min/s");
|
||||
if (minusMs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(-60) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
bool minusSs = ImGui::Button("-1s/s");
|
||||
if (minusSs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(-1) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
bool zero = ImGui::Button("0");
|
||||
if (zero) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(0) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
|
||||
bool plusSs = ImGui::Button("+1s/s");
|
||||
if (plusSs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(1) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
bool plusMs = ImGui::Button("1min/s");
|
||||
if (plusMs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(60) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
bool plusHs = ImGui::Button("1h/s");
|
||||
if (plusHs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(60 * 60) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
bool plusDs = ImGui::Button("1d/s");
|
||||
if (plusDs) {
|
||||
OsEng.scriptEngine().queueScript(
|
||||
"openspace.time.setDeltaTime(" + std::to_string(24 * 60 * 60) + ")",
|
||||
scripting::ScriptEngine::RemoteScripting::Yes
|
||||
);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
|
||||
ImGui::EndGroup();
|
||||
|
||||
ImGui::End();
|
||||
|
||||
}
|
||||
|
||||
} // namespace openspace gui
|
||||
@@ -36,7 +36,7 @@ namespace {
|
||||
namespace openspace {
|
||||
|
||||
ScreenSpaceCygnet::ScreenSpaceCygnet(const ghoul::Dictionary& dictionary)
|
||||
: ScreenSpaceImage(dictionary)
|
||||
: ScreenSpaceImageOnline(dictionary)
|
||||
{
|
||||
// hacky, have to first get as float and then cast to int.
|
||||
float cygnetid;
|
||||
@@ -48,7 +48,7 @@ ScreenSpaceCygnet::ScreenSpaceCygnet(const ghoul::Dictionary& dictionary)
|
||||
_updateTime = (int) interval;
|
||||
|
||||
_downloadImage = true;
|
||||
_url = IswaManager::ref().iswaUrl(_cygnetId);
|
||||
_texturePath = IswaManager::ref().iswaUrl(_cygnetId);
|
||||
|
||||
_openSpaceTime = OsEng.timeManager().time().j2000Seconds();
|
||||
_lastUpdateOpenSpaceTime = _openSpaceTime;
|
||||
@@ -77,14 +77,9 @@ void ScreenSpaceCygnet::update(){
|
||||
(_realTime.count()-_lastUpdateRealTime.count()) > _minRealTimeUpdateInterval);
|
||||
|
||||
if((OsEng.timeManager().time().timeJumped() || timeToUpdate )){
|
||||
_url = IswaManager::ref().iswaUrl(_cygnetId);
|
||||
updateTexture();
|
||||
_texturePath = IswaManager::ref().iswaUrl(_cygnetId);
|
||||
_lastUpdateRealTime = _realTime;
|
||||
_lastUpdateOpenSpaceTime = _openSpaceTime;
|
||||
}
|
||||
|
||||
if(_futureImage.valid() && DownloadManager::futureReady(_futureImage)) {
|
||||
loadTexture();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
#include <chrono>
|
||||
#include <future>
|
||||
#include <openspace/rendering/screenspacerenderable.h>
|
||||
#include <modules/base/rendering/screenspaceimage.h>
|
||||
#include <modules/base/rendering/screenspaceimageonline.h>
|
||||
|
||||
#include <openspace/engine/downloadmanager.h>
|
||||
#include <modules/iswa/util/iswamanager.h>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
class ScreenSpaceCygnet : public ScreenSpaceImage {
|
||||
class ScreenSpaceCygnet : public ScreenSpaceImageOnline {
|
||||
public:
|
||||
ScreenSpaceCygnet(const ghoul::Dictionary& dictionary);
|
||||
~ScreenSpaceCygnet();
|
||||
|
||||
@@ -41,7 +41,7 @@ size_t RawVolumeWriter<VoxelType>::coordsToIndex(const glm::uvec3& cartesian) co
|
||||
|
||||
template <typename VoxelType>
|
||||
glm::ivec3 RawVolumeWriter<VoxelType>::indexToCoords(size_t linear) const {
|
||||
return indexToCoords(linear, dimensions());
|
||||
return volume::indexToCoords(linear, dimensions());
|
||||
}
|
||||
|
||||
template <typename VoxelType>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user