Merge master into touch study branch
102
.gitignore
vendored
@@ -7,6 +7,7 @@
|
||||
/documentation
|
||||
/ext/SGCT
|
||||
/logs
|
||||
/sync/
|
||||
tmp/
|
||||
Thumbs.db
|
||||
|
||||
@@ -32,102 +33,5 @@ install_manifest.txt
|
||||
shaders/ABuffer/constants.hglsl
|
||||
ScriptLog.txt
|
||||
|
||||
data/scene/atmosphereearth/textures
|
||||
data/scene/debugglobe/textures
|
||||
data/scene/earth/textures
|
||||
data/scene/jupiter/callisto/textures
|
||||
data/scene/jupiter/europa/textures
|
||||
data/scene/jupiter/ganymede/textures
|
||||
data/scene/jupiter/io/textures
|
||||
data/scene/jupiter/jupiter/textures
|
||||
data/scene/lodglobes/jupiter/callisto/textures
|
||||
data/scene/lodglobes/earth/textures
|
||||
data/scene/lodglobes/jupiter/europa/textures
|
||||
data/scene/lodglobes/jupiter/ganymede/textures
|
||||
data/scene/lodglobes/jupiter/io/textures
|
||||
data/scene/lodglobes/jupiter/jupiter/textures
|
||||
data/scene/lodglobes/mars/textures
|
||||
data/scene/lodglobes/mercury/textures
|
||||
data/scene/lodglobes/moon/textures
|
||||
data/scene/lodglobes/neptune/textures
|
||||
data/scene/lodglobes/saturn/textures
|
||||
data/scene/lodglobes/uranus/textures
|
||||
data/scene/lodglobes/venus/textures
|
||||
data/scene/mars/textures
|
||||
data/scene/mercury/textures
|
||||
data/scene/milkyway/digitaluniverse/textures
|
||||
data/scene/milkyway/eso/textures
|
||||
data/scene/missions/dawn/ceres/textures
|
||||
data/scene/missions/dawn/dawn/obj
|
||||
data/scene/missions/dawn/dawn/textures
|
||||
data/scene/missions/dawn/vestaprojection/textures
|
||||
data/scene/missions/dawn/vestaprojection/VestaComet
|
||||
data/scene/missions/juno/juno/Juno.mtl
|
||||
data/scene/missions/juno/juno/Juno.obj
|
||||
data/scene/missions/juno/juno/spice
|
||||
data/scene/missions/juno/juno/textures
|
||||
data/scene/missions/newhorizons/jupiter/callisto/textures
|
||||
data/scene/missions/newhorizons/jupiter/europa/textures
|
||||
data/scene/missions/newhorizons/jupiter/ganymede/textures
|
||||
data/scene/missions/newhorizons/jupiter/io/textures
|
||||
data/scene/missions/newhorizons/jupiter/jupiter/ProjectionsOfInterest
|
||||
data/scene/missions/newhorizons/newhorizons/models
|
||||
data/scene/missions/newhorizons/newhorizons/textures
|
||||
data/scene/missions/newhorizons/pluto/charon/textures
|
||||
data/scene/missions/newhorizons/pluto/pluto/assets
|
||||
data/scene/missions/newhorizons/pluto/pluto/full_images
|
||||
data/scene/missions/newhorizons/pluto/pluto/images
|
||||
data/scene/missions/newhorizons/pluto/pluto/textures
|
||||
data/scene/missions/osirisrex/bennu/models
|
||||
data/scene/missions/osirisrex/bennu/textures
|
||||
data/scene/missions/osirisrex/osirisrex/models
|
||||
data/scene/missions/osirisrex/osirisrex/textures
|
||||
data/scene/missions/rosetta/67P/obj
|
||||
data/scene/missions/rosetta/67P/rosettaimages
|
||||
data/scene/missions/rosetta/67P/textures
|
||||
data/scene/missions/rosetta/rosetta/rosetta
|
||||
data/scene/missions/rosetta/rosetta/textures
|
||||
data/scene/moon/textures
|
||||
data/scene/neptune/textures
|
||||
data/scene/pluto/textures
|
||||
data/scene/saturn/dione/textures
|
||||
data/scene/saturn/enceladus/textures
|
||||
data/scene/saturn/iapetus/textures
|
||||
data/scene/saturn/mimas/textures
|
||||
data/scene/saturn/rhea/textures
|
||||
data/scene/saturn/saturn/textures
|
||||
data/scene/saturn/tethys/textures
|
||||
data/scene/saturn/titan/textures
|
||||
data/scene/stars/digitaluniverse/colorbv.cmap
|
||||
data/scene/stars/digitaluniverse/speck
|
||||
data/scene/stars/digitaluniverse/textures
|
||||
data/scene/stars/denver/denver_colorbv.cmap
|
||||
data/scene/stars/denver/speck
|
||||
data/scene/stars/denver/textures
|
||||
data/scene/sun/textures
|
||||
data/scene/uranus/textures
|
||||
data/scene/venus/textures
|
||||
data/scene/volumetricmilkyway/milkyway
|
||||
data/spice/DawnKernels
|
||||
data/spice/de430_1850-2150.bsp
|
||||
data/spice/jup260.bsp
|
||||
data/spice/MAR063.BSP
|
||||
data/spice/NewHorizonsKernels
|
||||
data/spice/nh_kernels
|
||||
data/spice/OsirisRexKernels
|
||||
data/spice/plu055.bsp
|
||||
data/spice/Rosetta
|
||||
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/
|
||||
data/scene/digitaluniverse/*/data/*.dat
|
||||
data/scene/digitaluniverse/*/data/*.data
|
||||
data/scene/digitaluniverse/*/speck/*.speck
|
||||
data/scene/digitaluniverse/*/speck/*.cmap
|
||||
data/scene/digitaluniverse/*/speck/*.label
|
||||
data/scene/digitaluniverse/*/textures/*.jpg
|
||||
data/scene/digitaluniverse/*/textures/*.pbm
|
||||
data/scene/digitaluniverse/*/textures/*.png
|
||||
data/scene/digitaluniverse/*/textures/*.sgi
|
||||
customization.lua
|
||||
COMMIT.md
|
||||
|
||||
4
.gitmodules
vendored
@@ -13,6 +13,6 @@
|
||||
[submodule "modules/touch/ext/libTUIO11"]
|
||||
path = modules/touch/ext/libTUIO11
|
||||
url = https://github.com/mkalten/TUIO11_CPP
|
||||
[submodule "apps/Launcher/ext/libtorrent"]
|
||||
path = apps/Launcher/ext/libtorrent
|
||||
[submodule "modules/sync/ext/libtorrent"]
|
||||
path = modules/sync/ext/libtorrent
|
||||
url = https://github.com/OpenSpace/libtorrent.git
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2017 #
|
||||
# Copyright (c) 2014-2018 #
|
||||
# #
|
||||
# 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 #
|
||||
@@ -28,9 +28,9 @@ project(OpenSpace)
|
||||
message(STATUS "Generating OpenSpace project")
|
||||
|
||||
set(OPENSPACE_VERSION_MAJOR 0)
|
||||
set(OPENSPACE_VERSION_MINOR 10)
|
||||
set(OPENSPACE_VERSION_MINOR 11)
|
||||
set(OPENSPACE_VERSION_PATCH 0)
|
||||
set(OPENSPACE_VERSION_STRING "prerelease-15 (ASTC)")
|
||||
set(OPENSPACE_VERSION_STRING "Beta-1")
|
||||
|
||||
set(OPENSPACE_BASE_DIR "${PROJECT_SOURCE_DIR}")
|
||||
set(OPENSPACE_APPS_DIR "${OPENSPACE_BASE_DIR}/apps")
|
||||
|
||||
@@ -23,6 +23,7 @@ Michael Novén
|
||||
Oskar Carlbaum
|
||||
Jonathan Bosson
|
||||
Klas Eskilson
|
||||
Christoffer Särevall
|
||||
|
||||
Anteige
|
||||
noahdasanaike
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2014-2017
|
||||
Copyright (c) 2014-2018
|
||||
|
||||
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
|
||||
|
||||
@@ -6,6 +6,6 @@ The project stems from the same academic collaboration between Sweden’s [Link
|
||||
- Utilization of NASA’s SPICE observational geometry system with its Planetary Data Service (PDS) to enable space mission visualization that reveal how missions are designed to gather science.
|
||||
- Globe browsing techniques across spatial and temporal scales to examine scientific campaigns on multiple planets, including close up surface exploration.
|
||||
|
||||
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:).
|
||||
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-macOS). 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/t/openspacesupport/shared_invite/enQtMjUxNzUyMTQ1ODQxLTI4YjNmMTY3ZDI1N2Q1NWM1ZjQ1NTQyNzAxM2YyMGQ5Y2NmYWJiNjI1NjU4YTkyNTc5ZDE5NzdhNGM2YmUzYTk).
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
#########################################################################################
|
||||
# #
|
||||
# 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(${OPENSPACE_CMAKE_EXT_DIR}/application_definition.cmake)
|
||||
include(${GHOUL_BASE_DIR}/support/cmake/handle_external_library.cmake)
|
||||
|
||||
set(SOURCE_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/infowidget.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mainwindow.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/shortcutwidget.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/syncwidget.cpp
|
||||
)
|
||||
|
||||
set(HEADER_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/infowidget.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mainwindow.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/shortcutwidget.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/syncwidget.h
|
||||
)
|
||||
|
||||
find_package(Qt5 COMPONENTS Core Widgets Network REQUIRED)
|
||||
|
||||
qt5_wrap_cpp(MOC_FILES ${HEADER_FILES})
|
||||
qt5_add_resources(RESOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/files.qrc)
|
||||
|
||||
create_new_application(
|
||||
Launcher
|
||||
MACOSX_BUNDLE
|
||||
${SOURCE_FILES}
|
||||
${HEADER_FILES}
|
||||
${OPENSPACE_APPS_DIR}/Launcher/openspace.rc
|
||||
${MOC_FILES}
|
||||
${RESOURCE_FILES}
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
Launcher
|
||||
libOpenSpace
|
||||
Qt5::Widgets
|
||||
Qt5::Network
|
||||
)
|
||||
|
||||
#####
|
||||
# Libtorrent
|
||||
#####
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
SET(LIBTORRENT_encryption OFF CACHE BOOL "Use OpenSSL Encryption" FORCE)
|
||||
SET(LIBTORRENT_shared OFF CACHE BOOL "Use Libtorrent as shared library" FORCE)
|
||||
|
||||
include_external_library(
|
||||
Launcher
|
||||
torrent-rasterbar
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ext/libtorrent
|
||||
)
|
||||
target_include_directories(
|
||||
Launcher
|
||||
SYSTEM PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ext/libtorrent/include
|
||||
)
|
||||
@@ -1,5 +0,0 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource>
|
||||
<file>images/header.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
Before Width: | Height: | Size: 32 KiB |
@@ -1,132 +0,0 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* 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 "infowidget.h"
|
||||
|
||||
#include "syncwidget.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QProgressBar>
|
||||
|
||||
#include <libtorrent/torrent_status.hpp>
|
||||
|
||||
InfoWidget::InfoWidget(QString name, int totalBytes)
|
||||
: QGroupBox(nullptr)
|
||||
, _name(nullptr)
|
||||
, _bytes(nullptr)
|
||||
, _progress(nullptr)
|
||||
, _messagesLeft(nullptr)
|
||||
, _messagesCenter(nullptr)
|
||||
, _messagesRight(nullptr)
|
||||
, _totalBytes(totalBytes)
|
||||
{
|
||||
setFixedHeight(100);
|
||||
|
||||
QGridLayout* layout = new QGridLayout;
|
||||
layout->setHorizontalSpacing(10);
|
||||
|
||||
_name = new QLabel(name);
|
||||
_name->setObjectName("Name");
|
||||
//_name->setMaximumWidth(300);
|
||||
_name->setFixedWidth(450);
|
||||
layout->addWidget(_name, 0, 0, 1, 2);
|
||||
layout->setRowStretch(1, 10);
|
||||
|
||||
_bytes = new QLabel("");
|
||||
_bytes->setObjectName("Bytes");
|
||||
layout->addWidget(_bytes, 2, 0);
|
||||
|
||||
_progress = new QProgressBar;
|
||||
_progress->setTextVisible(false);
|
||||
_progress->setFixedWidth(285);
|
||||
layout->addWidget(_progress, 2, 1);
|
||||
|
||||
_messagesLeft = new QLabel("");
|
||||
_messagesLeft->setObjectName("MessageLeft");
|
||||
_messagesCenter = new QLabel("");
|
||||
_messagesCenter->setObjectName("MessageCenter");
|
||||
_messagesRight = new QLabel("");
|
||||
_messagesRight->setObjectName("MessageRight");
|
||||
|
||||
layout->addWidget(_messagesLeft, 3, 0, 1, 2);
|
||||
layout->addWidget(_messagesCenter, 3, 0, 1, 2, Qt::AlignCenter);
|
||||
layout->addWidget(_messagesRight, 3, 0, 1, 2, Qt::AlignRight);
|
||||
|
||||
setLayout(layout);
|
||||
}
|
||||
|
||||
void InfoWidget::update(std::shared_ptr<openspace::DownloadManager::FileFuture> f) {
|
||||
_bytes->setText(
|
||||
QString("%1 / %2")
|
||||
.arg(f->currentSize)
|
||||
.arg(f->totalSize)
|
||||
);
|
||||
_progress->setValue(static_cast<int>(f->progress * 100));
|
||||
|
||||
if (f->errorMessage.empty()) {
|
||||
QString t = "Time remaining %1 s";
|
||||
_messagesLeft->setText(t.arg(static_cast<int>(f->secondsRemaining)));
|
||||
}
|
||||
else {
|
||||
_messagesLeft->setText(QString::fromStdString(f->errorMessage));
|
||||
}
|
||||
}
|
||||
|
||||
void InfoWidget::update(libtorrent::torrent_status s) {
|
||||
_bytes->setText(
|
||||
QString("%1 / %2")
|
||||
.arg(s.total_wanted_done)
|
||||
.arg(s.total_wanted)
|
||||
);
|
||||
float progress = static_cast<float>(s.total_wanted_done) / s.total_wanted;
|
||||
_progress->setValue(static_cast<int>(progress * 100));
|
||||
|
||||
if (s.error.empty()) {
|
||||
int bytesPerSecond = s.download_rate;
|
||||
long long remainingBytes = s.total_wanted - s.total_wanted_done;
|
||||
if (bytesPerSecond > 0 && remainingBytes > 0) {
|
||||
float seconds = static_cast<float>(remainingBytes) / bytesPerSecond;
|
||||
|
||||
QString left = "Remaining: %1 s";
|
||||
_messagesLeft->setText(left.arg(static_cast<int>(seconds)));
|
||||
|
||||
QString center = "Peers: %1 (%2) | Seeds: %3 (%4)";
|
||||
_messagesCenter->setText(center.arg(s.num_peers).arg(s.list_peers).arg(s.num_seeds).arg(s.list_seeds));
|
||||
|
||||
QString right = "%1 KiB/s";
|
||||
_messagesRight->setText(right.arg(bytesPerSecond / 1024));
|
||||
}
|
||||
else
|
||||
_messagesLeft->setText("");
|
||||
}
|
||||
else {
|
||||
_messagesLeft->setText(QString::fromStdString(s.error));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void InfoWidget::error(QString message) {
|
||||
_messagesLeft->setText(message);
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* 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 <QApplication>
|
||||
#include <QFile>
|
||||
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <ghoul/filesystem/filesystem>
|
||||
|
||||
static const QString style = R"style(
|
||||
QWidget {
|
||||
/*font-family: "Helvetica";*/
|
||||
}
|
||||
QWidget#MainWindow, QTextEdit, QWidget#SyncWidget, QWidget#DownloadArea {
|
||||
background-color: rgb(40, 40, 40);
|
||||
}
|
||||
QTextEdit, QLabel, QComboBox, QCheckBox {
|
||||
color: #EDEDED;
|
||||
font-size: 12px;
|
||||
}
|
||||
QLabel {
|
||||
font-size: 13px;
|
||||
}
|
||||
QLabel#Image {
|
||||
margin: -10px 0px -5px 0px;
|
||||
}
|
||||
QTextEdit {
|
||||
border-width: 2px 2px 0px 0px;
|
||||
border-style: solid;
|
||||
background-color: rgb(60, 60, 60);
|
||||
}
|
||||
QPushButton {
|
||||
color:#202020;
|
||||
background-color:
|
||||
qlineargradient(
|
||||
x1: 0, y1: 0, x2: 0, y2: 1,
|
||||
stop: 0 white,
|
||||
stop: 1 #555555
|
||||
);
|
||||
border: 1px solid black;
|
||||
font-size: 11px;
|
||||
min-height: 20px;
|
||||
}
|
||||
QComboBox {
|
||||
background-color: rgb(60, 60, 60);
|
||||
min-height: 20px;
|
||||
}
|
||||
QComboBox:focus, QComboBox:focus QAbstractItemView {
|
||||
color: white;
|
||||
background-color: rgb(60, 60, 60);
|
||||
selection-background-color: rgb(75, 75, 75);
|
||||
}
|
||||
QCheckBox {
|
||||
border: none;
|
||||
}
|
||||
QCheckBox::indicator {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
QCheckBox::indicator::unchecked {
|
||||
border: 1px solid #5A5A5A;
|
||||
background: #A0A0A0;
|
||||
}
|
||||
QCheckBox::indicator:unchecked:hover {
|
||||
border: 1px solid #DDDDDD;
|
||||
}
|
||||
QCheckBox::indicator::checked {
|
||||
border: 1px solid #5A5A5A;
|
||||
background: #5AB65A;
|
||||
}
|
||||
QCheckBox::indicator:checked:hover {
|
||||
border: 1px solid #DDDDDD;
|
||||
}
|
||||
QGroupBox, QScrollArea {
|
||||
border: 0px;
|
||||
}
|
||||
InfoWidget {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #BBBBBB;
|
||||
margin: 2px 1px 2px 1px;
|
||||
padding: 7.5px;
|
||||
}
|
||||
InfoWidget QLabel#Name {
|
||||
font-size: 17px;
|
||||
}
|
||||
InfoWidget QLabel#Bytes {
|
||||
font-size: 13px;
|
||||
font-family: "Lucida Console";
|
||||
}
|
||||
InfoWidget QLabel#MessageLeft, QLabel#MessageCenter, QLabel#MessageRight {
|
||||
font-size: 11.5px;
|
||||
margin-top: -2px;
|
||||
}
|
||||
InfoWidget QProgressBar {
|
||||
border: 2px solid #BBBBBB;
|
||||
border-radius: 5px;
|
||||
background: white;
|
||||
height: 15px;
|
||||
}
|
||||
InfoWidget QProgressBar::chunk {
|
||||
background: qlineargradient(
|
||||
x1: 0, y1: 0.5, x2: 1, y2: 0.5,
|
||||
stop: 0 #444444,
|
||||
stop: 1 #600000
|
||||
);
|
||||
}
|
||||
QScrollBar {
|
||||
border: 1px solid #000000;
|
||||
background: #282828;
|
||||
width: 15px;
|
||||
margin: 16px 0px 16px 0px;
|
||||
}
|
||||
QScrollBar::handle {
|
||||
background: #B0B0B0;
|
||||
border: 1px solid #000000;
|
||||
border-width: 1px 0px 1px 0px;
|
||||
min-height: 20px;
|
||||
}
|
||||
QScrollBar::add-line, QScrollBar::sub-line {
|
||||
background:#B0B0B0;
|
||||
border: 1px solid #5A5A5A;
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
QScrollBar::add-line {
|
||||
top: 15px;
|
||||
height: 15px;
|
||||
}
|
||||
QScrollBar::sub-line {
|
||||
height: 15px;
|
||||
subcontrol-position: top;
|
||||
}
|
||||
QScrollBar::up-arrow, QScrollBar::down-arrow {
|
||||
border: 1px solid #5A5A5A;
|
||||
width: 3px;
|
||||
height: 3px;
|
||||
background-color: #353535;
|
||||
}
|
||||
QScrollBar::add-page, QScrollBar::sub-page {
|
||||
background: none;
|
||||
}
|
||||
)style";
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
QApplication app(argc, argv);
|
||||
app.setStyleSheet(style);
|
||||
|
||||
MainWindow window;
|
||||
window.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
@@ -1,349 +0,0 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* 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 "mainwindow.h"
|
||||
|
||||
#include "shortcutwidget.h"
|
||||
#include "syncwidget.h"
|
||||
|
||||
#include <openspace/engine/configurationmanager.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/engine/logfactory.h>
|
||||
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/logging/log.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/logging/consolelog.h>
|
||||
#include <ghoul/logging/htmllog.h>
|
||||
#include <ghoul/logging/visualstudiooutputlog.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QComboBox>
|
||||
#include <QDir>
|
||||
#include <QGridLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QProcess>
|
||||
#include <QPushButton>
|
||||
#include <QThread>
|
||||
|
||||
namespace {
|
||||
const QSize WindowSize = QSize(640, 480);
|
||||
|
||||
const QString NewsURL = "http://openspaceproject.com/news.txt";
|
||||
|
||||
const std::string _configurationFile = "openspace.cfg";
|
||||
|
||||
#ifdef WIN32
|
||||
const QString OpenSpaceExecutable = "OpenSpace.exe";
|
||||
#else
|
||||
const QString OpenSpaceExecutable = "./OpenSpace";
|
||||
#endif
|
||||
|
||||
class QLog : public ghoul::logging::Log {
|
||||
public:
|
||||
void log(
|
||||
[[maybe_unused]] ghoul::logging::LogLevel level,
|
||||
[[maybe_unused]] const std::string& category,
|
||||
[[maybe_unused]] const std::string& message
|
||||
) {
|
||||
//qDebug() << QString::fromStdString(category) << ": " << QString::fromStdString(message);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
MainWindow::MainWindow()
|
||||
: QWidget(nullptr)
|
||||
, _newsReply(nullptr)
|
||||
, _informationWidget(nullptr)
|
||||
, _scenes(nullptr)
|
||||
, _shortcutWidget(nullptr)
|
||||
, _syncWidget(nullptr)
|
||||
{
|
||||
setObjectName("MainWindow");
|
||||
setFixedSize(WindowSize);
|
||||
//setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
QGridLayout* layout = new QGridLayout;
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
QLabel* image = new QLabel;
|
||||
//image->setContentsMargins(0, 0, 0, 0);
|
||||
image->setObjectName("Image");
|
||||
QPixmap p = QPixmap(":/images/header.png");
|
||||
image->setPixmap(p);
|
||||
layout->addWidget(image, 0, 0, 1, 2);
|
||||
|
||||
_informationWidget = new QTextEdit(this);
|
||||
_informationWidget->setReadOnly(true);
|
||||
//_informationWidget->setEnabled(false);
|
||||
layout->addWidget(_informationWidget, 1, 0, 2, 1);
|
||||
layout->setRowStretch(1, 10);
|
||||
layout->setColumnStretch(0, 4);
|
||||
layout->setColumnStretch(1, 5);
|
||||
|
||||
QWidget* container = new QWidget;
|
||||
{
|
||||
QGridLayout* innerLayout = new QGridLayout;
|
||||
|
||||
//QLabel* shortcutLabel = new QLabel("Keyboard Shortcuts:");
|
||||
//innerLayout->addWidget(shortcutLabel, 0, 0);
|
||||
//QPushButton* shortcutButton = new QPushButton("Open...");
|
||||
//QObject::connect(shortcutButton, SIGNAL(clicked(bool)),
|
||||
// this, SLOT(shortcutButtonPressed())
|
||||
// );
|
||||
//innerLayout->addWidget(shortcutButton, 0, 1);
|
||||
|
||||
innerLayout->setRowStretch(1, 10);
|
||||
|
||||
QLabel* configurationSelectionLabel = new QLabel("Configuration:");
|
||||
innerLayout->addWidget(configurationSelectionLabel, 2, 0);
|
||||
_configurations = new QComboBox;
|
||||
innerLayout->addWidget(_configurations, 2, 1);
|
||||
|
||||
QLabel* sceneSelectionLabel = new QLabel("Scenes:");
|
||||
innerLayout->addWidget(sceneSelectionLabel, 3, 0);
|
||||
_scenes = new QComboBox;
|
||||
innerLayout->addWidget(_scenes, 3, 1);
|
||||
|
||||
container->setLayout(innerLayout);
|
||||
}
|
||||
layout->addWidget(container, 1, 1);
|
||||
|
||||
container = new QWidget;
|
||||
{
|
||||
QBoxLayout* innerLayout = new QHBoxLayout;
|
||||
|
||||
QPushButton* cancelButton = new QPushButton("Exit");
|
||||
QObject::connect(
|
||||
cancelButton, SIGNAL(clicked(bool)),
|
||||
QApplication::instance(), SLOT(quit())
|
||||
);
|
||||
innerLayout->addWidget(cancelButton);
|
||||
|
||||
QPushButton* syncButton = new QPushButton("Sync");
|
||||
QObject::connect(
|
||||
syncButton, SIGNAL(clicked(bool)),
|
||||
this, SLOT(syncButtonPressed())
|
||||
);
|
||||
innerLayout->addWidget(syncButton);
|
||||
|
||||
QPushButton* startButton = new QPushButton("Start");
|
||||
QObject::connect(
|
||||
startButton, SIGNAL(clicked(bool)),
|
||||
this, SLOT(startButtonPressed())
|
||||
);
|
||||
innerLayout->addWidget(startButton);
|
||||
|
||||
container->setLayout(innerLayout);
|
||||
}
|
||||
layout->addWidget(container, 2, 1);
|
||||
|
||||
setLayout(layout);
|
||||
|
||||
initialize();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {
|
||||
delete _informationWidget;
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::configureLogging() {
|
||||
const std::string KeyLogLevel =
|
||||
openspace::ConfigurationManager::KeyLauncher + '.' + openspace::ConfigurationManager::PartLogLevel;
|
||||
const std::string KeyLogImmediateFlush =
|
||||
openspace::ConfigurationManager::KeyLauncher + '.' + openspace::ConfigurationManager::PartImmediateFlush;
|
||||
const std::string KeyLogs =
|
||||
openspace::ConfigurationManager::KeyLauncher + '.' + openspace::ConfigurationManager::PartLogs;
|
||||
|
||||
ghoul::logging::LogLevel ghoulLogLevel;
|
||||
std::string logLevel = "None";
|
||||
bool immediateFlush = false;
|
||||
|
||||
if (_optionParser->isSet("d")) {
|
||||
ghoulLogLevel = static_cast<ghoul::logging::LogLevel>(_optionParser->value("d").toInt());
|
||||
} else {
|
||||
if (_configuration->hasKeyAndValue<std::string>(KeyLogLevel)) {
|
||||
_configuration->getValue(KeyLogLevel, logLevel);
|
||||
_configuration->getValue(KeyLogImmediateFlush, immediateFlush);
|
||||
}
|
||||
ghoulLogLevel = ghoul::logging::levelFromString(logLevel);
|
||||
}
|
||||
printf("%d", ghoulLogLevel);
|
||||
|
||||
using ImmediateFlush = ghoul::logging::LogManager::ImmediateFlush;
|
||||
|
||||
ghoul::logging::LogManager::initialize(
|
||||
ghoulLogLevel,
|
||||
immediateFlush ? ImmediateFlush::Yes : ImmediateFlush::No
|
||||
);
|
||||
LogMgr.addLog(std::make_unique<ghoul::logging::ConsoleLog>());
|
||||
// TODO: This can crash the system in cases where the logfile can't be created ---abock
|
||||
LogMgr.addLog(std::make_unique< ghoul::logging::HTMLLog >("LauncherLog.html", ghoul::logging::HTMLLog::Append::No));
|
||||
LogMgr.addLog(std::make_unique< QLog >());
|
||||
|
||||
if (_configuration->hasKeyAndValue<ghoul::Dictionary>(KeyLogs)) {
|
||||
ghoul::Dictionary logs;
|
||||
_configuration->getValue(KeyLogs, logs);
|
||||
|
||||
for (size_t i = 1; i <= logs.size(); ++i) {
|
||||
ghoul::Dictionary logInfo;
|
||||
logs.getValue(std::to_string(i), logInfo);
|
||||
|
||||
try {
|
||||
LogMgr.addLog(openspace::createLog(logInfo));
|
||||
}
|
||||
catch (const ghoul::RuntimeError& e) {
|
||||
LERRORC(e.component, e.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
if (IsDebuggerPresent()) {
|
||||
LogMgr.addLog(std::make_unique<ghoul::logging::VisualStudioOutputLog>());
|
||||
}
|
||||
#endif // WIN32
|
||||
|
||||
#ifndef GHOUL_LOGGING_ENABLE_TRACE
|
||||
if (ghoulLogLevel == ghoul::logging::LogLevel::Trace) {
|
||||
LWARNING("Desired logging level is set to 'Trace' but application was " <<
|
||||
"compiled without Trace support");
|
||||
}
|
||||
#endif // GHOUL_LOGGING_ENABLE_TRACE
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::initialize() {
|
||||
// ParseOptions
|
||||
generateOptions();
|
||||
|
||||
// Get the news information
|
||||
QNetworkRequest request;
|
||||
request.setUrl(QUrl(NewsURL));
|
||||
|
||||
_newsReply = _networkManager.get(request);
|
||||
QObject::connect(_newsReply, SIGNAL(finished()),
|
||||
this, SLOT(newsReadyRead())
|
||||
);
|
||||
QObject::connect(_newsReply, SIGNAL(error(QNetworkReply::NetworkError)),
|
||||
this, SLOT(newsNetworkError())
|
||||
);
|
||||
|
||||
_shortcutWidget = new ShortcutWidget(this, Qt::Popup | Qt::Dialog);
|
||||
_shortcutWidget->setWindowModality(Qt::WindowModal);
|
||||
_shortcutWidget->hide();
|
||||
|
||||
_syncWidget = new SyncWidget(this, Qt::Popup | Qt::Dialog);
|
||||
_syncWidget->setWindowModality(Qt::WindowModal);
|
||||
_syncWidget->hide();
|
||||
|
||||
std::string configurationFile = _configurationFile;
|
||||
|
||||
_configuration = new openspace::ConfigurationManager;
|
||||
configurationFile = _configuration->findConfiguration( configurationFile );
|
||||
_configuration->loadFromFile(configurationFile);
|
||||
|
||||
configureLogging();
|
||||
|
||||
// Load all available scenes
|
||||
QString modulesDirectory = QString::fromStdString(absPath("${SCENE}"));
|
||||
QDir d(modulesDirectory);
|
||||
d.setFilter(QDir::Files);
|
||||
QFileInfoList list = d.entryInfoList();
|
||||
_scenes->addItem("Use Default");
|
||||
for (const QFileInfo& i : list) {
|
||||
QString file = i.fileName();
|
||||
file = file.replace(".scene", "");
|
||||
_sceneFiles.insert(file, i.absoluteFilePath());
|
||||
_scenes->addItem(file);
|
||||
}
|
||||
_scenes->setCurrentText("Use Default");
|
||||
_syncWidget->setSceneFiles(_sceneFiles);
|
||||
|
||||
// Load all available configuration files
|
||||
QString configurationDirectory = QString::fromStdString(absPath("${CONFIG}"));
|
||||
d = QDir(configurationDirectory);
|
||||
d.setFilter(QDir::Files);
|
||||
list = d.entryInfoList();
|
||||
_configurations->addItem("Use Default");
|
||||
for (const QFileInfo& i : list) {
|
||||
QString file = i.fileName();
|
||||
file = file.replace(".xml", "");
|
||||
_configurationFiles.insert(file, i.absoluteFilePath());
|
||||
_configurations->addItem(file);
|
||||
}
|
||||
_configurations->setCurrentText("Use Default");
|
||||
}
|
||||
|
||||
void MainWindow::shortcutButtonPressed() {
|
||||
_shortcutWidget->show();
|
||||
}
|
||||
|
||||
void MainWindow::syncButtonPressed() {
|
||||
_syncWidget->show();
|
||||
}
|
||||
|
||||
void MainWindow::startButtonPressed() {
|
||||
QString exec = OpenSpaceExecutable;
|
||||
if (_sceneFiles.contains(_scenes->currentText()))
|
||||
exec += " -scene \"" + _sceneFiles[_scenes->currentText()] + "\"";
|
||||
|
||||
if (_configurationFiles.contains(_configurations->currentText()))
|
||||
exec += " -sgct \"" + _configurationFiles[_configurations->currentText()] + "\"";
|
||||
|
||||
LINFOC("MainWindow", "Executing: " << exec.toStdString());
|
||||
QProcess::startDetached(exec);
|
||||
}
|
||||
|
||||
void MainWindow::newsNetworkError() {
|
||||
QString error = _newsReply->errorString();
|
||||
_informationWidget->setText(error);
|
||||
_newsReply->deleteLater();
|
||||
}
|
||||
|
||||
void MainWindow::newsReadyRead() {
|
||||
QByteArray arrayData = _newsReply->readAll();
|
||||
QString news = QString::fromLatin1(arrayData);
|
||||
_informationWidget->setText(news);
|
||||
_newsReply->deleteLater();
|
||||
}
|
||||
|
||||
void MainWindow::generateOptions() {
|
||||
|
||||
_optionParser = new QCommandLineParser;
|
||||
_optionParser->setApplicationDescription("OpenSpace Launcher");
|
||||
_optionParser->addHelpOption();
|
||||
_optionParser->addVersionOption();
|
||||
|
||||
_optionParser->addOptions({
|
||||
{ { "d", "debug" },
|
||||
QCoreApplication::translate("main", "Debug output level"),
|
||||
QCoreApplication::translate("main", "0, 1, 2, 3, 4, 5, 6, 7"),
|
||||
QCoreApplication::translate("main", "1"),
|
||||
}
|
||||
});
|
||||
_optionParser->process(*QApplication::instance());
|
||||
}
|
||||
@@ -1,725 +0,0 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* 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 "syncwidget.h"
|
||||
|
||||
#include "infowidget.h"
|
||||
|
||||
#include <openspace/openspace.h>
|
||||
|
||||
#include <ghoul/ghoul.h>
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/filesystem/file.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/lua/ghoul_lua.h>
|
||||
#include <ghoul/lua/luastate.h>
|
||||
#include <ghoul/misc/dictionary.h>
|
||||
#include <ghoul/misc/onscopeexit.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCheckBox>
|
||||
#include <QDir>
|
||||
#include <QDirIterator>
|
||||
#include <QFileInfo>
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QPushButton>
|
||||
#include <QScrollArea>
|
||||
#include <QString>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include <libtorrent/entry.hpp>
|
||||
#include <libtorrent/bencode.hpp>
|
||||
#include <libtorrent/session.hpp>
|
||||
#include <libtorrent/alert_types.hpp>
|
||||
#include <libtorrent/torrent_info.hpp>
|
||||
|
||||
#include <fstream>
|
||||
#include <mutex>
|
||||
|
||||
namespace {
|
||||
const std::string _loggerCat = "SyncWidget";
|
||||
|
||||
const std::string _configurationFile = "Launcher.config";
|
||||
|
||||
const int nColumns = 3;
|
||||
|
||||
const int DownloadApplicationVersion = 1;
|
||||
|
||||
const std::string FileDownloadKey = "FileDownload";
|
||||
const std::string FileRequestKey = "FileRequest";
|
||||
const std::string TorrentFilesKey = "TorrentFiles";
|
||||
|
||||
const std::string UrlKey = "URL";
|
||||
const std::string FileKey = "File";
|
||||
const std::string DestinationKey = "Destination";
|
||||
const std::string IdentifierKey = "Identifier";
|
||||
const std::string VersionKey = "Version";
|
||||
|
||||
const bool OverwriteFiles = false;
|
||||
const bool CleanInfoWidgets = true;
|
||||
}
|
||||
|
||||
SyncWidget::SyncWidget(QWidget* parent, Qt::WindowFlags f)
|
||||
: QWidget(parent, f)
|
||||
, _sceneLayout(nullptr)
|
||||
, _session(new libtorrent::session)
|
||||
{
|
||||
setObjectName("SyncWidget");
|
||||
setFixedSize(500, 500);
|
||||
|
||||
QBoxLayout* layout = new QVBoxLayout;
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
{
|
||||
QGroupBox* sceneBox = new QGroupBox;
|
||||
_sceneLayout = new QGridLayout;
|
||||
sceneBox->setLayout(_sceneLayout);
|
||||
layout->addWidget(sceneBox);
|
||||
}
|
||||
{
|
||||
QPushButton* syncButton = new QPushButton("Synchronize Data");
|
||||
syncButton->setObjectName("SyncButton");
|
||||
QObject::connect(
|
||||
syncButton, SIGNAL(clicked(bool)),
|
||||
this, SLOT(syncButtonPressed())
|
||||
);
|
||||
|
||||
layout->addWidget(syncButton);
|
||||
}
|
||||
|
||||
{
|
||||
QScrollArea* area = new QScrollArea;
|
||||
area->setWidgetResizable(true);
|
||||
|
||||
QWidget* w = new QWidget;
|
||||
w->setObjectName("DownloadArea");
|
||||
area->setWidget(w);
|
||||
|
||||
_downloadLayout = new QVBoxLayout(w);
|
||||
_downloadLayout->setMargin(0);
|
||||
_downloadLayout->setSpacing(0);
|
||||
_downloadLayout->addStretch(100);
|
||||
|
||||
layout->addWidget(area);
|
||||
}
|
||||
QPushButton* close = new QPushButton("Close");
|
||||
layout->addWidget(close, Qt::AlignRight);
|
||||
QObject::connect(
|
||||
close, SIGNAL(clicked(bool)),
|
||||
this, SLOT(close())
|
||||
);
|
||||
|
||||
setLayout(layout);
|
||||
|
||||
ghoul::initialize();
|
||||
_downloadManager = std::make_unique<openspace::DownloadManager>(
|
||||
"http://data.openspaceproject.com/request", DownloadApplicationVersion);
|
||||
|
||||
libtorrent::error_code ec;
|
||||
_session->listen_on(std::make_pair(20280, 20290), ec);
|
||||
|
||||
libtorrent::settings_pack settings;
|
||||
settings.set_str(libtorrent::settings_pack::user_agent, "OpenSpace/" +
|
||||
std::to_string(openspace::OPENSPACE_VERSION_MAJOR) + "." +
|
||||
std::to_string(openspace::OPENSPACE_VERSION_MINOR) + "." +
|
||||
std::to_string(openspace::OPENSPACE_VERSION_PATCH));
|
||||
settings.set_bool(libtorrent::settings_pack::allow_multiple_connections_per_ip, true);
|
||||
settings.set_bool(libtorrent::settings_pack::ignore_limits_on_local_network, true);
|
||||
settings.set_int(libtorrent::settings_pack::connection_speed, 20);
|
||||
settings.set_int(libtorrent::settings_pack::active_downloads, -1);
|
||||
settings.set_int(libtorrent::settings_pack::active_seeds, -1);
|
||||
settings.set_int(libtorrent::settings_pack::active_limit, 30);
|
||||
settings.set_int(libtorrent::settings_pack::dht_announce_interval, 60);
|
||||
_session->apply_settings(settings);
|
||||
|
||||
if (ec) {
|
||||
LFATAL("Failed to open socket: " << ec.message());
|
||||
return;
|
||||
}
|
||||
_session->start_upnp();
|
||||
|
||||
std::ifstream file(_configurationFile);
|
||||
if (!file.fail()) {
|
||||
union {
|
||||
uint32_t value;
|
||||
std::array<char, 4> data;
|
||||
} size;
|
||||
|
||||
file.read(size.data.data(), sizeof(uint32_t));
|
||||
std::vector<char> buffer(size.value);
|
||||
file.read(buffer.data(), size.value);
|
||||
file.close();
|
||||
|
||||
libtorrent::entry e = libtorrent::bdecode(buffer.begin(), buffer.end());
|
||||
_session->start_dht(e);
|
||||
}
|
||||
else
|
||||
_session->start_dht();
|
||||
|
||||
_session->add_dht_router({ "router.utorrent.com", 6881 });
|
||||
_session->add_dht_router({ "dht.transmissionbt.com", 6881 });
|
||||
_session->add_dht_router({ "router.bittorrent.com", 6881 });
|
||||
_session->add_dht_router({ "router.bitcomet.com", 6881 });
|
||||
|
||||
|
||||
|
||||
QTimer* timer = new QTimer(this);
|
||||
QObject::connect(timer, SIGNAL(timeout()), this, SLOT(handleTimer()));
|
||||
timer->start(100);
|
||||
|
||||
_mutex.clear();
|
||||
|
||||
_scriptEngine.initialize();
|
||||
}
|
||||
|
||||
SyncWidget::~SyncWidget() {
|
||||
libtorrent::entry dht = _session->dht_state();
|
||||
|
||||
std::vector<char> buffer;
|
||||
libtorrent::bencode(std::back_inserter(buffer), dht);
|
||||
|
||||
std::ofstream f(_configurationFile);
|
||||
|
||||
union {
|
||||
uint32_t value;
|
||||
std::array<char, 4> data;
|
||||
} size;
|
||||
size.value = buffer.size();
|
||||
f.write(size.data.data(), sizeof(uint32_t));
|
||||
f.write(buffer.data(), buffer.size());
|
||||
|
||||
_downloadManager.reset();
|
||||
ghoul::deinitialize();
|
||||
delete _session;
|
||||
}
|
||||
|
||||
void SyncWidget::closeEvent(QCloseEvent* event) {
|
||||
std::vector<libtorrent::torrent_handle> handles = _session->get_torrents();
|
||||
for (libtorrent::torrent_handle h : handles) {
|
||||
h.flush_cache();
|
||||
_session->remove_torrent(h);
|
||||
}
|
||||
}
|
||||
|
||||
void SyncWidget::setSceneFiles(QMap<QString, QString> sceneFiles) {
|
||||
_sceneFiles = std::move(sceneFiles);
|
||||
QStringList keys = _sceneFiles.keys();
|
||||
for (int i = 0; i < keys.size(); ++i) {
|
||||
const QString& sceneName = keys[i];
|
||||
|
||||
QCheckBox* checkbox = new QCheckBox(sceneName);
|
||||
QString defaultName = "default";
|
||||
if (sceneName == defaultName){
|
||||
checkbox->setChecked(true);
|
||||
}
|
||||
_sceneLayout->addWidget(checkbox, i / nColumns, i % nColumns);
|
||||
}
|
||||
}
|
||||
|
||||
void SyncWidget::clear() {
|
||||
for (std::shared_ptr<openspace::DownloadManager::FileFuture> f : _futures)
|
||||
f->abortDownload = true;
|
||||
|
||||
using libtorrent::torrent_handle;
|
||||
for (QMap<torrent_handle, InfoWidget*>::iterator i = _torrentInfoWidgetMap.begin();
|
||||
i != _torrentInfoWidgetMap.end();
|
||||
++i)
|
||||
{
|
||||
delete i.value();
|
||||
}
|
||||
_torrentInfoWidgetMap.clear();
|
||||
_session->abort();
|
||||
|
||||
|
||||
_directFiles.clear();
|
||||
_fileRequests.clear();
|
||||
_torrentFiles.clear();
|
||||
}
|
||||
|
||||
void SyncWidget::handleDirectFiles() {
|
||||
LDEBUG("Direct Files");
|
||||
for (const DirectFile& f : _directFiles) {
|
||||
LDEBUG(f.url.toStdString() << " -> " << f.destination.toStdString());
|
||||
|
||||
std::shared_ptr<openspace::DownloadManager::FileFuture> future = _downloadManager->downloadFile(
|
||||
f.url.toStdString(),
|
||||
absPath("${SCENE}/" + f.module.toStdString() + "/" + f.destination.toStdString()),
|
||||
OverwriteFiles
|
||||
);
|
||||
if (future) {
|
||||
InfoWidget* w = new InfoWidget(f.destination);
|
||||
_downloadLayout->insertWidget(_downloadLayout->count() - 1, w);
|
||||
|
||||
_futures.push_back(future);
|
||||
_futureInfoWidgetMap[future] = w;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SyncWidget::handleFileRequest() {
|
||||
LDEBUG("File Requests");
|
||||
|
||||
for (const FileRequest& f : _fileRequests) {
|
||||
LDEBUG(f.identifier.toStdString() << " (" << f.version << ") -> " << f.destination.toStdString());
|
||||
|
||||
ghoul::filesystem::Directory d = FileSys.currentDirectory();
|
||||
OnExit([&]() { FileSys.setCurrentDirectory(d); });
|
||||
FileSys.setCurrentDirectory(f.baseDir.toStdString());
|
||||
|
||||
std::string identifier = f.identifier.toStdString();
|
||||
std::string path = absPath(f.destination.toStdString());
|
||||
int version = f.version;
|
||||
|
||||
std::string requestId = path + "$" + identifier;
|
||||
|
||||
|
||||
std::lock_guard<std::mutex> g(_filesDownloadingMutex);
|
||||
if (_filesDownloading.find(requestId) != _filesDownloading.end()) {
|
||||
continue; // The file is already being downloaded.
|
||||
}
|
||||
_filesDownloading.insert(requestId);
|
||||
|
||||
_downloadManager->downloadRequestFilesAsync(
|
||||
identifier,
|
||||
path,
|
||||
version,
|
||||
OverwriteFiles,
|
||||
[this, requestId](const std::vector<std::shared_ptr<openspace::DownloadManager::FileFuture>>& futures) {
|
||||
handleFileFutureAddition(futures);
|
||||
std::lock_guard<std::mutex> g(_filesDownloadingMutex);
|
||||
_filesDownloading.erase(requestId);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void SyncWidget::handleTorrentFiles() {
|
||||
LDEBUG("Torrent Files");
|
||||
for (const TorrentFile& f : _torrentFiles) {
|
||||
LDEBUG(f.file.toStdString() << " -> " << f.destination.toStdString());
|
||||
|
||||
ghoul::filesystem::Directory d = FileSys.currentDirectory();
|
||||
// std::string thisDirectory = absPath("${SCENE}/" + f.module.toStdString() + "/");
|
||||
FileSys.setCurrentDirectory(f.baseDir.toStdString());
|
||||
// FileSys.setCurrentDirectory(thisDirectory);
|
||||
|
||||
QString file = QString::fromStdString(absPath(f.file.toStdString()));
|
||||
|
||||
if (!QFileInfo(file).exists()) {
|
||||
LERROR(file.toStdString() << " does not exist");
|
||||
continue;
|
||||
}
|
||||
|
||||
libtorrent::error_code ec;
|
||||
libtorrent::add_torrent_params p;
|
||||
|
||||
//if (f.destination.isEmpty())
|
||||
//p.save_path = absPath(fullPath(f.module, ".").toStdString());
|
||||
//else
|
||||
//p.save_path =
|
||||
p.save_path = absPath(f.destination.toStdString());
|
||||
|
||||
p.ti = std::make_shared<libtorrent::torrent_info>(file.toStdString(), ec);
|
||||
p.name = f.file.toStdString();
|
||||
p.storage_mode = libtorrent::storage_mode_allocate;
|
||||
if (ec) {
|
||||
LERROR(f.file.toStdString() << ": " << ec.message());
|
||||
continue;
|
||||
}
|
||||
libtorrent::torrent_handle h = _session->add_torrent(p, ec);
|
||||
if (ec) {
|
||||
LERROR(f.file.toStdString() << ": " << ec.message());
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_torrentInfoWidgetMap.find(h) == _torrentInfoWidgetMap.end()) {
|
||||
QString fileString = f.file;
|
||||
QString t = QString(".torrent");
|
||||
fileString.replace(fileString.indexOf(t), t.size(), "");
|
||||
|
||||
fileString = f.module + "/" + fileString;
|
||||
|
||||
InfoWidget* w = new InfoWidget(fileString, h.status().total_wanted);
|
||||
_downloadLayout->insertWidget(_downloadLayout->count() - 1, w);
|
||||
_torrentInfoWidgetMap[h] = w;
|
||||
}
|
||||
|
||||
FileSys.setCurrentDirectory(d);
|
||||
}
|
||||
}
|
||||
|
||||
void SyncWidget::syncButtonPressed() {
|
||||
clear();
|
||||
|
||||
ghoul::lua::LuaState state;
|
||||
_scriptEngine.initializeLuaState(state);
|
||||
|
||||
for (const QString& scene : selectedScenes()) {
|
||||
LDEBUG(scene.toStdString());
|
||||
ghoul::Dictionary sceneDictionary;
|
||||
|
||||
try {
|
||||
ghoul::lua::loadDictionaryFromFile(
|
||||
scene.toStdString(),
|
||||
sceneDictionary,
|
||||
state
|
||||
);
|
||||
} catch (const ghoul::lua::LuaRuntimeException& e) {
|
||||
LERROR(e.message);
|
||||
return;
|
||||
}
|
||||
|
||||
ghoul::Dictionary modules;
|
||||
bool success = sceneDictionary.getValue<ghoul::Dictionary>("Modules", modules);
|
||||
if (!success) {
|
||||
LERROR("Could not find 'Modules'");
|
||||
return;
|
||||
}
|
||||
|
||||
QDir sceneDir(scene);
|
||||
sceneDir.cdUp();
|
||||
QList<ModuleInformation> modulesList;
|
||||
for (int i = 1; i <= modules.size(); ++i) {
|
||||
std::string module = modules.value<std::string>(std::to_string(i));
|
||||
std::string shortModule = module;
|
||||
|
||||
std::string::size_type pos = module.find_last_of(FileSys.PathSeparator);
|
||||
if (pos != std::string::npos) {
|
||||
shortModule = module.substr(pos+1);
|
||||
}
|
||||
|
||||
QString m = QString::fromStdString(module);
|
||||
|
||||
QString dataFile = sceneDir.absoluteFilePath(
|
||||
QString::fromStdString(module) + "/" + QString::fromStdString(shortModule) + ".data"
|
||||
);
|
||||
|
||||
if (QFileInfo(dataFile).exists()) {
|
||||
modulesList.append({
|
||||
QString::fromStdString(module),
|
||||
dataFile,
|
||||
sceneDir.absolutePath() + "/" + QString::fromStdString(module)
|
||||
});
|
||||
}
|
||||
else {
|
||||
QDir metaModuleDir = sceneDir;
|
||||
metaModuleDir.cd(QString::fromStdString(module));
|
||||
|
||||
QDirIterator it(metaModuleDir.absolutePath(), QStringList() << "*.data", QDir::Files, QDirIterator::Subdirectories);
|
||||
while (it.hasNext()) {
|
||||
QString v = it.next();
|
||||
QDir d(v);
|
||||
d.cdUp();
|
||||
|
||||
modulesList.append({
|
||||
d.dirName(),
|
||||
v,
|
||||
d.absolutePath()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
modulesList.append({
|
||||
"common",
|
||||
sceneDir.absolutePath() + "/common/common.data",
|
||||
sceneDir.absolutePath() + "/common"
|
||||
});
|
||||
|
||||
for (const ModuleInformation& module : modulesList) {
|
||||
QString dataFile = module.moduleDatafile;
|
||||
// QString dataFile = sceneDir.absoluteFilePath(module + "/" + module + ".data");
|
||||
|
||||
if (QFileInfo(dataFile).exists()) {
|
||||
ghoul::Dictionary dataDictionary;
|
||||
try {
|
||||
ghoul::lua::loadDictionaryFromFile(dataFile.toStdString(), dataDictionary);
|
||||
}
|
||||
catch (const ghoul::lua::LuaLoadingException& exception) {
|
||||
LWARNINGC(exception.component, exception.message);
|
||||
}
|
||||
|
||||
ghoul::Dictionary directDownloadFiles;
|
||||
ghoul::Dictionary fileRequests;
|
||||
ghoul::Dictionary torrentFiles;
|
||||
|
||||
bool found = dataDictionary.getValue<ghoul::Dictionary>(FileDownloadKey, directDownloadFiles);
|
||||
if (found) {
|
||||
for (int i = 1; i <= directDownloadFiles.size(); ++i) {
|
||||
if (!directDownloadFiles.hasKeyAndValue<ghoul::Dictionary>(std::to_string(i))) {
|
||||
LERROR(dataFile.toStdString() << ": " << FileDownloadKey << " is not a dictionary");
|
||||
continue;
|
||||
}
|
||||
ghoul::Dictionary d = directDownloadFiles.value<ghoul::Dictionary>(std::to_string(i));
|
||||
if (!d.hasKeyAndValue<std::string>(UrlKey)) {
|
||||
LERROR(dataFile.toStdString() << ": No " << UrlKey);
|
||||
continue;
|
||||
}
|
||||
std::string url = d.value<std::string>(UrlKey);
|
||||
|
||||
std::string dest = "";
|
||||
if (d.hasKeyAndValue<std::string>(DestinationKey))
|
||||
dest = d.value<std::string>(DestinationKey);
|
||||
|
||||
_directFiles.append({
|
||||
module.moduleName,
|
||||
QString::fromStdString(url),
|
||||
QString::fromStdString(dest),
|
||||
module.modulePath
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
found = dataDictionary.getValue<ghoul::Dictionary>(FileRequestKey, fileRequests);
|
||||
if (found) {
|
||||
for (int i = 1; i <= fileRequests.size(); ++i) {
|
||||
ghoul::Dictionary d = fileRequests.value<ghoul::Dictionary>(std::to_string(i));
|
||||
|
||||
if (!d.hasKeyAndValue<std::string>(IdentifierKey)) {
|
||||
LERROR(dataFile.toStdString() << ": No " << IdentifierKey);
|
||||
continue;
|
||||
}
|
||||
std::string url = d.value<std::string>(IdentifierKey);
|
||||
|
||||
std::string dest = "";
|
||||
if (d.hasKeyAndValue<std::string>(DestinationKey))
|
||||
dest = d.value<std::string>(DestinationKey);
|
||||
|
||||
if (!d.hasKeyAndValue<double>(VersionKey)) {
|
||||
LERROR(dataFile.toStdString() << ": No " << VersionKey);
|
||||
continue;
|
||||
}
|
||||
int version = static_cast<int>(d.value<double>(VersionKey));
|
||||
|
||||
_fileRequests.append({
|
||||
module.moduleName,
|
||||
QString::fromStdString(url),
|
||||
QString::fromStdString(dest),
|
||||
module.modulePath,
|
||||
version
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
found = dataDictionary.getValue<ghoul::Dictionary>(TorrentFilesKey, torrentFiles);
|
||||
if (found) {
|
||||
for (int i = 1; i <= torrentFiles.size(); ++i) {
|
||||
ghoul::Dictionary d = torrentFiles.value<ghoul::Dictionary>(std::to_string(i));
|
||||
|
||||
if (!d.hasKeyAndValue<std::string>(FileKey)) {
|
||||
LERROR(dataFile.toStdString() << ": No " << FileKey);
|
||||
continue;
|
||||
}
|
||||
std::string file = d.value<std::string>(FileKey);
|
||||
|
||||
std::string dest;
|
||||
if (d.hasKeyAndValue<std::string>(DestinationKey))
|
||||
dest = d.value<std::string>(DestinationKey);
|
||||
else
|
||||
dest = "";
|
||||
|
||||
_torrentFiles.append({
|
||||
module.moduleName,
|
||||
QString::fromStdString(file),
|
||||
QString::fromStdString(dest),
|
||||
module.modulePath
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove duplicates for file requests
|
||||
std::map<QString, FileRequest> uniqueFileRequests;
|
||||
for (const FileRequest& f : _fileRequests) {
|
||||
uniqueFileRequests.emplace(std::make_pair(f.baseDir + "/" + f.destination, f));
|
||||
}
|
||||
_fileRequests.clear();
|
||||
for (const auto& f : uniqueFileRequests) {
|
||||
_fileRequests.append(f.second);
|
||||
}
|
||||
|
||||
// Remove duplicates for direct files
|
||||
std::map<QString, DirectFile> uniqueDirectFiles;
|
||||
for (const DirectFile& f : _directFiles) {
|
||||
uniqueDirectFiles.emplace(std::make_pair(f.destination, f));
|
||||
}
|
||||
_directFiles.clear();
|
||||
for (const auto& f : uniqueDirectFiles) {
|
||||
_directFiles.append(f.second);
|
||||
}
|
||||
|
||||
// Remove duplicates for torrents
|
||||
std::map<QString, TorrentFile> uniqueTorrentFiles;
|
||||
for (const TorrentFile& f : _torrentFiles) {
|
||||
uniqueTorrentFiles.emplace(std::make_pair(f.destination, f));
|
||||
}
|
||||
_directFiles.clear();
|
||||
for (const auto& f : uniqueTorrentFiles) {
|
||||
_torrentFiles.append(f.second);
|
||||
}
|
||||
|
||||
handleDirectFiles();
|
||||
handleFileRequest();
|
||||
handleTorrentFiles();
|
||||
}
|
||||
|
||||
QStringList SyncWidget::selectedScenes() const {
|
||||
QStringList result;
|
||||
int nChildren = _sceneLayout->count();
|
||||
for (int i = 0; i < nChildren; ++i) {
|
||||
QWidget* w = _sceneLayout->itemAt(i)->widget();
|
||||
QCheckBox* c = static_cast<QCheckBox*>(w);
|
||||
if (c->isChecked()) {
|
||||
QString t = c->text();
|
||||
result.append(_sceneFiles[t]);
|
||||
}
|
||||
}
|
||||
std::string scenes;
|
||||
for (QString s : result)
|
||||
scenes += s.toStdString() + "; ";
|
||||
LDEBUG("Downloading scenes: " << scenes);
|
||||
return result;
|
||||
}
|
||||
|
||||
void SyncWidget::handleTimer() {
|
||||
using namespace libtorrent;
|
||||
using FileFuture = openspace::DownloadManager::FileFuture;
|
||||
|
||||
std::vector<std::shared_ptr<FileFuture>> toRemove;
|
||||
for (std::shared_ptr<FileFuture> f : _futures) {
|
||||
InfoWidget* w = _futureInfoWidgetMap[f];
|
||||
|
||||
if (CleanInfoWidgets && (f->isFinished || f->isAborted)) {
|
||||
toRemove.push_back(f);
|
||||
_downloadLayout->removeWidget(w);
|
||||
_futureInfoWidgetMap.erase(f);
|
||||
delete w;
|
||||
}
|
||||
else
|
||||
w->update(f);
|
||||
}
|
||||
|
||||
for (std::shared_ptr<FileFuture> f : toRemove) {
|
||||
_futures.erase(std::remove(_futures.begin(), _futures.end(), f), _futures.end());
|
||||
}
|
||||
|
||||
while (_mutex.test_and_set()) {}
|
||||
for (std::shared_ptr<FileFuture> f : _futuresToAdd) {
|
||||
InfoWidget* w = new InfoWidget(QString::fromStdString(f->filePath), -1);
|
||||
_downloadLayout->insertWidget(_downloadLayout->count() - 1, w);
|
||||
|
||||
_futureInfoWidgetMap[f] = w;
|
||||
_futures.push_back(f);
|
||||
}
|
||||
_futuresToAdd.clear();
|
||||
_mutex.clear();
|
||||
|
||||
|
||||
std::vector<torrent_handle> handles = _session->get_torrents();
|
||||
for (torrent_handle h : handles) {
|
||||
torrent_status s = h.status();
|
||||
InfoWidget* w = _torrentInfoWidgetMap[h];
|
||||
|
||||
if (w)
|
||||
w->update(s);
|
||||
|
||||
if (CleanInfoWidgets && (s.state == torrent_status::finished || s.state == torrent_status::seeding)) {
|
||||
_torrentInfoWidgetMap.remove(h);
|
||||
delete w;
|
||||
}
|
||||
}
|
||||
|
||||
// Only close every torrent if all torrents are finished
|
||||
bool allSeeding = true;
|
||||
for (torrent_handle h : handles) {
|
||||
torrent_status s = h.status();
|
||||
allSeeding &= (s.state == torrent_status::seeding);
|
||||
}
|
||||
|
||||
if (allSeeding) {
|
||||
for (torrent_handle h : handles)
|
||||
_session->remove_torrent(h);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//_session->post_torrent_updates();
|
||||
//libtorrent::session_settings settings = _session->settings();
|
||||
|
||||
//qDebug() << "Session";
|
||||
//qDebug() << "nPeers: " << _session->status().num_peers;
|
||||
//qDebug() << "DHT: " << _session->is_dht_running();
|
||||
//qDebug() << "Incoming TCP" << settings.enable_incoming_tcp;
|
||||
//qDebug() << "Outgoing TCP" << settings.enable_outgoing_tcp;
|
||||
//qDebug() << "Incoming UTP" << settings.enable_incoming_utp;
|
||||
//qDebug() << "Outgoing UTP" << settings.enable_outgoing_utp;
|
||||
//qDebug() << "===";
|
||||
|
||||
//qDebug() << "Alerts";
|
||||
//std::deque<alert*> alerts;
|
||||
//_session->pop_alerts(&alerts);
|
||||
//for (alert* a : alerts) {
|
||||
// qDebug() << QString::fromStdString(a->message());
|
||||
|
||||
// //if (a->category() == alert::status_notification) {
|
||||
// // state_update_alert* sua = static_cast<state_update_alert*>(a);
|
||||
// // for (torrent_status s )
|
||||
// //}
|
||||
//}
|
||||
//qDebug() << "===";
|
||||
|
||||
|
||||
// qDebug() << "Name: " << QString::fromStdString(h.name());
|
||||
// //torrent_status s = h.status();
|
||||
|
||||
// qDebug() << "Error: " << QString::fromStdString(s.error);
|
||||
|
||||
// qDebug() << "Total Wanted: " << s.total_wanted;
|
||||
// qDebug() << "Total Wanted Done: " << s.total_wanted_done;
|
||||
// qDebug() << "Has Incoming: " << s.has_incoming;
|
||||
// qDebug() << "Connect Candidates: " << s.connect_candidates;
|
||||
// qDebug() << "Last Seen Complete: " << s.last_seen_complete;
|
||||
// qDebug() << "List Peers: " << s.list_peers;
|
||||
// qDebug() << "List Seeds: " << s.list_seeds;
|
||||
// qDebug() << "Num Pieces: " << s.num_pieces;
|
||||
// qDebug() << "Download Rate: " << s.download_rate;
|
||||
// qDebug() << "List Seeds: " << s.list_seeds;
|
||||
// qDebug() << "Paused: " << s.paused;
|
||||
// qDebug() << "Progress: " << s.progress;
|
||||
|
||||
// qDebug() << "";
|
||||
}
|
||||
|
||||
void SyncWidget::handleFileFutureAddition(
|
||||
const std::vector<std::shared_ptr<openspace::DownloadManager::FileFuture>>& futures)
|
||||
{
|
||||
while (_mutex.test_and_set()) {}
|
||||
_futuresToAdd.insert(_futuresToAdd.end(), futures.begin(), futures.end());
|
||||
_mutex.clear();
|
||||
}
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* 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. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_APP_LAUNCHER___SYNCWIDGET___H__
|
||||
#define __OPENSPACE_APP_LAUNCHER___SYNCWIDGET___H__
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include <QMap>
|
||||
|
||||
#include <openspace/engine/downloadmanager.h>
|
||||
#include <openspace/scripting/scriptengine.h>
|
||||
|
||||
#include <libtorrent/torrent_handle.hpp>
|
||||
|
||||
#include <atomic>
|
||||
//#include <thread>
|
||||
|
||||
class QBoxLayout;
|
||||
class QGridLayout;
|
||||
|
||||
class InfoWidget;
|
||||
|
||||
namespace libtorrent {
|
||||
class session;
|
||||
struct torrent_handle;
|
||||
}
|
||||
|
||||
class SyncWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
public:
|
||||
SyncWidget(QWidget* parent, Qt::WindowFlags f = 0);
|
||||
~SyncWidget();
|
||||
|
||||
void setSceneFiles(QMap<QString, QString> sceneFiles);
|
||||
|
||||
private slots:
|
||||
void syncButtonPressed();
|
||||
void handleTimer();
|
||||
|
||||
void closeEvent(QCloseEvent* event);
|
||||
|
||||
private:
|
||||
struct DirectFile {
|
||||
QString module;
|
||||
QString url;
|
||||
QString destination;
|
||||
QString baseDir;
|
||||
};
|
||||
|
||||
struct FileRequest {
|
||||
QString module;
|
||||
QString identifier;
|
||||
QString destination;
|
||||
QString baseDir;
|
||||
int version;
|
||||
};
|
||||
|
||||
struct TorrentFile {
|
||||
QString module;
|
||||
QString file;
|
||||
QString destination;
|
||||
QString baseDir;
|
||||
};
|
||||
|
||||
|
||||
struct ModuleInformation {
|
||||
QString moduleName;
|
||||
QString moduleDatafile;
|
||||
QString modulePath;
|
||||
};
|
||||
|
||||
void clear();
|
||||
QStringList selectedScenes() const;
|
||||
|
||||
void handleFileFutureAddition(const std::vector<std::shared_ptr<openspace::DownloadManager::FileFuture>>& futures);
|
||||
|
||||
void handleDirectFiles();
|
||||
void handleFileRequest();
|
||||
void handleTorrentFiles();
|
||||
|
||||
QMap<QString, QString> _sceneFiles;
|
||||
QString _modulesDirectory;
|
||||
QGridLayout* _sceneLayout;
|
||||
QBoxLayout* _downloadLayout;
|
||||
|
||||
libtorrent::session* _session;
|
||||
QMap<libtorrent::torrent_handle, InfoWidget*> _torrentInfoWidgetMap;
|
||||
|
||||
QList<DirectFile> _directFiles;
|
||||
QList<FileRequest> _fileRequests;
|
||||
QList<TorrentFile> _torrentFiles;
|
||||
|
||||
std::mutex _filesDownloadingMutex;
|
||||
std::set<std::string> _filesDownloading;
|
||||
|
||||
std::vector<std::shared_ptr<openspace::DownloadManager::FileFuture>> _futures;
|
||||
std::map<std::shared_ptr<openspace::DownloadManager::FileFuture>, InfoWidget*> _futureInfoWidgetMap;
|
||||
|
||||
std::vector<std::shared_ptr<openspace::DownloadManager::FileFuture>> _futuresToAdd;
|
||||
std::atomic_flag _mutex;
|
||||
|
||||
std::unique_ptr<openspace::DownloadManager> _downloadManager;
|
||||
openspace::scripting::ScriptEngine _scriptEngine;
|
||||
|
||||
};
|
||||
|
||||
#endif // __OPENSPACE_APP_LAUNCHER___SYNCWIDGET___H__
|
||||
@@ -2,7 +2,7 @@
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2017 #
|
||||
# Copyright (c) 2014-2018 #
|
||||
# #
|
||||
# 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 #
|
||||
@@ -87,10 +87,18 @@ if (OPENSPACE_SPOUT_SUPPORT)
|
||||
add_external_library_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/ext/spout/SpoutLibrary.dll)
|
||||
endif ()
|
||||
|
||||
set(MACOSX_BUNDLE_ICON_FILE openspace.icns)
|
||||
|
||||
create_new_application(OpenSpace
|
||||
${SGCT_OPENVR_FILES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.rc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.icns
|
||||
)
|
||||
|
||||
set_source_files_properties(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.icns
|
||||
PROPERTIES MACOSX_PACKAGE_LOCATION "Resources"
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/misc/assert.h>
|
||||
//#include <ghoul/opengl/ghoul_gl.h>
|
||||
#include <ghoul/misc/boolean.h>
|
||||
|
||||
#include <sgct.h>
|
||||
|
||||
@@ -67,11 +67,11 @@
|
||||
|
||||
namespace {
|
||||
|
||||
const char* _loggerCat = "main";
|
||||
constexpr const char* _loggerCat = "main";
|
||||
sgct::Engine* SgctEngine;
|
||||
|
||||
const char* OpenVRTag = "OpenVR";
|
||||
const char* SpoutTag = "Spout";
|
||||
constexpr const char* OpenVRTag = "OpenVR";
|
||||
constexpr const char* SpoutTag = "Spout";
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
@@ -268,7 +268,7 @@ void mainInitFunc() {
|
||||
|
||||
const sgct::SGCTWindow::StereoMode sm = windowPtr->getStereoMode();
|
||||
const bool hasStereo =
|
||||
(sm != sgct::SGCTWindow::No_Stereo) &&
|
||||
(sm != sgct::SGCTWindow::No_Stereo) &&
|
||||
(sm < sgct::SGCTWindow::Side_By_Side_Stereo);
|
||||
|
||||
if (hasStereo) {
|
||||
@@ -351,14 +351,37 @@ void mainRenderFunc() {
|
||||
}
|
||||
#endif
|
||||
|
||||
OsEng.render(
|
||||
SgctEngine->getModelMatrix(),
|
||||
viewMatrix,
|
||||
projectionMatrix
|
||||
);
|
||||
try {
|
||||
OsEng.render(
|
||||
SgctEngine->getModelMatrix(),
|
||||
viewMatrix,
|
||||
projectionMatrix
|
||||
);
|
||||
}
|
||||
catch (const ghoul::RuntimeError& e) {
|
||||
LERRORC(e.component, e.message);
|
||||
}
|
||||
LTRACE("main::mainRenderFunc(end)");
|
||||
}
|
||||
|
||||
void mainDraw2DFunc() {
|
||||
LTRACE("main::mainDraw2DFunc(begin)");
|
||||
|
||||
try {
|
||||
OsEng.drawOverlays();
|
||||
}
|
||||
catch (const ghoul::RuntimeError& e) {
|
||||
LERRORC(e.component, e.message);
|
||||
}
|
||||
|
||||
// SGCT gets angry if we change this in our function
|
||||
glEnable(GL_BLEND);
|
||||
glDisable(GL_CULL_FACE);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
LTRACE("main::mainDraw2DFunc(end)");
|
||||
}
|
||||
|
||||
void mainPostDrawFunc() {
|
||||
LTRACE("main::mainPostDrawFunc(begin)");
|
||||
|
||||
@@ -525,6 +548,7 @@ int main_main(int argc, char** argv) {
|
||||
SgctEngine->setPreSyncFunction(mainPreSyncFunc);
|
||||
SgctEngine->setPostSyncPreDrawFunction(mainPostSyncPreDrawFunc);
|
||||
SgctEngine->setDrawFunction(mainRenderFunc);
|
||||
SgctEngine->setDraw2DFunction(mainDraw2DFunc);
|
||||
SgctEngine->setPostDrawFunction(mainPostDrawFunc);
|
||||
SgctEngine->setKeyboardCallbackFunction(mainKeyboardCallback);
|
||||
SgctEngine->setMouseButtonCallbackFunction(mainMouseButtonCallback);
|
||||
@@ -560,8 +584,11 @@ int main_main(int argc, char** argv) {
|
||||
"Unknown OpenGL version. Missing statement in version mapping map"
|
||||
);
|
||||
|
||||
auto cleanup = [&](){
|
||||
OsEng.deinitialize();
|
||||
using IsInitialized = ghoul::Boolean;
|
||||
auto cleanup = [&](IsInitialized isInitialized){
|
||||
if (isInitialized) {
|
||||
OsEng.deinitialize();
|
||||
}
|
||||
|
||||
// Clear function bindings to avoid crash after destroying the OpenSpace Engine
|
||||
sgct::MessageHandler::instance()->setLogToCallback(false);
|
||||
@@ -597,19 +624,19 @@ int main_main(int argc, char** argv) {
|
||||
|
||||
if (!initSuccess) {
|
||||
LFATAL("Initializing failed");
|
||||
cleanup();
|
||||
cleanup(IsInitialized::No);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Main loop
|
||||
LDEBUG("Starting rendering loop");
|
||||
LINFO("Starting rendering loop");
|
||||
SgctEngine->render();
|
||||
LDEBUG("Ending rendering loop");
|
||||
LINFO("Ending rendering loop");
|
||||
|
||||
cleanup();
|
||||
cleanup(IsInitialized::Yes);
|
||||
|
||||
// Exit program
|
||||
exit(EXIT_SUCCESS);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
BIN
apps/OpenSpace/openspace.icns
Normal file
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 1.3 MiB |
45
apps/Sync/CMakeLists.txt
Normal file
@@ -0,0 +1,45 @@
|
||||
##########################################################################################
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2018 #
|
||||
# #
|
||||
# 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(${OPENSPACE_CMAKE_EXT_DIR}/application_definition.cmake)
|
||||
|
||||
set_source_files_properties(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.icns
|
||||
PROPERTIES MACOSX_PACKAGE_LOCATION "Resources"
|
||||
)
|
||||
|
||||
set(MACOSX_BUNDLE_ICON_FILE openspace.icns)
|
||||
|
||||
create_new_application(
|
||||
Sync
|
||||
MACOSX_BUNDLE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.rc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.icns
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
Sync
|
||||
libOpenSpace
|
||||
)
|
||||
66
apps/Sync/main.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/engine/configurationmanager.h>
|
||||
#include <openspace/engine/moduleengine.h>
|
||||
#include <openspace/engine/wrapper/windowwrapper.h>
|
||||
#include <openspace/util/factorymanager.h>
|
||||
#include <openspace/util/progressbar.h>
|
||||
#include <openspace/util/resourcesynchronization.h>
|
||||
#include <openspace/util/taskloader.h>
|
||||
|
||||
#include <ghoul/ghoul.h>
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/logging/consolelog.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
using namespace openspace;
|
||||
|
||||
std::vector<std::string> unusedStringlist;
|
||||
bool unusedBool;
|
||||
OpenSpaceEngine::create(argc, argv, nullptr, unusedStringlist, unusedBool);
|
||||
|
||||
TaskLoader taskLoader;
|
||||
std::vector<std::unique_ptr<Task>> tasks = taskLoader.tasksFromFile(
|
||||
absPath("${TASKS}/full_sync.task")
|
||||
);
|
||||
|
||||
for (size_t i = 0; i < tasks.size(); i++) {
|
||||
Task& task = *tasks[i].get();
|
||||
LINFOC(
|
||||
"Sync",
|
||||
"Synchronizing scene " << (i + 1) << " out of " <<
|
||||
tasks.size() << ": " << task.description()
|
||||
);
|
||||
ProgressBar progressBar(100);
|
||||
task.perform([&progressBar](float progress) {
|
||||
progressBar.print(static_cast<int>(progress * 100.f));
|
||||
});
|
||||
}
|
||||
std::cout << "Done synchronizing." << std::endl;
|
||||
|
||||
return 0;
|
||||
};
|
||||
BIN
apps/Sync/openspace.icns
Normal file
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
@@ -2,7 +2,7 @@
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2017 #
|
||||
# Copyright (c) 2014-2018 #
|
||||
# #
|
||||
# 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 #
|
||||
@@ -24,10 +24,19 @@
|
||||
|
||||
include(${OPENSPACE_CMAKE_EXT_DIR}/application_definition.cmake)
|
||||
|
||||
set_source_files_properties(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.icns
|
||||
PROPERTIES MACOSX_PACKAGE_LOCATION "Resources"
|
||||
)
|
||||
|
||||
set(MACOSX_BUNDLE_ICON_FILE openspace.icns)
|
||||
|
||||
create_new_application(
|
||||
TaskRunner
|
||||
MACOSX_BUNDLE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.rc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/openspace.icns
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
|
||||
1
apps/TaskRunner/include.cmake
Normal file
@@ -0,0 +1 @@
|
||||
set(DEFAULT_APPLICATION ON)
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -38,13 +38,16 @@
|
||||
#include <ghoul/cmdparser/commandlineparser.h>
|
||||
#include <ghoul/cmdparser/singlecommand.h>
|
||||
|
||||
#include <openspace/engine/wrapper/windowwrapper.h>
|
||||
#include <openspace/scripting/scriptengine.h>
|
||||
#include <openspace/rendering/renderable.h>
|
||||
#include <openspace/rendering/dashboarditem.h>
|
||||
#include <openspace/util/progressbar.h>
|
||||
#include <openspace/engine/openspaceengine.h>
|
||||
#include <openspace/engine/configurationmanager.h>
|
||||
#include <openspace/util/taskloader.h>
|
||||
#include <openspace/util/factorymanager.h>
|
||||
#include <openspace/util/resourcesynchronization.h>
|
||||
#include <openspace/util/task.h>
|
||||
#include <openspace/scene/translation.h>
|
||||
#include <openspace/scene/rotation.h>
|
||||
@@ -58,10 +61,14 @@ namespace {
|
||||
|
||||
void initTextureReaders() {
|
||||
#ifdef GHOUL_USE_DEVIL
|
||||
ghoul::io::TextureReader::ref().addReader(std::make_shared<ghoul::io::TextureReaderDevIL>());
|
||||
ghoul::io::TextureReader::ref().addReader(
|
||||
std::make_shared<ghoul::io::TextureReaderDevIL>()
|
||||
);
|
||||
#endif // GHOUL_USE_DEVIL
|
||||
#ifdef GHOUL_USE_FREEIMAGE
|
||||
ghoul::io::TextureReader::ref().addReader(std::make_shared<ghoul::io::TextureReaderFreeImage>());
|
||||
ghoul::io::TextureReader::ref().addReader(
|
||||
std::make_shared<ghoul::io::TextureReaderFreeImage>()
|
||||
);
|
||||
#endif // GHOUL_USE_FREEIMAGE
|
||||
}
|
||||
|
||||
@@ -81,10 +88,13 @@ void performTasks(const std::string& path) {
|
||||
|
||||
for (size_t i = 0; i < tasks.size(); i++) {
|
||||
Task& task = *tasks[i].get();
|
||||
LINFO("Performing task " << (i + 1) << " out of " << tasks.size() << ": " << task.description());
|
||||
LINFO(
|
||||
"Performing task " << (i + 1) << " out of " <<
|
||||
tasks.size() << ": " << task.description()
|
||||
);
|
||||
ProgressBar progressBar(100);
|
||||
auto onProgress = [&progressBar](float progress) {
|
||||
progressBar.print(progress * 100);
|
||||
progressBar.print(static_cast<int>(progress * 100.f));
|
||||
};
|
||||
task.perform(onProgress);
|
||||
}
|
||||
@@ -94,61 +104,9 @@ void performTasks(const std::string& path) {
|
||||
int main(int argc, char** argv) {
|
||||
using namespace openspace;
|
||||
|
||||
ghoul::initialize();
|
||||
|
||||
ghoul::logging::LogManager::initialize(
|
||||
ghoul::logging::LogLevel::Debug,
|
||||
ghoul::logging::LogManager::ImmediateFlush::Yes
|
||||
);
|
||||
LogMgr.addLog(std::make_unique< ghoul::logging::ConsoleLog>());
|
||||
|
||||
LDEBUG("Initialize FileSystem");
|
||||
|
||||
ghoul::filesystem::Directory launchDirectory = FileSys.currentDirectory();
|
||||
|
||||
#ifdef __APPLE__
|
||||
ghoul::filesystem::File app(argv[0]);
|
||||
std::string dirName = app.directoryName();
|
||||
LINFO("Setting starting directory to '" << dirName << "'");
|
||||
FileSys.setCurrentDirectory(dirName);
|
||||
#endif
|
||||
|
||||
initTextureReaders();
|
||||
|
||||
FactoryManager::initialize();
|
||||
FactoryManager::ref().addFactory(
|
||||
std::make_unique<ghoul::TemplateFactory<Renderable>>(),
|
||||
"Renderable"
|
||||
);
|
||||
FactoryManager::ref().addFactory(
|
||||
std::make_unique<ghoul::TemplateFactory<Task>>(),
|
||||
"Task"
|
||||
);
|
||||
FactoryManager::ref().addFactory(
|
||||
std::make_unique<ghoul::TemplateFactory<Translation>>(),
|
||||
"Translation"
|
||||
);
|
||||
|
||||
FactoryManager::ref().addFactory(
|
||||
std::make_unique<ghoul::TemplateFactory<Rotation>>(),
|
||||
"Rotation"
|
||||
);
|
||||
|
||||
FactoryManager::ref().addFactory(
|
||||
std::make_unique<ghoul::TemplateFactory<Scale>>(),
|
||||
"Scale"
|
||||
);
|
||||
|
||||
openspace::ConfigurationManager configuration;
|
||||
std::string configurationFile = configuration.findConfiguration(ConfigurationFile);
|
||||
configuration.loadFromFile(configurationFile);
|
||||
|
||||
ModuleEngine moduleEngine;
|
||||
moduleEngine.initialize();
|
||||
LINFO("Initialization done.");
|
||||
|
||||
// Parse commandline arguments
|
||||
std::vector<std::string> args(argv, argv + argc);
|
||||
std::vector<std::string> remainingArguments;
|
||||
bool unusedBool;
|
||||
OpenSpaceEngine::create(argc, argv, nullptr, remainingArguments, unusedBool);
|
||||
|
||||
ghoul::cmdparser::CommandlineParser commandlineParser(
|
||||
"OpenSpace TaskRunner",
|
||||
@@ -158,17 +116,17 @@ int main(int argc, char** argv) {
|
||||
std::string tasksPath = "";
|
||||
commandlineParser.addCommand(
|
||||
std::make_unique<ghoul::cmdparser::SingleCommand<std::string>>(
|
||||
&tasksPath,
|
||||
tasksPath,
|
||||
"--task",
|
||||
"-t",
|
||||
"Provides the path to a task file to execute"
|
||||
)
|
||||
);
|
||||
|
||||
commandlineParser.setCommandLine(args);
|
||||
commandlineParser.setCommandLine(remainingArguments);
|
||||
commandlineParser.execute();
|
||||
|
||||
FileSys.setCurrentDirectory(launchDirectory);
|
||||
//FileSys.setCurrentDirectory(launchDirectory);
|
||||
|
||||
if (tasksPath != "") {
|
||||
performTasks(tasksPath);
|
||||
@@ -177,16 +135,13 @@ int main(int argc, char** argv) {
|
||||
|
||||
// If no task file was specified in as argument, run in CLI mode.
|
||||
|
||||
std::string tasksRoot;
|
||||
if (configuration.getValue(ConfigurationManager::KeyConfigTasksRoot, tasksRoot)) {
|
||||
LINFO("Task root: " << tasksRoot);
|
||||
FileSys.setCurrentDirectory(ghoul::filesystem::Directory(absPath(tasksRoot)));
|
||||
}
|
||||
LINFO("Task root: " << absPath("${TASKS}"));
|
||||
FileSys.setCurrentDirectory(ghoul::filesystem::Directory(absPath("${TASKS}")));
|
||||
|
||||
std::cout << "TASK >";
|
||||
std::cout << "TASK > ";
|
||||
while (std::cin >> tasksPath) {
|
||||
performTasks(tasksPath);
|
||||
std::cout << "TASK >";
|
||||
std::cout << "TASK > ";
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
BIN
apps/TaskRunner/openspace.icns
Normal file
BIN
apps/TaskRunner/openspace.ico
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
apps/TaskRunner/openspace.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
1
apps/TaskRunner/openspace.rc
Normal file
@@ -0,0 +1 @@
|
||||
IDI_ICON1 ICON DISCARDABLE "openspace.ico"
|
||||
@@ -1,26 +1,26 @@
|
||||
#########################################################################################
|
||||
# #
|
||||
# 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. #
|
||||
#########################################################################################
|
||||
##########################################################################################
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2018 #
|
||||
# #
|
||||
# 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(${OPENSPACE_CMAKE_EXT_DIR}/application_definition.cmake)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -253,7 +253,8 @@ void ControlWidget::onDateChange() {
|
||||
QString script =
|
||||
"openspace.time.setTime('" + date + "');\
|
||||
openspace.setPropertyValue('Interaction.origin', '" + focus + "');\
|
||||
openspace.setPropertyValue('Interaction.coordinateSystem', '" + coordinateSystem + "')";
|
||||
openspace.setPropertyValue('Interaction.coordinateSystem', '" +
|
||||
coordinateSystem + "')";
|
||||
emit scriptActivity(script);
|
||||
}
|
||||
_setTime->blockSignals(true);
|
||||
@@ -265,18 +266,28 @@ void ControlWidget::onFocusChange() {
|
||||
int index = _focusNode->currentIndex();
|
||||
QString name = FocusNodes[index].name;
|
||||
QString coordinateSystem = FocusNodes[index].coordinateSystem;
|
||||
QString script = "openspace.setPropertyValue('Interaction.origin', '" + name + "');openspace.setPropertyValue('Interaction.coordinateSystem', '" + coordinateSystem + "');";
|
||||
QString script = "openspace.setPropertyValue('Interaction.origin', '" + name +
|
||||
"');openspace.setPropertyValue('Interaction.coordinateSystem', '" +
|
||||
coordinateSystem + "');";
|
||||
emit scriptActivity(script);
|
||||
}
|
||||
|
||||
void ControlWidget::onFocusToTargetButton() {
|
||||
std::string target = reinterpret_cast<MainWindow*>(parent())->nextTarget();
|
||||
if (!target.empty()) {
|
||||
auto it = std::find_if(std::begin(FocusNodes), std::end(FocusNodes), [target](const FocusNode& n) { return n.guiName.toLower() == QString::fromStdString(target).toLower(); });
|
||||
auto it = std::find_if(
|
||||
std::begin(FocusNodes),
|
||||
std::end(FocusNodes),
|
||||
[target](const FocusNode& n) {
|
||||
return n.guiName.toLower() == QString::fromStdString(target).toLower();
|
||||
});
|
||||
if (it != std::end(FocusNodes)) {
|
||||
QString name = it->name;
|
||||
QString coordinateSystem = it->coordinateSystem;
|
||||
QString script = "openspace.setPropertyValue('Interaction.origin', '" + name + "');openspace.setPropertyValue('Interaction.coordinateSystem', '" + coordinateSystem + "');";
|
||||
QString script =
|
||||
"openspace.setPropertyValue('Interaction.origin', '" + name +
|
||||
"');openspace.setPropertyValue('Interaction.coordinateSystem', '" +
|
||||
coordinateSystem + "');";
|
||||
emit scriptActivity(script);
|
||||
}
|
||||
}
|
||||
@@ -292,7 +303,9 @@ void ControlWidget::onFocusToNewHorizonsButton() {
|
||||
else
|
||||
coordinateSystem = "Pluto";
|
||||
|
||||
QString script = "openspace.setPropertyValue('Interaction.origin', 'NewHorizons');openspace.setPropertyValue('Interaction.coordinateSystem', '" + coordinateSystem + "');";
|
||||
QString script = "openspace.setPropertyValue('Interaction.origin', 'NewHorizons');\
|
||||
openspace.setPropertyValue('Interaction.coordinateSystem', '" + coordinateSystem +
|
||||
"');";
|
||||
emit scriptActivity(script);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -58,7 +58,9 @@ QLineEdit {
|
||||
|
||||
QSlider::groove:horizontal {
|
||||
border: 1px solid #999999;
|
||||
height: 8px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
|
||||
/* the groove expands to the size of the slider by default. by giving it a height,
|
||||
it has a fixed size */
|
||||
height: 8px;
|
||||
background: qlineargradient(
|
||||
x1:0, y1:0, x2:1, y2:0,
|
||||
stop:0 #c4c4c4,
|
||||
@@ -72,7 +74,9 @@ QSlider::handle:horizontal {
|
||||
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #b4b4b4, stop:1 #8f8f8f);
|
||||
border: 1px solid #5c5c5c;
|
||||
width: 18px;
|
||||
margin: -2px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
|
||||
/* handle is placed by default on the contents rect of the groove.
|
||||
Expand outside the groove */
|
||||
margin: -2px 0;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
@@ -112,7 +116,7 @@ QCombobox {
|
||||
}
|
||||
|
||||
QComboBox:editable {
|
||||
background: lightgrey;
|
||||
background: lightgrey;
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -257,17 +257,23 @@ void MainWindow::handleStatusMessage(QByteArray data) {
|
||||
QString::fromStdString(std::string(timeString.begin(), timeString.end())),
|
||||
QString::number(delta.value)
|
||||
);
|
||||
_timelineWidget->setCurrentTime(std::string(timeString.begin(), timeString.end()), et.value);
|
||||
_timelineWidget->setCurrentTime(
|
||||
std::string(timeString.begin(), timeString.end()),
|
||||
et.value
|
||||
);
|
||||
}
|
||||
|
||||
std::vector<std::string> instrumentsFromId(uint16_t instrumentId, std::map<uint16_t, std::string> instrumentMap) {
|
||||
std::vector<std::string> instrumentsFromId(uint16_t instrumentId,
|
||||
std::map<uint16_t, std::string> instrumentMap)
|
||||
{
|
||||
std::vector<std::string> results;
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
uint16_t testValue = 1 << i;
|
||||
if ((testValue & instrumentId) != 0) {
|
||||
std::string t = instrumentMap.at(testValue);
|
||||
if (t.empty())
|
||||
if (t.empty()) {
|
||||
qDebug() << "Empty instrument";
|
||||
}
|
||||
results.push_back(t);
|
||||
}
|
||||
}
|
||||
@@ -318,15 +324,21 @@ QByteArray MainWindow::handlePlaybook(QByteArray data) {
|
||||
qDebug() << "Instruments were empty";
|
||||
images.push_back(image);
|
||||
}
|
||||
_timelineWidget->setData(std::move(images), std::move(targetMap), std::move(instrumentMap));
|
||||
_timelineWidget->setData(
|
||||
std::move(images),
|
||||
std::move(targetMap),
|
||||
std::move(instrumentMap)
|
||||
);
|
||||
|
||||
auto dataSize = data.size();
|
||||
auto readSize = currentReadLocation;
|
||||
auto extraBytes = dataSize - readSize;
|
||||
if (extraBytes > 0)
|
||||
if (extraBytes > 0) {
|
||||
return data.mid(currentReadLocation);
|
||||
else
|
||||
}
|
||||
else {
|
||||
return QByteArray();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::sendScript(QString script) {
|
||||
@@ -361,7 +373,10 @@ std::string MainWindow::nextTarget() const {
|
||||
}
|
||||
|
||||
void MainWindow::fullyConnected() {
|
||||
_informationWidget->logInformation("Connected to " + _socket->peerName() + " on port " + QString::number(_socket->peerPort()) + ".");
|
||||
_informationWidget->logInformation(
|
||||
"Connected to " + _socket->peerName() + " on port " +
|
||||
QString::number(_socket->peerPort()) + "."
|
||||
);
|
||||
|
||||
_configurationWidget->socketConnected();
|
||||
_timeControlWidget->socketConnected();
|
||||
@@ -379,6 +394,5 @@ void MainWindow::printMapping(QByteArray data) {
|
||||
std::string mapping = readFromBuffer<std::string>(buffer, currentReadPosition);
|
||||
|
||||
qDebug() << identifier << ": " << QString::fromStdString(mapping);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -89,7 +89,12 @@ void TimelineWidget::paintEvent(QPaintEvent* event) {
|
||||
|
||||
QRectF fullRect = contentsRect();
|
||||
QRectF contentRect(0, 0, fullRect.width() - 1, fullRect.height() - LegendHeight);
|
||||
QRectF legendRect(0, fullRect.bottom() - LegendHeight, fullRect.right(), fullRect.bottom());
|
||||
QRectF legendRect(
|
||||
0,
|
||||
fullRect.bottom() - LegendHeight,
|
||||
fullRect.right(),
|
||||
fullRect.bottom()
|
||||
);
|
||||
|
||||
painter.save();
|
||||
drawContent(painter, contentRect);
|
||||
@@ -101,10 +106,17 @@ void TimelineWidget::paintEvent(QPaintEvent* event) {
|
||||
painter.restore();
|
||||
}
|
||||
|
||||
void TimelineWidget::setData(std::vector<Image> images, std::map<uint8_t, std::string> targetMap, std::map<uint16_t, std::string> instrumentMap) {
|
||||
void TimelineWidget::setData(std::vector<Image> images,
|
||||
std::map<uint8_t, std::string> targetMap,
|
||||
std::map<uint16_t, std::string> instrumentMap)
|
||||
{
|
||||
_images.insert(_images.end(), images.begin(), images.end());
|
||||
|
||||
std::sort(_images.begin(), _images.end(), [](const Image& a, const Image& b) { return a.beginning < b.beginning; });
|
||||
std::sort(
|
||||
_images.begin(),
|
||||
_images.end(),
|
||||
[](const Image& a, const Image& b) { return a.beginning < b.beginning; }
|
||||
);
|
||||
|
||||
_targetMap.insert(targetMap.begin(), targetMap.end());
|
||||
_instrumentMap.insert(instrumentMap.begin(), instrumentMap.end());
|
||||
@@ -148,8 +160,15 @@ void TimelineWidget::drawContent(QPainter& painter, QRectF rect) {
|
||||
// Draw current time
|
||||
painter.setBrush(QBrush(Qt::black));
|
||||
painter.setPen(QPen(Qt::black, 2));
|
||||
painter.drawLine(QPointF(0, timelineRect.height() / 2), QPointF(timelineRect.width(), timelineRect.height() / 2));
|
||||
painter.drawText(timelineRect.width(), timelineRect.height() / 2 + TextOffset, QString::fromStdString(_currentTime.time));
|
||||
painter.drawLine(
|
||||
QPointF(0, timelineRect.height() / 2),
|
||||
QPointF(timelineRect.width(), timelineRect.height() / 2)
|
||||
);
|
||||
painter.drawText(
|
||||
timelineRect.width(),
|
||||
timelineRect.height() / 2 + TextOffset,
|
||||
QString::fromStdString(_currentTime.time)
|
||||
);
|
||||
}
|
||||
|
||||
void TimelineWidget::drawLegend(QPainter& painter, QRectF rect) {
|
||||
@@ -171,14 +190,21 @@ void TimelineWidget::drawLegend(QPainter& painter, QRectF rect) {
|
||||
;
|
||||
painter.setBrush(QBrush(InstrumentColors[QString::fromStdString(instrument)]));
|
||||
painter.setPen(QPen(InstrumentColors[QString::fromStdString(instrument)]));
|
||||
painter.drawRect(currentHorizontalPosition, currentVerticalPosition, BoxSize, BoxSize);
|
||||
painter.drawRect(
|
||||
currentHorizontalPosition,
|
||||
currentVerticalPosition,
|
||||
BoxSize,
|
||||
BoxSize
|
||||
);
|
||||
currentHorizontalPosition += BoxSize + Padding;
|
||||
|
||||
painter.setPen(QPen(QColor(200, 200, 200)));
|
||||
//painter.setPen(QPen(Qt::black));
|
||||
painter.drawText(currentHorizontalPosition, currentVerticalPosition + BoxSize / 2 + TextOffset, InstrumentConversion[QString::fromStdString(instrument)]);
|
||||
// int textWidth = painter.boundingRect(QRect(), QString::fromStdString(instrument)).width();
|
||||
//currentHorizontalPosition += std::max(textWidth, 25) + Padding;
|
||||
painter.drawText(
|
||||
currentHorizontalPosition,
|
||||
currentVerticalPosition + BoxSize / 2 + TextOffset,
|
||||
InstrumentConversion[QString::fromStdString(instrument)]
|
||||
);
|
||||
currentHorizontalPosition += 125;
|
||||
}
|
||||
}
|
||||
@@ -198,11 +224,12 @@ void TimelineWidget::drawImages(
|
||||
{
|
||||
std::set<std::string> instrumentSet;
|
||||
for (Image* i : images) {
|
||||
for (std::string instrument : i->instruments)
|
||||
for (std::string instrument : i->instruments) {
|
||||
instrumentSet.insert(instrument);
|
||||
}
|
||||
}
|
||||
std::map<std::string, int> instruments;
|
||||
for (std::set<std::string>::const_iterator it = instrumentSet.begin(); it != instrumentSet.end(); ++it)
|
||||
for (auto it = instrumentSet.begin(); it != instrumentSet.end(); ++it)
|
||||
instruments[*it] = std::distance(instrumentSet.begin(), it);
|
||||
|
||||
for (Image* i : images) {
|
||||
@@ -215,8 +242,9 @@ void TimelineWidget::drawImages(
|
||||
int height = (timelineRect.top() + timelineRect.height() * tEnd) - loc;
|
||||
height = std::max(height, 5);
|
||||
|
||||
if (loc + height > timelineRect.height())
|
||||
if (loc + height > timelineRect.height()) {
|
||||
height = timelineRect.height() - loc;
|
||||
}
|
||||
|
||||
std::string target = i->target;
|
||||
auto it = std::find(_targets.begin(), _targets.end(), target);
|
||||
@@ -224,10 +252,13 @@ void TimelineWidget::drawImages(
|
||||
|
||||
for (std::string instrument : i->instruments) {
|
||||
auto it = std::find(_instruments.begin(), _instruments.end(), instrument);
|
||||
if (it == _instruments.end())
|
||||
if (it == _instruments.end()) {
|
||||
qDebug() << "Instrument not found";
|
||||
}
|
||||
|
||||
painter.setBrush(QBrush(InstrumentColors[QString::fromStdString(instrument)]));
|
||||
painter.setBrush(
|
||||
QBrush(InstrumentColors[QString::fromStdString(instrument)])
|
||||
);
|
||||
|
||||
double width = timelineRect.width() / instruments.size();
|
||||
double pos = instruments[instrument] * width;
|
||||
@@ -238,7 +269,8 @@ void TimelineWidget::drawImages(
|
||||
if (height >= 5) {
|
||||
painter.setBrush(QBrush(Qt::black));
|
||||
painter.setPen(QPen(Qt::black));
|
||||
QString line = QString::fromStdString(i->beginningString) + QString(" (") + QString::fromStdString(i->target) + QString(")");
|
||||
QString line = QString::fromStdString(i->beginningString) + QString(" (") +
|
||||
QString::fromStdString(i->target) + QString(")");
|
||||
|
||||
painter.drawText(timelineRect.width(), loc + height / 2 + TextOffset, line);
|
||||
}
|
||||
@@ -257,9 +289,16 @@ void TimelineWidget::socketDisconnected() {
|
||||
}
|
||||
|
||||
std::string TimelineWidget::nextTarget() const {
|
||||
auto it = std::lower_bound(_images.begin(), _images.end(), _currentTime.et, [](const Image& i, double et) { return i.beginning < et; });
|
||||
if (it != _images.end())
|
||||
auto it = std::lower_bound(
|
||||
_images.begin(),
|
||||
_images.end(),
|
||||
_currentTime.et,
|
||||
[](const Image& i, double et) { return i.beginning < et; }
|
||||
);
|
||||
if (it != _images.end()) {
|
||||
return it->target;
|
||||
else
|
||||
}
|
||||
else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2017 *
|
||||
* Copyright (c) 2014-2018 *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -40,7 +40,8 @@ Q_OBJECT
|
||||
public:
|
||||
TimelineWidget(QWidget* parent);
|
||||
|
||||
void setData(std::vector<Image> images, std::map<uint8_t, std::string> targetMap, std::map<uint16_t, std::string> instrumentMap);
|
||||
void setData(std::vector<Image> images, std::map<uint8_t, std::string> targetMap,
|
||||
std::map<uint16_t, std::string> instrumentMap);
|
||||
void setCurrentTime(std::string currentTime, double et);
|
||||
void socketConnected();
|
||||
void socketDisconnected();
|
||||
@@ -48,10 +49,11 @@ public:
|
||||
std::string nextTarget() const;
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent* event);
|
||||
void paintEvent(QPaintEvent* event);
|
||||
void drawContent(QPainter& painter, QRectF rect);
|
||||
void drawLegend(QPainter& painter, QRectF rect);
|
||||
void drawImages(QPainter& painter, QRectF timelineRect, std::vector<Image*> images, double minimumTime, double maximumTime);
|
||||
void drawImages(QPainter& painter, QRectF timelineRect, std::vector<Image*> images,
|
||||
double minimumTime, double maximumTime);
|
||||
|
||||
private:
|
||||
std::vector<Image> _images;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</PlanarProjection>
|
||||
</Viewport>
|
||||
</Window>
|
||||
<Window fullScreen="false" numberOfSamples="8" border="false">
|
||||
<Window fullScreen="false" numberOfSamples="8" border="true">
|
||||
<Pos x="340" y="100" />
|
||||
<Size x="1280" y="720" />
|
||||
<Viewport>
|
||||
|
||||
@@ -1,31 +1,23 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Cluster masterAddress="localhost">
|
||||
<!-- <Settings>
|
||||
<Display swapInterval="0" />
|
||||
</Settings>
|
||||
-->
|
||||
<!-- <Scene>
|
||||
<Orientation yaw="0.0" pitch="-27.0" roll="0.0" />
|
||||
<Offset x="0.0" y="0.0" z="0.0" />
|
||||
<Scale value="1.0" />
|
||||
</Scene> -->
|
||||
</Scene>
|
||||
-->
|
||||
<Node address="localhost" port="20401">
|
||||
<Window fullScreen="false" numberOfSamples="8" name="OpenSpace">
|
||||
<Window fullScreen="false" numberOfSamples="4" name="OpenSpace">
|
||||
<Stereo type="none" />
|
||||
<!-- 16:9 aspect ratio -->
|
||||
<Size x="1024" y="1024" />
|
||||
<!-- Frame buffer resolution
|
||||
<Res x="4096" y="4096" /> -->
|
||||
<!--
|
||||
quality options (cubemap size):
|
||||
- low (256)
|
||||
- medium (512)
|
||||
- high/1k (1024)
|
||||
- 2k (2048)
|
||||
- 4k (4096)
|
||||
- 8k (8192)
|
||||
tilt specifies the dome tilt angle in degrees from the horizontal
|
||||
-->
|
||||
<Viewport name="Spout">
|
||||
<Pos x="0.0" y="0.0" />
|
||||
<Size x="1.0" y="1.0" />
|
||||
<SpoutOutputProjection quality="2k">
|
||||
<SpoutOutputProjection quality="1.5k">
|
||||
<Background r="0.1" g="0.1" b="0.1" a="1.0" />
|
||||
</SpoutOutputProjection>
|
||||
</Viewport>
|
||||
|
||||
36
data/assets/customization/globebrowsing.asset
Normal file
@@ -0,0 +1,36 @@
|
||||
-- Add require statements for assets exporting the neccessary globes
|
||||
-- example:
|
||||
-- asset.require('../scene/solarsystem/planets/mars/mars')
|
||||
|
||||
-- Add folders to this list that contain .info files describing HiRISE patches
|
||||
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'
|
||||
'',
|
||||
''
|
||||
}
|
||||
}
|
||||
|
||||
asset.onInitialize(function ()
|
||||
-- Add local patches described at the top of this file
|
||||
for obj, list in pairs(vrt_folders) do
|
||||
for _, dir in pairs(list) do
|
||||
openspace.globebrowsing.addBlendingLayersFromDirectory(dir, obj)
|
||||
end
|
||||
end
|
||||
end)
|
||||
51
data/assets/dawn.scene
Normal file
@@ -0,0 +1,51 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sceneHelper = asset.require('util/scene_helper')
|
||||
|
||||
-- Specifying which other assets should be loaded in this scene
|
||||
asset.require('spice/base')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/sun')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/planets')
|
||||
asset.request('scene/digitaluniverse/stars')
|
||||
asset.request('scene/digitaluniverse/milkyway')
|
||||
asset.require('scene/solarsystem/missions/dawn/ceres')
|
||||
asset.require('scene/solarsystem/missions/dawn/dawn')
|
||||
asset.require('scene/solarsystem/missions/dawn/vesta')
|
||||
|
||||
-- Load default key bindings applicable to most scenes
|
||||
asset.require('util/default_keybindings')
|
||||
|
||||
local DawnAsset = asset.require('scene/solarsystem/missions/dawn/dawn')
|
||||
|
||||
asset.onInitialize(function ()
|
||||
openspace.time.setTime("2011 AUG 06 00:00:00")
|
||||
|
||||
openspace.setDefaultDashboard()
|
||||
openspace.setDefaultGuiSorting()
|
||||
|
||||
openspace.markInterestingNodes({
|
||||
"Dawn", "Ceres", "Vesta"
|
||||
})
|
||||
|
||||
openspace.addVirtualProperty(
|
||||
"BoolProperty",
|
||||
"Show Trails",
|
||||
"*Trail.renderable.Enabled",
|
||||
"Disable or enable all trails of the scene at the same time",
|
||||
true,
|
||||
nil,
|
||||
nil
|
||||
)
|
||||
|
||||
openspace.navigation.setCameraState({
|
||||
Focus = DawnAsset.Dawn.Name,
|
||||
Position = { 526781518487.171326, 257168309890.072144, -1381125204152.817383 },
|
||||
Rotation = { -0.106166, 0.981574, -0.084545, 0.134513 },
|
||||
})
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function ()
|
||||
openspace.removeVirtualProperty("*Trail.renderable.Enabled")
|
||||
openspace.removeInterestingNodes({
|
||||
"Dawn", "Ceres", "Vesta"
|
||||
})
|
||||
end)
|
||||
102
data/assets/default.scene
Normal file
@@ -0,0 +1,102 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sceneHelper = asset.require('util/scene_helper')
|
||||
|
||||
-- Specifying which other assets should be loaded in this scene
|
||||
asset.require('spice/base')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/sun')
|
||||
asset.require('scene/solarsystem/planets')
|
||||
asset.require('scene/solarsystem/planets/mars/moons/phobos')
|
||||
asset.require('scene/solarsystem/planets/mars/moons/deimos')
|
||||
assetHelper.requestAll(asset, 'scene/digitaluniverse')
|
||||
|
||||
-- Load default key bindings applicable to most scenes
|
||||
asset.require('util/default_keybindings')
|
||||
|
||||
asset.request('customization/globebrowsing')
|
||||
|
||||
-- Keybindings that are specific for this scene
|
||||
local Keybindings = {
|
||||
{
|
||||
Key = "s",
|
||||
Command = sceneHelper.property.invert('Earth.RenderableGlobe.Layers.NightLayers.Earth at Night 2012.Enabled') ..
|
||||
sceneHelper.property.invert('Earth.RenderableGlobe.PerformShading') ..
|
||||
sceneHelper.property.invert('Earth.RenderableGlobe.Atmosphere') ..
|
||||
sceneHelper.property.invert('Earth.RenderableGlobe.Layers.WaterMasks.MODIS_Water_Mask.Enabled'),
|
||||
Documentation = "Toggle night texture, shading, atmosphere, and water for Earth.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "b",
|
||||
Command = sceneHelper.property.invert('MilkyWay.renderable.Enabled') ..
|
||||
sceneHelper.property.invert('Stars.renderable.Enabled'),
|
||||
Documentation = "Toggle background (Stars and Milkyway).",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "g",
|
||||
Command = sceneHelper.property.invert('MilkyWay.renderable.Enabled') ..
|
||||
sceneHelper.property.invert('Stars.renderable.Enabled') ..
|
||||
sceneHelper.property.invert('Earth.RenderableGlobe.Layers.NightLayers.Earth at Night 2012.Enabled') ..
|
||||
sceneHelper.property.invert('Earth.RenderableGlobe.PerformShading') ..
|
||||
sceneHelper.property.invert('Mars.RenderableGlobe.PerformShading') ..
|
||||
sceneHelper.property.invert('Earth.RenderableGlobe.Atmosphere') ..
|
||||
sceneHelper.property.invert('Earth.RenderableGlobe.Layers.WaterMasks.MODIS_Water_Mask.Enabled') ..
|
||||
sceneHelper.property.invert('Moon.RenderableGlobe.Enabled') ..
|
||||
sceneHelper.property.invert('Sun.renderable.Enabled'),
|
||||
Documentation = "Toogles background and shading mode on the Earth and Mars alongside visibility of the Moon and the Sun",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "h",
|
||||
Command = "openspace.setPropertyValue('*Trail.renderable.Enabled', false)",
|
||||
Documentation = "Disables visibility of the trails",
|
||||
Local = false
|
||||
},
|
||||
}
|
||||
|
||||
local earthAsset = asset.require('scene/solarsystem/planets/earth/earth')
|
||||
|
||||
asset.onInitialize(function ()
|
||||
openspace.time.setTime(openspace.time.currentWallTime())
|
||||
sceneHelper.bindKeys(Keybindings)
|
||||
|
||||
openspace.setDefaultDashboard()
|
||||
openspace.setDefaultGuiSorting()
|
||||
|
||||
openspace.globebrowsing.loadWMSServersFromFile(
|
||||
openspace.absPath("${DATA}/globebrowsing_servers.lua")
|
||||
)
|
||||
|
||||
openspace.markInterestingNodes({
|
||||
"Earth", "Mars", "Moon"
|
||||
})
|
||||
|
||||
|
||||
openspace.addVirtualProperty(
|
||||
"BoolProperty",
|
||||
"Show Trails",
|
||||
"*Trail.renderable.Enabled",
|
||||
"Disable or enable all trails of the scene at the same time",
|
||||
true,
|
||||
nil,
|
||||
nil
|
||||
)
|
||||
|
||||
openspace.navigation.setCameraState({
|
||||
Focus = earthAsset.Earth.Name,
|
||||
Position = { 0, 0, 0 },
|
||||
Rotation = { 0.758797, 0.221490, -0.605693, -0.091135 },
|
||||
})
|
||||
|
||||
openspace.globebrowsing.goToGeo(58.5877, 16.1924, 20000000)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function ()
|
||||
sceneHelper.unbindKeys(Keybindings)
|
||||
|
||||
openspace.removeVirtualProperty("*Trail.renderable.Enabled")
|
||||
|
||||
openspace.removeInterestingNodes({
|
||||
"Earth", "Mars", "Moon"
|
||||
})
|
||||
end)
|
||||
7
data/assets/default_full.scene
Normal file
@@ -0,0 +1,7 @@
|
||||
asset.require('./default')
|
||||
asset.require('scene/solarsystem/planets/jupiter/minor_moons')
|
||||
asset.require('scene/solarsystem/planets/saturn/minor_moons')
|
||||
asset.require('scene/solarsystem/planets/uranus/minor_moons')
|
||||
asset.require('scene/solarsystem/planets/neptune/inner_moons')
|
||||
asset.require('scene/solarsystem/planets/neptune/irregular_prograde_moons')
|
||||
asset.require('scene/solarsystem/planets/neptune/irregular_retrograde_moons')
|
||||
55
data/assets/juno.scene
Normal file
@@ -0,0 +1,55 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sceneHelper = asset.require('util/scene_helper')
|
||||
|
||||
-- Specifying which other assets should be loaded in this scene
|
||||
asset.require('spice/base')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/sun')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/planets')
|
||||
asset.request('scene/digitaluniverse/stars')
|
||||
asset.request('scene/digitaluniverse/milkyway')
|
||||
assetHelper.requireAll(asset, 'scene/solarsystem/missions/juno')
|
||||
|
||||
-- Load default key bindings applicable to most scenes
|
||||
asset.require('util/default_keybindings')
|
||||
|
||||
local junoAsset = asset.require('scene/solarsystem/missions/juno/juno')
|
||||
|
||||
asset.onInitialize(function ()
|
||||
openspace.time.setTime("2016-07-01T10:05:00.00")
|
||||
|
||||
openspace.setDefaultDashboard()
|
||||
openspace.setDefaultGuiSorting()
|
||||
|
||||
sceneHelper.setDeltaTimeKeys({
|
||||
1, 5, 10, 20, 40, 90, 360, 720, 2880, 14400,
|
||||
28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600
|
||||
})
|
||||
|
||||
openspace.markInterestingNodes({
|
||||
"Jupiter", "Juno"
|
||||
})
|
||||
|
||||
openspace.addVirtualProperty(
|
||||
"BoolProperty",
|
||||
"Show Trails",
|
||||
"*Trail.renderable.Enabled",
|
||||
"Disable or enable all trails of the scene at the same time",
|
||||
true,
|
||||
nil,
|
||||
nil
|
||||
)
|
||||
|
||||
openspace.navigation.setCameraState({
|
||||
Focus = junoAsset.Juno.Name,
|
||||
Position = { 1837386367.601345, -389860693812.834839, 714830404470.398926 },
|
||||
Rotation = { -0.336540, 0.711402, -0.099212, 0.608937 },
|
||||
})
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function ()
|
||||
openspace.removeVirtualProperty("*Trail.renderable.Enabled")
|
||||
|
||||
openspace.removeInterestingNodes({
|
||||
"Jupiter", "Juno"
|
||||
})
|
||||
end)
|
||||
189
data/assets/newhorizons.scene
Normal file
@@ -0,0 +1,189 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sceneHelper = asset.require('util/scene_helper')
|
||||
|
||||
-- Specifying which other assets should be loaded in this scene
|
||||
asset.require('spice/base')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/sun')
|
||||
asset.require('scene/solarsystem/planets')
|
||||
asset.request('scene/digitaluniverse/stars')
|
||||
asset.request('scene/digitaluniverse/milkyway')
|
||||
asset.require('scene/solarsystem/missions/newhorizons/newhorizons')
|
||||
|
||||
-- Load default key bindings applicable to most scenes
|
||||
asset.require('util/default_keybindings')
|
||||
|
||||
-- Custom Keybindings
|
||||
local Keybindings = {
|
||||
{
|
||||
Key = "a",
|
||||
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'NewHorizons')",
|
||||
Documentation = "Sets the focus of the camera on 'NewHorizons'.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "s",
|
||||
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'Pluto')",
|
||||
Documentation = "Sets the focus of the camera on 'Pluto'",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "d",
|
||||
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'Charon')",
|
||||
Documentation = "Sets the focus of the camera on 'Charon'.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F8",
|
||||
Command = "openspace.setPropertyValue('Pluto.renderable.ProjectionComponent.ClearAllProjections', true);" ..
|
||||
"openspace.setPropertyValue('Charon.renderable.ProjectionComponent.ClearAllProjections', true);",
|
||||
Documentation = "Removes all image projections from Pluto and Charon.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F9",
|
||||
Command = "openspace.time.setTime('2015-07-14T09:00:00.00');" ..
|
||||
"openspace.setPropertyValue('Pluto.renderable.ClearAllProjections', true);" ..
|
||||
"openspace.setPropertyValue('Charon.renderable.ClearAllProjections', true);",
|
||||
Documentation = "Jumps to the 14th of July 2015 at 0900 UTC and clears all projections.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "KP_8",
|
||||
Command = sceneHelper.property.increment('Pluto.renderable.HeightExaggeration', 5000000),
|
||||
Documentation = "Increases the height map exaggeration on Pluto.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "KP_2",
|
||||
Command = sceneHelper.property.decrement('Pluto.renderable.HeightExaggeration', 5000000),
|
||||
Documentation = "Decreases the height map exaggeration on Pluto.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "KP_9",
|
||||
Command = sceneHelper.property.increment('Charon.renderable.HeightExaggeration', 5000000),
|
||||
Documentation = "Increases the height map exaggeration on Charon.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "KP_3",
|
||||
Command = sceneHelper.property.decrement('Charon.renderable.HeightExaggeration', 5000000),
|
||||
Documentation = "Decreases the height map exaggeration on Charon.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "q",
|
||||
Command = sceneHelper.property.invert('SunMarker.renderable.Enabled'),
|
||||
Documentation = "Toggles the visibility of the text marking the location of the Sun.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "e",
|
||||
Command = sceneHelper.property.invert('EarthMarker.renderable.Enabled'),
|
||||
Documentation = "Toggles the visibility of the text marking the location of the Earth.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "o",
|
||||
Command = sceneHelper.property.invert('PlutoTrail.renderable.Enabled'),
|
||||
Documentation = "Toggles the visibility of the trail behind Pluto.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "j",
|
||||
Command = sceneHelper.renderable.toggle('PlutoText') .. sceneHelper.renderable.toggle('CharonText') ..
|
||||
sceneHelper.renderable.toggle('HydraText') .. sceneHelper.renderable.toggle('NixText') ..
|
||||
sceneHelper.renderable.toggle('KerberosText') .. sceneHelper.renderable.toggle('StyxText'),
|
||||
Documentation = "Toggles the visibility of the text labels of Pluto, Charon, Hydra, Nix, Kerberos, and Styx.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "l",
|
||||
Command = sceneHelper.property.invert('Labels.renderable.performFading'),
|
||||
Documentation = "Toggles the visibility of the labels for the New Horizons instruments.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "m",
|
||||
Command = sceneHelper.property.invert('NH_LORRI.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_LEISA.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_MVIC_PAN1.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_MVIC_PAN2.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_MVIC_RED.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_MVIC_BLUE.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_MVIC_FT.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_MVIC_METHANE.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_RALPH_MVIC_NIR.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_ALICE_AIRGLOW.renderable.SolidDraw') ..
|
||||
sceneHelper.property.invert('NH_ALICE_SOC.renderable.SolidDraw'),
|
||||
Documentation = "Draws the instrument field of views in a solid color or as lines.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "t",
|
||||
Command = sceneHelper.renderable.toggle('PlutoShadow') .. sceneHelper.renderable.toggle('CharonShadow'),
|
||||
Documentation = "Toggles the visibility of the shadow visualization of Pluto and Charon.",
|
||||
Local = false
|
||||
}
|
||||
}
|
||||
|
||||
local NewHorizonsAsset = asset.require('scene/solarsystem/missions/newhorizons/model')
|
||||
|
||||
asset.onInitialize(function ()
|
||||
openspace.time.setTime("2015-07-14T08:00:00.00")
|
||||
sceneHelper.bindKeys(Keybindings)
|
||||
|
||||
openspace.setDefaultDashboard()
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemSpacing",
|
||||
Spacing = 25
|
||||
})
|
||||
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemDistance",
|
||||
SourceType = "Node",
|
||||
SourceNodeName = "NewHorizons",
|
||||
DestinationType = "Node Surface",
|
||||
DestinationNodeName = "Pluto"
|
||||
})
|
||||
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemInstruments"
|
||||
})
|
||||
|
||||
openspace.setDefaultGuiSorting()
|
||||
|
||||
sceneHelper.setDeltaTimeKeys({
|
||||
1, 5, 10, 20, 40, 60, 120, 360, 540, 1080,
|
||||
2160, 4320, 8640
|
||||
})
|
||||
|
||||
openspace.markInterestingNodes({
|
||||
"Pluto", "NewHorizons", "Charon"
|
||||
})
|
||||
|
||||
openspace.addVirtualProperty(
|
||||
"BoolProperty",
|
||||
"Show Trails",
|
||||
"*Trail.renderable.Enabled",
|
||||
"Disable or enable all trails of the scene at the same time",
|
||||
true,
|
||||
nil,
|
||||
nil
|
||||
)
|
||||
|
||||
openspace.navigation.setCameraState({
|
||||
Focus = NewHorizonsAsset.NewHorizons.Name,
|
||||
Position = { 4662120063743.592773, 1263245003503.724854, -955413856565.788086 },
|
||||
Rotation = { 0.683224, -0.165934, 0.701234, 0.118073 },
|
||||
})
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function ()
|
||||
sceneHelper.unbindKeys(Keybindings)
|
||||
|
||||
openspace.removeVirtualProperty("*Trail.renderable.Enabled")
|
||||
openspace.removeInterestingNodes({
|
||||
"Pluto", "NewHorizons", "Charon"
|
||||
})
|
||||
end)
|
||||
139
data/assets/osirisrex.scene
Normal file
@@ -0,0 +1,139 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sceneHelper = asset.require('util/scene_helper')
|
||||
|
||||
-- Specifying which other assets should be loaded in this scene
|
||||
asset.require('spice/base')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/sun')
|
||||
asset.require('scene/solarsystem/planets')
|
||||
asset.request('scene/digitaluniverse/stars')
|
||||
asset.request('scene/digitaluniverse/milkyway')
|
||||
asset.require('scene/solarsystem/missions/osirisrex/osirisrex')
|
||||
|
||||
-- Load default key bindings applicable to most scenes
|
||||
asset.require('util/default_keybindings')
|
||||
|
||||
-- Custom Keybindings
|
||||
local Keybindings = {
|
||||
{
|
||||
Key = "a",
|
||||
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'OsirisRex')",
|
||||
Documentation = "Sets the focus of the camera on 'OsirisRex'.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "s",
|
||||
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'BennuBarycenter')",
|
||||
Documentation = "Sets the focus of the camera on 'Bennu'",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F6",
|
||||
Command = "openspace.printInfo('Set time: Launch');openspace.time.setTime('2016 SEP 08 23:05:00');",
|
||||
Documentation = "Sets the time to the launch.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F7",
|
||||
Command = "openspace.printInfo('Set time: Gravity Assist');openspace.time.setTime('2017 SEP 22 15:00:00');",
|
||||
Documentation = "Sets the time to the Earth gravity assist.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F8",
|
||||
Command = "openspace.printInfo('Set time: Approach');openspace.time.setTime('2018-SEP-11 21:31:01.183');",
|
||||
Documentation = "Sets the time to the approach at Bennu.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F9",
|
||||
Command = "openspace.printInfo('Set time: Preliminary Survey');openspace.time.setTime('2018-NOV-20 01:13:12.183');",
|
||||
Documentation = "Sets the time to the preliminary survey of Bennu.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F10",
|
||||
Command = "openspace.printInfo('Set time: Orbital B');openspace.time.setTime('2019-APR-08 10:35:27.186');",
|
||||
Documentation = "Sets the time to the orbital B event.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F11",
|
||||
Command = "openspace.printInfo('Set time: Recon');openspace.time.setTime('2019-MAY-25 03:50:31.195');",
|
||||
Documentation = "Sets the time to the recon event.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "q",
|
||||
Command = sceneHelper.property.invert('SunMarker.renderable.Enabled'),
|
||||
Documentation = "Toggles the visibility of the text marking the location of the Sun.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "e",
|
||||
Command = sceneHelper.property.invert('EarthMarker.renderable.Enabled'),
|
||||
Documentation = "Toggles the visibility of the text marking the location of the Earth.",
|
||||
Local = false
|
||||
}
|
||||
}
|
||||
|
||||
local OsirisRexAsset = asset.require('scene/solarsystem/missions/osirisrex/model')
|
||||
|
||||
asset.onInitialize(function ()
|
||||
-- openspace.time.setTime("2019 APR 16 12:03:00.00")
|
||||
openspace.time.setTime("2016 SEP 8 23:00:00.500")
|
||||
sceneHelper.bindKeys(Keybindings)
|
||||
|
||||
openspace.setDefaultDashboard()
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemSpacing",
|
||||
Spacing = 25
|
||||
})
|
||||
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemDistance",
|
||||
SourceType = "Node",
|
||||
SourceNodeName = "OsirisRex",
|
||||
DestinationType = "Node",
|
||||
DestinationNodeName = "BennuBarycenter"
|
||||
})
|
||||
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemInstruments"
|
||||
})
|
||||
|
||||
openspace.setDefaultGuiSorting()
|
||||
|
||||
sceneHelper.setDeltaTimeKeys({
|
||||
1, 5, 10, 20, 40, 60, 120, 360, 540, 1080,
|
||||
2160, 4320, 8640
|
||||
})
|
||||
|
||||
openspace.markInterestingNodes({
|
||||
"OsirisRex", "BennuBarycenter", "Earth"
|
||||
})
|
||||
|
||||
openspace.addVirtualProperty(
|
||||
"BoolProperty",
|
||||
"Show Trails",
|
||||
"*Trail.renderable.Enabled",
|
||||
"Disable or enable all trails of the scene at the same time",
|
||||
true,
|
||||
nil,
|
||||
nil
|
||||
)
|
||||
|
||||
openspace.navigation.setCameraState({
|
||||
Focus = OsirisRexAsset.OsirisRex.Name,
|
||||
Position = { 26974590199.661884, 76314608558.908020, -127086452897.101791 },
|
||||
Rotation = { 0.729548, -0.126024, 0.416827, 0.527382 },
|
||||
})
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function ()
|
||||
sceneHelper.unbindKeys(Keybindings)
|
||||
|
||||
openspace.removeVirtualProperty("*Trail.renderable.Enabled")
|
||||
openspace.removeInterestingNodes({
|
||||
"OsirisRex", "BennuBarycenter", "Earth"
|
||||
})
|
||||
end)
|
||||
142
data/assets/rosetta.scene
Normal file
@@ -0,0 +1,142 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sceneHelper = asset.require('util/scene_helper')
|
||||
|
||||
-- Specifying which other assets should be loaded in this scene
|
||||
asset.require('spice/base')
|
||||
assetHelper.requestAll(asset, 'scene/solarsystem/sun')
|
||||
asset.require('scene/solarsystem/planets')
|
||||
asset.request('scene/digitaluniverse/stars')
|
||||
asset.request('scene/digitaluniverse/milkyway')
|
||||
asset.require('scene/solarsystem/missions/rosetta/67p')
|
||||
asset.require('scene/solarsystem/missions/rosetta/rosetta')
|
||||
|
||||
-- Load default key bindings applicable to most scenes
|
||||
asset.require('util/default_keybindings')
|
||||
|
||||
-- Custom Keybindings
|
||||
local Keybindings = {
|
||||
{
|
||||
Key = "a",
|
||||
Command = "openspace.setPropertyValue('NavigationHandler.Origin', '67P')",
|
||||
Documentation = "Sets the focus of the camera on '67P'.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "s",
|
||||
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'Rosetta')",
|
||||
Documentation = "Sets the focus of the camera on 'Rosetta'",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F5",
|
||||
Command = "openspace.time.setTime('2014-08-01T03:05:18.101')",
|
||||
Documentation = "Jumps to the time of initial approach of Rosetta to 67P.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F6",
|
||||
Command = "openspace.time.setTime('2014-11-12T08:20:00.00')",
|
||||
Documentation = "Jumps to the time when the Philae lander is released.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "F8",
|
||||
Command = "openspace.setPropertyValue('67P.renderable.ProjectionComponent.clearAllProjections', true)",
|
||||
Documentation = "Removes all image projections from 67P.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "q",
|
||||
Command = sceneHelper.property.invert('SunMarker.renderable.Enabled'),
|
||||
Documentation = "Toggles the visibility of the text marking the location of the Sun.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "e",
|
||||
Command = helper.renderable.toggle('JupiterTrail') .. helper.renderable.toggle('SaturnTrail') ..
|
||||
helper.renderable.toggle('UranusTrail') .. helper.renderable.toggle('NeptuneTrail'),
|
||||
Documentation = "Toggles the visibility of all trails further from the Sun than 67P.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "i",
|
||||
Command = sceneHelper.renderable.toggle('ImagePlaneRosetta'),
|
||||
Documentation = "Toggles the visibility of the free floating image plane.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "f",
|
||||
Command = sceneHelper.renderable.toggle('PhilaeTrail'),
|
||||
Documentation = "Toggles the visibility of Philae's trail.",
|
||||
Local = false
|
||||
},
|
||||
{
|
||||
Key = "p",
|
||||
Command = sceneHelper.property.invert('67P.renderable.ProjectionComponent.performProjection'),
|
||||
Documentation = "Enables or disables the image projection on 67P.",
|
||||
Local = false
|
||||
}
|
||||
}
|
||||
|
||||
local Comet67PAsset = asset.require('scene/solarsystem/missions/rosetta/67p')
|
||||
|
||||
asset.onInitialize(function ()
|
||||
openspace.time.setTime("2014-08-01T03:05:00.000")
|
||||
sceneHelper.bindKeys(Keybindings)
|
||||
|
||||
openspace.setDefaultDashboard()
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemSpacing",
|
||||
Spacing = 25
|
||||
})
|
||||
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemDistance",
|
||||
SourceType = "Node",
|
||||
SourceNodeName = "Rosetta",
|
||||
DestinationType = "Node",
|
||||
DestinationNodeName = "67P"
|
||||
})
|
||||
|
||||
openspace.dashboard.addDashboardItem({
|
||||
Type = "DashboardItemInstruments"
|
||||
})
|
||||
|
||||
openspace.setDefaultGuiSorting()
|
||||
|
||||
sceneHelper.setDeltaTimeKeys({
|
||||
1, 5, 10, 20, 40, 90, 360, 720, 2880, 14400,
|
||||
28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600
|
||||
})
|
||||
|
||||
openspace.markInterestingNodes({
|
||||
"67P", "Rosetta", "Philae"
|
||||
})
|
||||
|
||||
openspace.addVirtualProperty(
|
||||
"BoolProperty",
|
||||
"Show Trails",
|
||||
"*Trail.renderable.Enabled",
|
||||
"Disable or enable all trails of the scene at the same time",
|
||||
true,
|
||||
nil,
|
||||
nil
|
||||
)
|
||||
|
||||
openspace.navigation.setCameraState({
|
||||
Focus = Comet67PAsset.Comet67P.Name,
|
||||
Position = { 526781518487.171326, 257168309890.072144, -1381125204152.817383 },
|
||||
Rotation = { -0.106166, 0.981574, -0.084545, 0.134513 },
|
||||
})
|
||||
|
||||
openspace.setPropertyValue('67P.renderable.PerformShading', false);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function ()
|
||||
sceneHelper.unbindKeys(Keybindings)
|
||||
|
||||
openspace.removeVirtualProperty("*Trail.renderable.Enabled")
|
||||
openspace.removeInterestingNodes({
|
||||
"67PBarycenter", "Rosetta", "Philae"
|
||||
})
|
||||
end)
|
||||
39
data/assets/scene/digitaluniverse/2dF.asset
Normal file
@@ -0,0 +1,39 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "2dF Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_2dF_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "2dF Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_2dF_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "2dF Galaxies",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 1.0,
|
||||
File = speck .. "/2dF.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
ColorMap = speck .. "/lss.cmap",
|
||||
ColorOption = { "redshift", "prox5Mpc" },
|
||||
ColorRange = { { 0.0, 0.075 }, { 1.0, 50.0 } },
|
||||
Unit = "Mpc",
|
||||
ScaleFactor = 508.0
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
39
data/assets/scene/digitaluniverse/2mass.asset
Normal file
@@ -0,0 +1,39 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "2MASS Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_2mass_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "2MASS Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_2mass_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "2MASS Galaxies",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 0.4, 0.2 },
|
||||
Transparency = 1.0,
|
||||
File = speck .. "/2MASS.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
ColorMap = speck .. "/lss.cmap",
|
||||
ColorOption = { "redshift", "prox5Mpc" },
|
||||
ColorRange = { { 0.0, 0.075 }, { 1.0, 50.0 } },
|
||||
Unit = "Mpc",
|
||||
ScaleFactor = 508.0
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
38
data/assets/scene/digitaluniverse/6dF.asset
Normal file
@@ -0,0 +1,38 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "6dF Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_6dF_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "6dF Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_6dF_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "6dF Galaxies",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 1.0,
|
||||
File = speck .. "/6dF.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
ColorMap = speck .. "/lss.cmap",
|
||||
ColorOption = { "redshift", "prox5Mpc" },
|
||||
ColorRange = { { 0.0, 0.075 }, { 1.0, 50.0 } },
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
46
data/assets/scene/digitaluniverse/abell.asset
Normal file
@@ -0,0 +1,46 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Abell Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_abell_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Abell Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_abell_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Abell Galaxy Clusters",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 0.4, 0.2 },
|
||||
Transparency = 1.0,
|
||||
ScaleFactor = 525.0,
|
||||
File = speck .. "/abell.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
LabelFile = speck .. "/abell.label",
|
||||
TextColor = { 0.0, 0.8, 0.0, 1.0 },
|
||||
TextSize = 22,
|
||||
TextMinSize = 10.0,
|
||||
Unit = "Mpc",
|
||||
TransformationMatrix = {
|
||||
-0.7357425748, 0.67726129641, 0.0, 0.0,
|
||||
-0.074553778365, -0.080991471307, 0.9939225904, 0.0,
|
||||
0.67314530211, 0.73127116582, 0.11008126223, 0.0,
|
||||
0.0, 0.0, 0.0, 1.0
|
||||
}
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
31
data/assets/scene/digitaluniverse/alternatestarlabels.asset
Normal file
@@ -0,0 +1,31 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Alternate Star Labels Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_alternatestarlabels_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Stars Labels - Alternate",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
LabelFile = speck .. "/stars-altlbl.label",
|
||||
TextColor = { 0.4, 0.4, 0.4, 1.0 },
|
||||
DrawLabels = true,
|
||||
TextSize = 14.7,
|
||||
TextMinSize = 6.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Stars"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
67
data/assets/scene/digitaluniverse/backgroundradiation.asset
Normal file
@@ -0,0 +1,67 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Background Radiation Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_backgroundradiation_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Background Radiation Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_backgroundradiation_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local wmap = {
|
||||
Name = "Wilkinson Microwave Anisotropy Probe (WMAP)",
|
||||
Renderable = {
|
||||
Type = "RenderableSphere",
|
||||
Enabled = false,
|
||||
Size = 3975.41417036064E23,
|
||||
Segments = 80,
|
||||
Alpha = 0.5,
|
||||
Texture = textures .. "/wmap_ilc_7yr_v4_200uK_RGB_sos.png",
|
||||
Orientation = "Inside/Outside",
|
||||
FadeInThreshould = 8E26
|
||||
|
||||
},
|
||||
GuiPath = "/Universe/Cosmic Microwave Background"
|
||||
}
|
||||
|
||||
local cbe = {
|
||||
Name = "Cosmic Background Explorer",
|
||||
Renderable = {
|
||||
Type = "RenderableSphere",
|
||||
Enabled = false,
|
||||
Size = 3975.41417036064E23,
|
||||
Segments = 80,
|
||||
Alpha = 0.5,
|
||||
Texture = textures .. "/COBErect.png",
|
||||
Orientation = "Inside/Outside",
|
||||
FadeInThreshould = 8E26
|
||||
},
|
||||
GuiPath = "/Universe/Cosmic Microwave Background"
|
||||
}
|
||||
|
||||
local planck = {
|
||||
Name = "Planck",
|
||||
Renderable = {
|
||||
Type = "RenderableSphere",
|
||||
Enabled = false,
|
||||
Size = 3975.41417036064E23,
|
||||
Segments = 80,
|
||||
Alpha = 0.3,
|
||||
Texture = textures .. "/cmb4k.jpg",
|
||||
Orientation = "Inside/Outside",
|
||||
FadeInThreshould = 8E26
|
||||
},
|
||||
GuiPath = "/Universe/Cosmic Microwave Background"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { wmap, cbe, planck })
|
||||
31
data/assets/scene/digitaluniverse/clusters.asset
Normal file
@@ -0,0 +1,31 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Clusters Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_clusters_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Galaxy Cluster Labels",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
LabelFile = speck .. "/galclust.label",
|
||||
TextColor = { 0.7, 0.3, 0.0, 1.0 },
|
||||
DrawLabels = true,
|
||||
TextSize = 22,
|
||||
TextMinSize = 8.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
42
data/assets/scene/digitaluniverse/constellationbounds.asset
Normal file
@@ -0,0 +1,42 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local data = asset.syncedResource({
|
||||
Name = "Constellation Bounds Data",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_constellationbounds_data",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local zodiacs = {
|
||||
"Cancer", "Taurus", "Pisces", "Aries", "Libra", "Aquarius", "Capricornus", "Scorpius",
|
||||
"Virgo", "Sagittarius", "Gemini", "Leo"
|
||||
}
|
||||
|
||||
local object = {
|
||||
Name = "Constellation Bounds",
|
||||
Renderable = {
|
||||
Type = "RenderableConstellationBounds",
|
||||
Enabled = false,
|
||||
File = data .. "/bound_20.dat",
|
||||
ConstellationFile = data .. "/constellations.dat"
|
||||
-- ConstellationSelection = zodiacs
|
||||
},
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "J2000",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 10e17
|
||||
}
|
||||
},
|
||||
GuiPath = "/Milky Way/Constellations"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
54
data/assets/scene/digitaluniverse/constellations.asset
Normal file
@@ -0,0 +1,54 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Constellation Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_constellations_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local constellationsExtragalactic = {
|
||||
Name = "Constellations (Extragalactic)",
|
||||
Renderable = {
|
||||
Type = "RenderableDUMeshes",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 0.4, 0.2 },
|
||||
Transparency = 1.0,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/constellationsEXGAL.speck",
|
||||
LabelFile = speck .. "/constellationsEXGAL.label",
|
||||
TextColor = { 0.8, 0.8, 0.8, 1.0 },
|
||||
TextSize = 20.0,
|
||||
TextMinSize = 20.0,
|
||||
TextMaxSize = 30.0,
|
||||
MeshColor = { { 0.6, 0.4, 0.4 }, { 0.8, 0.0, 0.0 }, { 0.0, 0.3, 0.8 } },
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Constellations"
|
||||
}
|
||||
|
||||
local constellations = {
|
||||
Name = "Constellations",
|
||||
Renderable = {
|
||||
Type = "RenderableDUMeshes",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 0.4, 0.2 },
|
||||
Transparency = 1.0,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/constellations.speck",
|
||||
LabelFile = speck .. "/constellations.label",
|
||||
TextColor = { 0.8, 0.8, 0.8, 1.0 },
|
||||
TextMinSize = 10.0,
|
||||
TextMaxSize = 30.0,
|
||||
TextMinSize = 8.0,
|
||||
MeshColor = { { 0.6, 0.4, 0.4 }, { 0.8, 0.0, 0.0 }, { 0.0, 0.3, 0.8 } },
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Constellations"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { constellationsExtragalactic, constellations })
|
||||
40
data/assets/scene/digitaluniverse/dwarfs.asset
Normal file
@@ -0,0 +1,40 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Brown Dwarf Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_dwarfs_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Brown Dwarf Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_dwarfs_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Dwarfs",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.5, 1.0, 0.2 },
|
||||
Transparency = 0.999,
|
||||
File = speck .. "/dwarfs.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
LabelFile = speck .. "/dwarfs.label",
|
||||
TextColor = { 0.5, 0.1, 0.2, 1.0 },
|
||||
TextSize = 14.6,
|
||||
TextMinSize = 10.0,
|
||||
ScaleFactor = 360,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Brown Dwarfs"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
42
data/assets/scene/digitaluniverse/exoplanets.asset
Normal file
@@ -0,0 +1,42 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Exoplanets Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_exoplanets_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Exoplanets Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_exoplanets_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Exoplanets",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
ScaleFactor = 10.0,
|
||||
Texture = textures .. "/target-blue.pbm",
|
||||
File = speck .. "/expl.speck",
|
||||
LabelFile = speck .. "/expl.label",
|
||||
ScaleFactor = 380.0,
|
||||
TextColor = { 0.3, 0.3, 0.8, 1.0 },
|
||||
TextSize = 14.8,
|
||||
TextMaxSize = 200.0,
|
||||
TextMinSize = 10.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Exoplanets"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
41
data/assets/scene/digitaluniverse/globularclusters.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Globular Clusters Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_globularclusters_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Globular Clusters Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_globularclusters_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Globular Clusters",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.8, 0.8, 0.0 },
|
||||
Transparency = 0.35,
|
||||
File = speck .. "/gc.speck",
|
||||
Texture = textures .. "/point4.png",
|
||||
PolygonSides = 5,
|
||||
LabelFile = speck .. "/gc.label",
|
||||
TextColor = { 0.5, 0.5, 0.0, 1.0 },
|
||||
ScaleFactor = 440.0,
|
||||
TextSize = 17.5,
|
||||
TextMinSize = 10.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Globular Clusters"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
220
data/assets/scene/digitaluniverse/grids.asset
Normal file
@@ -0,0 +1,220 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Grids Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_grids_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local ecliptic = {
|
||||
Name = "Ecliptic Sphere",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableSphericalGrid",
|
||||
Enabled = false,
|
||||
GridColor = { 0.7, 0.0, 0.0, 0.5},
|
||||
LineWidth = 2.0,
|
||||
Radius = 9.46377307652E17;
|
||||
GridMatrix = { -0.05487554, 0.4941095, -0.8676661 , 0.0,
|
||||
-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"
|
||||
}
|
||||
|
||||
local eclipticLabels = {
|
||||
Name = "Ecliptic Sphere Labels",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
LabelFile = speck .. "/eclip.label",
|
||||
TextColor = { 0.5, 0.5, 0.5, 1.0 },
|
||||
TextSize = 15.4,
|
||||
TextMinSize = 5.0,
|
||||
Unit = "pc",
|
||||
TransformationMatrix = {
|
||||
-0.05487554, 0.4941095, -0.8676661, 0.0,
|
||||
-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"
|
||||
}
|
||||
|
||||
local equatorial = {
|
||||
Name = "Equatorial Sphere",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableSphericalGrid",
|
||||
Enabled = false,
|
||||
GridColor = { 0.0, 0.0, 1.0, 0.8},
|
||||
LineWidth = 2.0,
|
||||
Radius = 6.2440846E17,
|
||||
GridMatrix = { -0.05487554, 0.4941095, -0.8676661, 0.0,
|
||||
-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"
|
||||
}
|
||||
|
||||
local equatorialLabels = {
|
||||
Name = "Equatorial Sphere Labels",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
LabelFile = speck .. "/radec.label",
|
||||
TextColor = { 0.5, 0.5, 0.5, 1.0 },
|
||||
TextSize = 15.3,
|
||||
TextMinSize = 5.0,
|
||||
Unit = "pc",
|
||||
TransformationMatrix = {
|
||||
-0.05487554, 0.4941095, -0.8676661, 0.0,
|
||||
-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"
|
||||
}
|
||||
|
||||
local galactic = {
|
||||
Name = "Galactic Sphere",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableSphericalGrid",
|
||||
Enabled = false,
|
||||
LineWidth = 2.0,
|
||||
Radius = 9.46377307652E18;
|
||||
GridColor = { 0.0, 0.6, 0.6, 0.6}
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
|
||||
local galacticLabels = {
|
||||
Name = "Galactic Sphere Labels",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
LabelFile = speck .. "/galac.label",
|
||||
TextColor = { 0.5, 0.5, 0.5, 1.0 },
|
||||
TextSize = 16.25,
|
||||
TextMinSize = 5.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
|
||||
local plane100kly = {
|
||||
Name = "100kly Grid",
|
||||
Renderable = {
|
||||
Type = "RenderableDUMeshes",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.4,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/100kly.speck",
|
||||
MeshColor = {{ 0.1, 0.5, 0.6 }},
|
||||
LabelFile = speck .. "/100kly.label",
|
||||
TextColor = { 0.0, 0.2, 0.5, 1.0 },
|
||||
TextSize = 18.6,
|
||||
TextMinSize = 7.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
|
||||
local plane1Mly = {
|
||||
Name = "1Mly Grid",
|
||||
Renderable = {
|
||||
Type = "RenderableDUMeshes",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.4,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/1Mly.speck",
|
||||
MeshColor = {{ 0.1, 0.5, 0.6 }},
|
||||
LabelFile = speck .. "/1Mly.label",
|
||||
TextColor = { 0.0, 0.2, 0.5, 1.0 },
|
||||
TextSize = 19.6,
|
||||
TextMinSize = 7.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
|
||||
local plane10Mly = {
|
||||
Name = "10Mly Grid",
|
||||
Renderable = {
|
||||
Type = "RenderableDUMeshes",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.4,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/10Mly.speck",
|
||||
MeshColor = {{ 0.1, 0.5, 0.6 }},
|
||||
LabelFile = speck .. "/10Mly.label",
|
||||
TextColor = { 0.0, 0.2, 0.5, 1.0 },
|
||||
TextSize = 20.6,
|
||||
TextMinSize = 7.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
|
||||
local plane100Mly = {
|
||||
Name = "100Mly Grid",
|
||||
Renderable = {
|
||||
Type = "RenderableDUMeshes",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.4,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/100Mly.speck",
|
||||
MeshColor = {{ 0.1, 0.5, 0.6 }},
|
||||
LabelFile = speck .. "/100Mly.label",
|
||||
TextColor = { 0.0, 0.2, 0.5, 1.0 },
|
||||
TextSize = 21.6,
|
||||
TextMinSize = 7.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
|
||||
local plane20Gly = {
|
||||
Name = "20Gly Grid",
|
||||
Renderable = {
|
||||
Type = "RenderableDUMeshes",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.4,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/20Gly.speck",
|
||||
MeshColor = {{ 0.1, 0.5, 0.6 }},
|
||||
LabelFile = speck .. "/20Gly.label",
|
||||
TextColor = { 0.0, 0.2, 0.5, 1.0 },
|
||||
TextSize = 23.6,
|
||||
TextMinSize = 7.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Other/Grids"
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
ecliptic, eclipticLabels, equatorial, equatorialLabels, galactic, galacticLabels,
|
||||
plane100kly, plane1Mly, plane10Mly, plane100Mly, plane20Gly
|
||||
})
|
||||
31
data/assets/scene/digitaluniverse/groups.asset
Normal file
@@ -0,0 +1,31 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Galaxy Groups Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_groups_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Nearby Galaxy Groups",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
--ScaleFactor = 10.0,
|
||||
LabelFile = speck .. "/groups.label",
|
||||
TextColor = { 0.1, 0.6, 0.2, 1.0 },
|
||||
TextSize = 21.5,
|
||||
TextMinSize = 8.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
41
data/assets/scene/digitaluniverse/h2regions.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "HII Regions Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_h2regions_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "HII Regions Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_h2regions_speck",
|
||||
Version = 2
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "HII Regions",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.0, 0.5, 1.0 },
|
||||
Transparency = 0.35,
|
||||
File = speck .. "/h2.speck",
|
||||
Texture = textures .."/point4.png",
|
||||
PolygonSides = 6,
|
||||
LabelFile = speck .. "/h2.label",
|
||||
TextColor = { 0.5, 0.5, 0.5, 1.0 },
|
||||
ScaleFactor = 420,
|
||||
TextSize = 17.25,
|
||||
TextMinSize = 2.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/HII"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
36
data/assets/scene/digitaluniverse/kepler.asset
Normal file
@@ -0,0 +1,36 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Kepler Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_kepler_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Kepler Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_kepler_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Kepler Planetary Candidates",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 0.0 },
|
||||
Transparency = 0.99,
|
||||
ScaleFactor = 395.0,
|
||||
File = speck .. "/kepler.speck",
|
||||
Texture = textures .. "/halo.png",
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Exoplanets"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
41
data/assets/scene/digitaluniverse/localdwarfs.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Local Dwarfs Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_localdwarfs_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Local Dwarfs Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_localdwarfs_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Local Dwarf Galaxies",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.5, 1.0, 0.2 },
|
||||
Transparency = 0.3,
|
||||
File = speck .. "/localdwarfs.speck",
|
||||
Texture = textures .. "/point4.png",
|
||||
PolygonSides = 12,
|
||||
LabelFile = speck .. "/localdwarfs.label",
|
||||
TextColor = { 0.3, 0.3, 1.0, 1.0 },
|
||||
ScaleFactor = 478,
|
||||
TextSize = 19.2,
|
||||
TextMinSize = 7.3,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
64
data/assets/scene/digitaluniverse/milkyway.asset
Normal file
@@ -0,0 +1,64 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local sphereTextures = asset.syncedResource({
|
||||
Name = "Milky Way Sphere Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "milkyway_textures",
|
||||
Version = 2
|
||||
})
|
||||
|
||||
local planeTextures = asset.syncedResource({
|
||||
Name = "Milky Way Plane Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_milkyway_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local planeSpeck = asset.syncedResource({
|
||||
Name = "Milky Way Plane Speck",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_milkyway_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local sphere = {
|
||||
Name = "MilkyWay",
|
||||
Renderable = {
|
||||
Type = "RenderableSphere",
|
||||
Size = 9.2E20,
|
||||
Segments = 40,
|
||||
Alpha = 0.4,
|
||||
Texture = sphereTextures .. "/DarkUniverse_mellinger_4k.jpg",
|
||||
Orientation = "Inside/Outside",
|
||||
FadeOutThreshould = 0.25
|
||||
},
|
||||
GuiPath = "/Milky Way/Milky Way"
|
||||
}
|
||||
|
||||
local plane = {
|
||||
Name = "Milky Way Galaxy Image",
|
||||
Parent = "Root",
|
||||
Renderable = {
|
||||
Type = "RenderablePlanesCloud",
|
||||
Enabled = true,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.90,
|
||||
ScaleFactor = 2.8,
|
||||
File = planeSpeck .. "/galaxy.speck",
|
||||
TexturePath = planeTextures,
|
||||
Luminosity = "size",
|
||||
ScaleLuminosity = 1.0,
|
||||
-- Fade in value in the same unit as "Unit"
|
||||
FadeInThreshould = 119441,
|
||||
FadeInDistances = { 1400.0, 119441.0 },
|
||||
PlaneMinSize = 5.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { sphere, plane })
|
||||
41
data/assets/scene/digitaluniverse/obassociations.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "OB Associations Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_obassociations_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "OB Associations Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_obassociations_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "OB Associations",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.0, 0.0, 1.0 },
|
||||
Transparency = 0.5,
|
||||
File = speck .. "/ob.speck",
|
||||
Texture = textures .. "/point4.png",
|
||||
PolygonSides = 7,
|
||||
LabelFile = speck .. "/ob.label",
|
||||
TextColor = { 0.4, 0.5, 1.0, 1.0 },
|
||||
ScaleFactor = 428.0,
|
||||
TextSize = 17.0,
|
||||
TextMinSize = 5.76,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/OB Associations"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
41
data/assets/scene/digitaluniverse/openclusters.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Open Clusters Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_openclusters_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Open Clusters Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_openclusters_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Open Star Clusters",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.1, 0.8, 0.4 },
|
||||
Transparency = 0.5,
|
||||
File = speck .. "/oc.speck",
|
||||
Texture = textures .. "/point4.png",
|
||||
PolygonSides = 12,
|
||||
TextColor = { 0.05, 0.4, 0.2, 1.0 },
|
||||
LabelFile = speck .. "/oc.label",
|
||||
ScaleFactor = 418.33,
|
||||
TextSize = 16.68,
|
||||
TextMinSize = 4.5,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Open Clusters"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
41
data/assets/scene/digitaluniverse/planetarynebulae.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Planetary Nebulae Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_planetarynebulae_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Planetary Nebulae Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_planetarynebulae_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Planetary Nebulae",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.4, 0.4, 0.9 },
|
||||
Transparency = 0.35,
|
||||
File = speck .. "/pn.speck",
|
||||
Texture = textures .. "/point4.png",
|
||||
PolygonSides = 3,
|
||||
LabelFile = speck .. "/pn.label",
|
||||
TextColor = { 0.25, 0.25, 0.65, 1.0 },
|
||||
ScaleFactor = 418.33,
|
||||
TextSize = 16.68,
|
||||
TextMinSize = 4.5,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Planetary Nebulae"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
41
data/assets/scene/digitaluniverse/pulsars.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Pulsars Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_pulsars_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Pulsars Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_pulsars_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Pulsars",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.7, 0.0, 0.0 },
|
||||
Transparency = 0.5,
|
||||
File = speck .. "/pulsar.speck",
|
||||
Texture = textures .. "/point4.png",
|
||||
PolygonSides = 4,
|
||||
LabelFile = speck .. "/pulsar.label",
|
||||
TextColor = { 0.7, 0.0, 0.0, 1.0 },
|
||||
ScaleFactor = 418.33,
|
||||
TextSize = 16.68,
|
||||
TextMinSize = 4.5,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Pulsars"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
40
data/assets/scene/digitaluniverse/quasars.asset
Normal file
@@ -0,0 +1,40 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Quasars Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_quasars_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Quasars Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_quasars_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Quasars",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 0.4, 0.2 },
|
||||
Transparency = 1.0,
|
||||
File = speck .. "/quasars.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
Unit = "Mpc",
|
||||
ScaleFactor = 537.31,
|
||||
-- Fade in value in the same unit as "Unit"
|
||||
FadeInDistances = { 1000.0, 10000.0 },
|
||||
BillboardMaxSize = 30.0,
|
||||
BillboardMinSize = 0.0,
|
||||
},
|
||||
GuiPath = "/Universe/Quasars"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
46
data/assets/scene/digitaluniverse/sdss.asset
Normal file
@@ -0,0 +1,46 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Sloan Digital Sky Survey Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_sloandss_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Sloan Digital Sky Survey Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_sloandss_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Sloan Digital Sky Survey",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 0.8, 0.8, 1.0 },
|
||||
Transparency = 1.0,
|
||||
ScaleFactor = 507.88,
|
||||
File = speck .. "/SDSSgals.speck",
|
||||
ColorMap = speck .. "/lss.cmap",
|
||||
ColorOption = { "redshift", "prox5Mpc" },
|
||||
ColorRange = { { 0.0, 0.075 }, { 1.0, 50.0 } },
|
||||
Texture = textures .. "/point3.png",
|
||||
Unit = "Mpc",
|
||||
-- Fade in value in the same unit as "Unit"
|
||||
FadeInDistances = { 220.0, 650.0 },
|
||||
BillboardMaxSize = 50.0,
|
||||
BillboardMinSize = 0.0,
|
||||
TextSize = 14.8,
|
||||
TextMinSize = 10.0,
|
||||
TextMaxSize = 50.0
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
32
data/assets/scene/digitaluniverse/starlabels.asset
Normal file
@@ -0,0 +1,32 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Star Labels Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_starlabels_speck",
|
||||
Version = 2
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Stars Labels",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
LabelFile = speck .. "/stars.label",
|
||||
TextColor = { 0.4, 0.4, 0.4, 1.0 },
|
||||
DrawLabels = true,
|
||||
TextSize = 14.7,
|
||||
TextMinSize = 6.0,
|
||||
TextMaxSize = 50.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Stars"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
39
data/assets/scene/digitaluniverse/stars.asset
Normal file
@@ -0,0 +1,39 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Stars Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "stars_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Stars Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "stars_du",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local colorLUT = asset.syncedResource({
|
||||
Name = "Stars Color Table",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "stars_colormap",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Stars",
|
||||
Renderable = {
|
||||
Type = "RenderableStars",
|
||||
File = speck .. "/stars.speck",
|
||||
Texture = textures .. "/halo.png",
|
||||
ColorMap = colorLUT .. "/colorbv.cmap"
|
||||
},
|
||||
GuiPath = "/Milky Way/Stars"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
40
data/assets/scene/digitaluniverse/superclusters.asset
Normal file
@@ -0,0 +1,40 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Galaxy Superclusters Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_superclusters_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Galaxy Superclusters Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_superclusters_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Galaxy Superclusters",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
File = speck .. "/superclust.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
LabelFile = speck .. "/superclust.label",
|
||||
TextColor = { 0.6, 0.6, 0.6, 1.0 },
|
||||
ScaleFactor = 531.0,
|
||||
TextSize = 22.44,
|
||||
TextMinSize = 8.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
41
data/assets/scene/digitaluniverse/supernovaremnants.asset
Normal file
@@ -0,0 +1,41 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Supernova Remnants Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_supernovaremnants_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Supernova Remnants Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_supernovaremnants_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Supernova Remnants",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 0.5, 0.0 },
|
||||
Transparency = 0.5,
|
||||
File = speck .. "/snr.speck",
|
||||
Texture = textures .. "/point4.png",
|
||||
PolygonSides = 7,
|
||||
LabelFile = speck .. "/snr.label",
|
||||
TextColor = { 0.6, 0.3, 0.0, 1.0 },
|
||||
ScaleFactor = 440.08,
|
||||
TextSize = 17.5,
|
||||
TextMinSize = 8.0,
|
||||
Unit = "pc"
|
||||
},
|
||||
GuiPath = "/Milky Way/Supernova Remnants"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
80
data/assets/scene/digitaluniverse/tully.asset
Normal file
@@ -0,0 +1,80 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Tully Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_tully_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Tully Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_tully_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local tullyPoints = {
|
||||
Name = "Tully Galaxies",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 0.4, 0.2 },
|
||||
Transparency = 0.99,
|
||||
ScaleFactor = 502.77,
|
||||
File = speck .. "/tully.speck",
|
||||
Texture = textures .. "/point3.png",
|
||||
ColorMap = speck .. "/lss.cmap",
|
||||
ColorOption = { "prox5Mpc" },
|
||||
ColorRange = { { 1.0, 80.0 } },
|
||||
LabelFile = speck .. "/tully.label",
|
||||
TextColor = { 0.7, 0.7, 0.7, 1.0 },
|
||||
TextSize = 20.50,
|
||||
TextMinSize = 16.0,
|
||||
TransformationMatrix = {
|
||||
-0.7357425748, 0.67726129641, 0.0, 0.0,
|
||||
-0.074553778365, -0.080991471307, 0.9939225904, 0.0,
|
||||
0.67314530211, 0.73127116582, 0.11008126223, 0.0,
|
||||
0.0, 0.0, 0.0, 1.0
|
||||
},
|
||||
Unit = "Mpc",
|
||||
-- Fade in value in the same unit as "Unit"
|
||||
FadeInDistances = { 0.05, 1.0 },
|
||||
-- Max size in pixels
|
||||
BillboardMaxSize = 50.0,
|
||||
BillboardMinSize = 0.0,
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
local tullyImages = {
|
||||
Name = "Tully Galaxies Images",
|
||||
Renderable = {
|
||||
Type = "RenderablePlanesCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.99,
|
||||
ScaleFactor = 1.0,
|
||||
File = speck .. "/tully.speck",
|
||||
TexturePath = textures,
|
||||
Luminosity = "diamkpc",
|
||||
ScaleLuminosity = 0.001,
|
||||
TransformationMatrix = {
|
||||
-0.7357425748, 0.67726129641, 0.0, 0.0,
|
||||
-0.074553778365, -0.080991471307, 0.9939225904, 0.0,
|
||||
0.67314530211, 0.73127116582, 0.11008126223, 0.0,
|
||||
0.0, 0.0, 0.0, 1.0
|
||||
},
|
||||
Unit = "Mpc",
|
||||
-- Fade in value in the same unit as "Unit"
|
||||
FadeInDistances = {0.05, 0.1},
|
||||
PlaneMinSize = 5.0
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { tullyPoints, tullyImages })
|
||||
30
data/assets/scene/digitaluniverse/voids.asset
Normal file
@@ -0,0 +1,30 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Voids Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "digitaluniverse_voids_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Voids",
|
||||
Renderable = {
|
||||
Type = "RenderableBillboardsCloud",
|
||||
Enabled = false,
|
||||
Color = { 1.0, 1.0, 1.0 },
|
||||
Transparency = 0.65,
|
||||
LabelFile = speck .. "/voids.label",
|
||||
TextColor = { 0.0, 0.4, 0.7, 1.0 },
|
||||
TextSize = 21.9,
|
||||
TextMinSize = 8.0,
|
||||
Unit = "Mpc"
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
28
data/assets/scene/milkyway/milkyway/eso.asset
Normal file
@@ -0,0 +1,28 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "ESO Milky Way Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "milkyway-eso_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "MilkyWay (ESO)",
|
||||
Renderable = {
|
||||
Type = "RenderableSphere",
|
||||
Size = 9.2E20,
|
||||
Segments = 40,
|
||||
Alpha = 0.4,
|
||||
Texture = textures .. "/eso0932a_blend.png",
|
||||
Orientation = "Inside/Outside",
|
||||
FadeOutThreshould = 0.01
|
||||
},
|
||||
GuiPath = "/Milky Way/Milky Way"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
39
data/assets/scene/milkyway/stars/denver.asset
Normal file
@@ -0,0 +1,39 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Stars Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "stars-denver_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local speck = asset.syncedResource({
|
||||
Name = "Stars Speck Files",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "stars-denver_speck",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local colorLUT = asset.syncedResource({
|
||||
Name = "Stars Color Table",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "stars-denver_colormap",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local object = {
|
||||
Name = "Stars (Denver)",
|
||||
Renderable = {
|
||||
Type = "RenderableStars",
|
||||
File = speck .. "/denver_stars.speck",
|
||||
Texture = textures .. "/halo.png",
|
||||
ColorMap = colorLUT .. "/denver_colorbv.cmap"
|
||||
},
|
||||
GuiPath = "/Milky Way/Stars"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { object })
|
||||
58
data/assets/scene/solarsystem/missions/dawn/ceres.asset
Normal file
@@ -0,0 +1,58 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local kernels = asset.require('./dawn_kernels').Kernels
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Ceres Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "ceres_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local Ceres = {
|
||||
Name = "Ceres",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_CERES",
|
||||
DestinationFrame = "GALACTIC",
|
||||
Kernels = {
|
||||
kernels .. "/pck/dawn_ceres_v01.tpc",
|
||||
kernels .. "/spk/sb_ceres_140724.bsp",
|
||||
kernels .. "/spk/sb_ceres_110211.bsp"
|
||||
}
|
||||
},
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "CERES",
|
||||
Observer = "SSB",
|
||||
Kernels = {
|
||||
kernels .. "/pck/dawn_ceres_v01.tpc",
|
||||
kernels .. "/spk/sb_ceres_140724.bsp",
|
||||
kernels .. "/spk/sb_ceres_110211.bsp"
|
||||
}
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableGlobe",
|
||||
Radii = { 6.390E5, 6.390E5, 6.390E5 },
|
||||
SegmentsPerPatch = 64,
|
||||
Layers = {
|
||||
ColorLayers = {
|
||||
{
|
||||
Name = "Texture",
|
||||
FilePath = textures .. "/gray.png",
|
||||
Enabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Ceres"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { Ceres })
|
||||
761
data/assets/scene/solarsystem/missions/dawn/dawn.asset
Normal file
@@ -0,0 +1,761 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local kernels = asset.require('./dawn_kernels').Kernels
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Dawn Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "dawn_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local models = asset.syncedResource({
|
||||
Name = "Dawn Models",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "dawn_model",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local KernelFiles = {
|
||||
kernels .. "/DawnKernels/spk/dawn_ref_070926-150201_070829.bsp",
|
||||
|
||||
--ik
|
||||
kernels .. "/DawnKernels/ik/dawn_fc_v10.ti",
|
||||
|
||||
-- SPK
|
||||
kernels .. "/DawnKernels/spk/sb_ceres_110211.bsp",
|
||||
kernels .. "/DawnKernels/spk/sb_ceres_140724.bsp",
|
||||
kernels .. "/DawnKernels/spk/sb_vesta_071107.bsp",
|
||||
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_070927_070930_081218_v1.bsp",
|
||||
--[[kernels .. "/DawnKernels/spk/dawn_rec_070930_071201_081218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_071201_080205_081218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_080205_080325_081218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_080325_080503_081218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_080503_080601_081218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_080601_080718_081218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_080718_080910_081218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_080910_081022_090218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_081022_081109_090218_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_081109_090228_090306_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_090228_090501_090702_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_090501_090801_090916_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_090801_090915_090923_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_090915_091201_091202_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_091201_100208_100209_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_100208_100316_100323_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_100316_100413_100422_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_100413_100622_100830_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_100622_100824_100830_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_100824_101130_101202_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_101130_110201_110201_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_110201_110328_110328_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_110328_110419_110420_v1.bsp",--]]
|
||||
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_110416_110802_110913_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_110802_110831_110922_v1.bsp",
|
||||
--[[kernels .. "/spk/dawn_rec_110831_110928_111221_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_110928_111102_120615_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_111102_111210_120618_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_111211_120501_120620_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_120501_120611_120625_v1.bsp",
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_120611_120724_121101_v1.bsp",--]]
|
||||
kernels .. "/DawnKernels/spk/dawn_rec_120724_120913_121213_v1.bsp",
|
||||
|
||||
--PCK
|
||||
--kernels .. "/pck/dawn_vesta_v06.tpc",
|
||||
--kernels .. "/pck/dawn_ceres_v01.tpc",
|
||||
--kernels .. "/pck/pck00008.tpc",
|
||||
|
||||
-- FK
|
||||
kernels .. "/DawnKernels/fk/dawn_vesta_v00.tf",
|
||||
kernels .. "/DawnKernels/fk/dawn_v12.tf",
|
||||
|
||||
--SCLK
|
||||
kernels .. "/DawnKernels/sclk/dawn_203_sclkscet_00039.tsc",
|
||||
|
||||
-- CK
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_070927_070930.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_110801_110807.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_110808_110814.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_120910_120916.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111226_120101.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120102_120108.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120109_120115.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120116_120122.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120123_120129.bc",
|
||||
|
||||
-- all space craft CK files, ~10 gb
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120123_120129.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_070927_070930.bc",
|
||||
--[[kernels .. "/ck/dawn_sc_071001_071007.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071008_071014_v2.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071015_071021.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071022_071028_v2.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071029_071104.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071105_071111.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071112_071118.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071119_071125.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071126_071202.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071203_071209.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071210_071216.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071217_071223.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071224_071230.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_071231_080106.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080107_080113.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080114_080120.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080121_080127.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080128_080203.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080204_080210.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080211_080217.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080218_080224.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080225_080302.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080303_080309.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080310_080316.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080317_080323.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080324_080330.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080331_080406.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080407_080413.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080414_080420.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080421_080427.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080428_080504.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080505_080511.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080512_080518.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080519_080525.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080526_080601.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080602_080608.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080609_080615.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080616_080622.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080623_080629.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080630_080706.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080707_080713.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080714_080720.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080721_080727.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080728_080803.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080804_080810.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080811_080817.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080818_080824.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080825_080831.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080901_080907.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080908_080914.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080915_080921.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080922_080928.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_080929_081005.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081006_081012.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081013_081019.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081020_081026.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081027_081102.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081103_081109.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081110_081116.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081117_081123.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081124_081130.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081201_081207.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081208_081214.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081215_081221.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081222_081228.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_081229_090104.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090105_090111.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090112_090118.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090119_090125.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090126_090201.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090202_090208.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090209_090215.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090216_090222.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090223_090301.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090302_090308.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090309_090315.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090316_090322.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090323_090329.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090330_090405.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090406_090412.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090413_090419.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090420_090426.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090427_090503.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090504_090510.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090511_090517.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090518_090524.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090525_090531.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090601_090607.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090608_090614.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090615_090621.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090622_090628.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090629_090705.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090706_090712.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090713_090719.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090720_090726.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090727_090802.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090803_090809.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090810_090816.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090817_090823.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090824_090830.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090831_090906.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090907_090913.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090914_090920.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090921_090927.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_090928_091004.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091005_091011.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091012_091018.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091019_091025.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091026_091101.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091102_091108.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091109_091115.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091116_091122.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091123_091129.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091130_091206.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091207_091213.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091214_091220.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091221_091227.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_091228_100103.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_100104_100110_v2.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sc_100111_100117_v2.bc",--]]
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100118_100124.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100125_100131.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100201_100207.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100208_100214.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100215_100221.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100222_100228.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100301_100307.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100308_100314.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100315_100321.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100322_100328.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100329_100404.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100405_100411.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100412_100418.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100419_100425.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100426_100502.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100503_100509.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100510_100516.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100517_100523.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100524_100530.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100531_100606.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100607_100613.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100614_100620.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100621_100627.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100628_100704.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100705_100711.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100712_100718.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100719_100725.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100726_100801.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100802_100808.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100809_100815.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100816_100822.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100823_100829.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100830_100905.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100906_100912.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100913_100919.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100920_100926.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_100927_101003.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101004_101010.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101011_101017.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101018_101024.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101025_101031.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101101_101107.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101108_101114.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101115_101121.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101122_101128.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101129_101205.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101206_101212.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101213_101219.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101220_101226.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_101227_110102.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110103_110109.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110110_110116.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110117_110123.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110124_110130.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110131_110206.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110207_110213.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110214_110220.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110221_110227.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110228_110306.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110307_110313.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110314_110320.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110321_110327.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110328_110403.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110404_110410.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110411_110417.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110418_110424.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110425_110501.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110502_110508.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110509_110515.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110516_110522.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110523_110529.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110530_110605.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110606_110612.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110613_110619.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110620_110626.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110627_110703.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110704_110710.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110711_110717.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110718_110724.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110725_110731.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110801_110807.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110808_110814.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110815_110821.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110822_110828.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110829_110904.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110905_110911.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110912_110918.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110919_110925.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_110926_111002.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111003_111009.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111010_111016.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111017_111023.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111024_111030.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111031_111106.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111107_111113.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111114_111120.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111121_111127.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111128_111204.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111205_111211.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111212_111218.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111219_111225.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_111226_120101.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120102_120108.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120109_120115.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120116_120122.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120123_120129.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120130_120205.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120206_120212.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120213_120219.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120220_120226.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120227_120304.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120305_120311.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120312_120318.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120319_120325.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120326_120401.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120402_120408.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120409_120415.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120416_120422.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120423_120429.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120430_120506.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120507_120513.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120514_120520.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120521_120527.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120528_120603.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120604_120610.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120611_120617.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120618_120624.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120625_120701.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120702_120708.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120709_120715.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120716_120722.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120723_120729.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120730_120805.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120806_120812.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120813_120819.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120820_120826.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120827_120902.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120903_120909.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_120910_120916.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_f2_3942xxxxx.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_pred_da028b_00_eu.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sc_pred_dc041a_00.bc",
|
||||
|
||||
-- Solar array rotation kernels ~ 2gb
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_070927_070930.bc",
|
||||
--[[kernels .. "/ck/dawn_sa_071001_071007.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071008_071014.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071015_071021.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071022_071028_v2.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071029_071104.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071105_071111.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071112_071118.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071119_071125.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071126_071202.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071203_071209.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071210_071216.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071217_071223.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071224_071230.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_071231_080106.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080107_080113.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080114_080120.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080121_080127.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080128_080203.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080204_080210.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080211_080217.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080218_080224.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080225_080302.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080303_080309.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080310_080316.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080317_080323.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080324_080330.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080331_080406.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080407_080413.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080414_080420.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080421_080427.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080428_080504.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080505_080511.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080512_080518.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080519_080525.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080526_080601.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080602_080608.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080609_080615.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080616_080622.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080623_080629.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080630_080706.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080707_080713.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080714_080720.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080721_080727.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080728_080803.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080804_080810.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080811_080817.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080818_080824.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080825_080831.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080901_080907.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080908_080914.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080915_080921.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080922_080928.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_080929_081005.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081006_081012.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081013_081019.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081020_081026.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081027_081102.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081103_081109.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081110_081116.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081117_081123.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081124_081130.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081201_081207.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081208_081214.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081215_081221.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081222_081228.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_081229_090104.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090105_090111.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090112_090118.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090119_090125.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090126_090201.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090202_090208.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090209_090215.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090216_090222.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090223_090301.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090302_090308.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090309_090315.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090316_090322.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090323_090329.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090330_090405.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090406_090412.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090413_090419.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090420_090426.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090427_090503.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090504_090510.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090511_090517.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090518_090524.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090525_090531.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090601_090607.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090608_090614.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090615_090621.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090622_090628.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090629_090705.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090706_090712.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090713_090719.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090720_090726.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090727_090802.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090803_090809.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090810_090816.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090817_090823.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090824_090830.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090831_090906.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090907_090913.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090914_090920.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090921_090927.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_090928_091004.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091005_091011.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091012_091018.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091019_091025.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091026_091101.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091102_091108.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091109_091115.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091116_091122.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091123_091129.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091130_091206.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091207_091213.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091214_091220.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091221_091227.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_091228_100103.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100104_100110_v2.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100111_100117_v2.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100118_100124.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100125_100131.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100201_100207.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100208_100214.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100215_100221.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100222_100228.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100301_100307.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100308_100314.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100315_100321.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100322_100328.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100329_100404.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100405_100411.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100412_100418.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100419_100425.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100426_100502.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100503_100509.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100510_100516.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100517_100523.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100524_100530.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100531_100606.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100607_100613.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100614_100620.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100621_100627.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100628_100704.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100705_100711.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100712_100718.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100719_100725.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100726_100801.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100802_100808.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100809_100815.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100816_100822.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100823_100829.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100830_100905.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100906_100912.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100913_100919.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100920_100926.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_100927_101003.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_101004_101010.bc",
|
||||
kernels .. "/DawnKernels/ck/dawn_sa_101011_101017.bc", --]]
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101018_101024.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101025_101031.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101101_101107.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101108_101114.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101115_101121.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101122_101128.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101129_101205.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101206_101212.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101213_101219.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101220_101226.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_101227_110102.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110103_110109.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110110_110116.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110117_110123.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110124_110130.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110131_110206.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110207_110213.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110214_110220.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110221_110227.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110228_110306.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110307_110313.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110314_110320.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110321_110327.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110328_110403.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110404_110410.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110411_110417.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110418_110424.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110425_110501.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110502_110508.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110509_110515.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110516_110522.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110523_110529.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110530_110605.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110606_110612.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110613_110619.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110620_110626.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110627_110703.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110704_110710.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110711_110717.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110718_110724.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110725_110731.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110801_110807.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110808_110814.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110815_110821.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110822_110828.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110829_110904.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110905_110911.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110912_110918.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110919_110925.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_110926_111002.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111003_111009.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111010_111016.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111017_111023.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111024_111030.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111031_111106.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111107_111113.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111114_111120.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111121_111127.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111128_111204.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111205_111211.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111212_111218.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111219_111225.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_111226_120101.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120102_120108.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120109_120115.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120116_120122.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120123_120129.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120130_120205.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120206_120212.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120213_120219.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120220_120226.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120227_120304.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120305_120311.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120312_120318.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120319_120325.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120326_120401.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120402_120408.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120409_120415.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120416_120422.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120423_120429.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120430_120506.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120507_120513.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120514_120520.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120521_120527.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120528_120603.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120604_120610.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120611_120617.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120618_120624.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120625_120701.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120702_120708.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120709_120715.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120716_120722.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120723_120729.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120730_120805.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120806_120812.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120813_120819.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120820_120826.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120827_120902.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120903_120909.bc",
|
||||
-- kernels .. "/DawnKernels/ck/dawn_sa_120910_120916.bc",
|
||||
}
|
||||
|
||||
local Dawn = {
|
||||
Name = "Dawn",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "DAWN",
|
||||
Observer = "SUN",
|
||||
Kernels = KernelFiles
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "DAWN_SPACECRAFT",
|
||||
DestinationFrame = "GALACTIC",
|
||||
Kernels = KernelFiles
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Body = "DAWN",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = models .. "/mainbodydawn.obj"
|
||||
},
|
||||
ColorTexture = textures .. "/gray.png"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
}
|
||||
|
||||
-- Dawn Solar Array module 1
|
||||
local DawnSolarArray1 = {
|
||||
Name = "DawnSolar1",
|
||||
Parent = Dawn.Name,
|
||||
Transformation = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "DAWN_SA-Y",
|
||||
DestinationFrame = "DAWN_SPACECRAFT"
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Body = "DAWN",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = models .. "/solarpanelleft.obj"
|
||||
},
|
||||
ColorTexture = textures .. "/gray.png"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
}
|
||||
|
||||
-- Dawn Solar Array module 2
|
||||
local DawnSolarArray2 = {
|
||||
Name = "DawnSolar2",
|
||||
Parent = Dawn.Name,
|
||||
Transformation = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "DAWN_SA+Y",
|
||||
DestinationFrame = "DAWN_SPACECRAFT"
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Body = "DAWN",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = models .. "/solarpanelright.obj"
|
||||
},
|
||||
ColorTexture = textures .. "/gray.png"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
}
|
||||
|
||||
local DawnTrail = {
|
||||
Name = "DawnTrail",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailTrajectory",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "DAWN",
|
||||
Observer = "SUN"
|
||||
},
|
||||
Color = { 1.0, 0.8, 0.4 },
|
||||
ShowFullTrail = true,
|
||||
StartTime = "2007 SEP 26 13:28:00",
|
||||
EndTime = "2012 SEP 12 12:00:00",
|
||||
PointSize = 5,
|
||||
SampleInterval = 3600,
|
||||
TimeStampSubsampleFactor = 4,
|
||||
EnableFade = false,
|
||||
Rendering = "Lines+Points"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
}
|
||||
|
||||
-- DawnFov 1
|
||||
local DawnFramingCamera1 = {
|
||||
Name = "Dawn_framing_camera_1",
|
||||
Parent = Dawn.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "DAWN",
|
||||
Frame = "DAWN_SPACECRAFT",
|
||||
Color = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "DAWN_FC1",
|
||||
Method = "ELLIPSOID",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = { "VESTA", "CERES" }
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
}
|
||||
|
||||
local DawnFramingCamera2 = {
|
||||
Name = "Dawn_framing_camera_2",
|
||||
Parent = Dawn.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "DAWN",
|
||||
Frame = "DAWN_SPACECRAFT",
|
||||
Color = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "DAWN_FC2",
|
||||
Method = "ELLIPSOID",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = { "VESTA", "CERES" }
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/Dawn"
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
Dawn,
|
||||
DawnSolarArray1,
|
||||
DawnSolarArray2,
|
||||
DawnTrail,
|
||||
DawnFramingCamera1,
|
||||
DawnFramingCamera2
|
||||
})
|
||||
@@ -0,0 +1,8 @@
|
||||
local Kernels = asset.syncedResource({
|
||||
Name = "Dawn Kernels",
|
||||
Type = "TorrentSynchronization",
|
||||
Identifier = "dawn_kernels",
|
||||
Magnet = "magnet:?xt=urn:btih:31997fff4bffa6959c7144d24a13f5fad4604fa6&dn=DawnKernels"
|
||||
})
|
||||
|
||||
asset.export("Kernels", Kernels)
|
||||
134
data/assets/scene/solarsystem/missions/dawn/vesta.asset
Normal file
@@ -0,0 +1,134 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local kernels = asset.require('./dawn_kernels').Kernels
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Vesta Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "vesta_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local images = asset.syncedResource({
|
||||
Name = "Vesta Images",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "vesta_images",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local models = asset.syncedResource({
|
||||
Name = "Vesta Models",
|
||||
Type = "TorrentSynchronization",
|
||||
Identifier = "vesta_comet",
|
||||
Magnet = "magnet:?xt=urn:btih:4250685907FAEC6AE242485AB3E2018DE0377559&dn=VestaComet"
|
||||
})
|
||||
|
||||
local Vesta = {
|
||||
Name = "Vesta",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "VESTA",
|
||||
Observer = "SUN",
|
||||
Kernels = {
|
||||
--kernels .. "/pck/dawn_vesta_v06.tpc",
|
||||
kernels .. "/DawnKernels/spk/sb_vesta_071107.bsp"
|
||||
}
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_VESTA",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModelProjection",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = models .. "/VestaComet/VestaComet_5000.obj"
|
||||
},
|
||||
ColorTexture = textures .. "/dummy.jpg",
|
||||
Projection = {
|
||||
Sequence = images,
|
||||
SequenceType = "image-sequence",
|
||||
Observer = "DAWN",
|
||||
Target = "VESTA",
|
||||
Aberration = "NONE",
|
||||
|
||||
DataInputTranslation = {
|
||||
Instrument = {
|
||||
-- FC1 = {
|
||||
-- DetectorType = "Camera",
|
||||
-- Spice = { "DAWN_FC1" },
|
||||
-- },
|
||||
FC2 = {
|
||||
DetectorType = "Camera",
|
||||
Spice = { "DAWN_FC2" }
|
||||
}
|
||||
},
|
||||
Target = {
|
||||
Read = {
|
||||
"TARGET_NAME",
|
||||
"INSTRUMENT_HOST_NAME",
|
||||
"INSTRUMENT_ID",
|
||||
"START_TIME",
|
||||
"STOP_TIME",
|
||||
--"DETECTOR_TYPE",
|
||||
--"SEQUENCE_ID"
|
||||
},
|
||||
Convert = {
|
||||
VESTA = { "VESTA" },
|
||||
DAWN = { "DAWN" },
|
||||
--FRAMINGCAMERA1 = { "DAWN_FC1" },
|
||||
FRAMINGCAMERA2 = { "DAWN_FC2" },
|
||||
--FC1 = { "DAWN_FC1" },
|
||||
FC2 = { "DAWN_FC2" }
|
||||
}
|
||||
}
|
||||
},
|
||||
Instrument = {
|
||||
Name = "DAWN_FC2",
|
||||
Method = "ELLIPSOID",
|
||||
Aberration = "NONE",
|
||||
Fovy = 5.46,
|
||||
Aspect = 1
|
||||
},
|
||||
|
||||
--[[ Instrument = {
|
||||
Name = "DAWN_FC1",
|
||||
Method = "ELLIPSOID",
|
||||
Aberration = "NONE",
|
||||
Fovy = 5.46,
|
||||
Aspect = 1,
|
||||
Near = 0.2,
|
||||
Far = 10000
|
||||
},--]]
|
||||
PotentialTargets = { "VESTA" }
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Asteroid Belt/Vesta"
|
||||
}
|
||||
|
||||
local VestaTrail = {
|
||||
Name = "VestaTrail",
|
||||
Parent = transforms.SolarSystemBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailOrbit",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "VESTA",
|
||||
Observer = "SUN"
|
||||
},
|
||||
Color = { 0.7, 0.8, 0.7 },
|
||||
StartTime = "2007 JUL 20 12:00:00",
|
||||
EndTime = "2018 JAN 22 12:00:00",
|
||||
Period = 1325.0,
|
||||
Resolution = 3600 * 24
|
||||
},
|
||||
GuiPath = "/Solar System/Asteroid Belt/Vesta"
|
||||
}
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { Vesta, VestaTrail })
|
||||
188
data/assets/scene/solarsystem/missions/juno/juno.asset
Normal file
@@ -0,0 +1,188 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/planets/jupiter/transforms')
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Juno Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "juno_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local model = asset.syncedResource({
|
||||
Name = "Juno Model",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "juno_model",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local kernels = asset.syncedResource({
|
||||
Name = "Juno Kernels",
|
||||
Type = "TorrentSynchronization",
|
||||
Identifier = "juno_kernels",
|
||||
Magnet = "magnet:?xt=urn:btih:5A14C9E647C689A54BAB7A7DAEB5F312E8199C91&dn=Juno&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce"
|
||||
})
|
||||
|
||||
local JunoKernels = {
|
||||
kernels .. "/Juno/JNO_SCLKSCET.00039.tsc",
|
||||
kernels .. "/Juno/juno_jade_v00.ti",
|
||||
kernels .. "/Juno/juno_jedi_v00.ti",
|
||||
kernels .. "/Juno/juno_jiram_v01.ti",
|
||||
kernels .. "/Juno/juno_junocam_v00.ti",
|
||||
kernels .. "/Juno/juno_mag_v00.ti",
|
||||
kernels .. "/Juno/juno_mwr_v01.ti",
|
||||
kernels .. "/Juno/juno_struct_v01.ti",
|
||||
kernels .. "/Juno/juno_uvs_v00.ti",
|
||||
kernels .. "/Juno/juno_v08.tf",
|
||||
kernels .. "/Juno/juno_waves_v00.ti",
|
||||
kernels .. "/Juno/juno_mwr_v01.ti",
|
||||
kernels .. "/Juno/spk_merge_110805_171017_130515.bsp",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_110930_111028_jc003c01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_111028_111125_jc004b00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_111125_111223_jc005b00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_111223_120127_jc006a02_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120127_120217_jc007a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120217_120316_jc008b00_v02.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120316_120413_jc009a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120413_120511_jc010a04_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120511_120608_jc011a01_v02.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120608_120706_jc012b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120706_120802_jc013a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120802_120824_jc014b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120824_120928_jc015m00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120919_120928_jc015o00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_120928_121026_jc016c03_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_121026_121123_jc017a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_121123_121221_jc018b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_121221_130118_jc019a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130118_130215_jc020b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130315_130412_jc022b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130412_130510_jc023b03_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130510_130607_jc024a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130607_130705_jc025a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130705_130802_jc026a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130726_131020_jx024a02_EFB_v03.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130802_130830_jc027a02_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130830_130927_jc028a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130926_131025_jc029a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_130927_131025_jc029c01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_131022_131025_jc029f00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_131025_131122_jc030b04_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_131122_131220_jc031b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_131220_140124_jc032a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140124_140214_jc033a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140214_140314_jc034b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140314_140411_jc035a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140411_140509_jc036b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140509_140606_jc037b02_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140606_140704_jc038a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140704_140801_jc039b01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140801_140829_jc040a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140829_140926_jc041a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_140926_141024_jc042a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_141024_141121_jc043a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_141105_141121_jc043m01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_141107_141121_jc043s01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_141121_141219_jc044a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_141219_150123_jc045a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150123_150213_jc046a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150213_150313_jc047a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150312_150409_jc048a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150410_150508_jc049a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150508_150605_jc050a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150605_150703_jc051a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150703_150731_jc052a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150731_150828_jc053a01_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150805_150828_jc053m00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150807_150828_jc053s00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150828_150924_jc054a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_150924_151023_jc055a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_151023_151120_jc056a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_151120_151218_jc057a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_151218_160115_jc058a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160115_160212_jc059a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160212_160311_jc060a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160311_160408_jc061a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160408_160506_jc062a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160506_160603_jc063a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160603_160630_jc064a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160708_160729_jm0001rp_v02.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160729_160826_jm0002rp_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160827_160920_jm0003a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_160924_161019_jm0004a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_161014_161115_jm0005a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_161022_161115_jm0005b00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_161115_161213_jx0405rp_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_161210_170115_jm0031a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170115_170201_jm0032a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170201_170309_jm0041a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170309_170326_jm0042rp_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170326_170427_jm0051rp_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170427_170518_jm0052rp_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170518_170615_jm0061a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170615_170710_jm0062a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170710_170805_jm0071a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170805_170831_jm0072a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170831_170927_jm0081a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_170927_171023_jm0082a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_171023_171030_jm0091a00_v01.bc",
|
||||
kernels .. "/Juno/ck/juno_sc_prl_171023_171030_jm0091a00_v01.bc"
|
||||
}
|
||||
|
||||
local RotationMatrix = {
|
||||
0, 1, 0,
|
||||
0, 0, 1,
|
||||
1, 0, 0
|
||||
}
|
||||
|
||||
local Juno = {
|
||||
Name = "Juno",
|
||||
Parent = transforms.JupiterBarycenter.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUNO",
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = JunoKernels
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "JUNO_SPACECRAFT",
|
||||
DestinationFrame = "GALACTIC",
|
||||
Kernels = JunoKernels
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = model .. "/Juno.obj"
|
||||
},
|
||||
ColorTexture = textures .. "/gray.png",
|
||||
ModelTransform = RotationMatrix
|
||||
},
|
||||
GuiName = "/Solar System/Missions/Juno"
|
||||
}
|
||||
|
||||
local JunoTrail = {
|
||||
Name = "JunoTrail",
|
||||
Parent = "JupiterBarycenter",
|
||||
Renderable = {
|
||||
Type = "RenderableTrailTrajectory",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUNO",
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = JunoKernels
|
||||
},
|
||||
Color = { 0.70, 0.50, 0.20 },
|
||||
StartTime = "2016 JUL 01",
|
||||
EndTime = "2016 DEC 13",
|
||||
SampleInterval = 2
|
||||
},
|
||||
GuiName = "/Solar System/Missions/Juno"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { Juno, JunoTrail })
|
||||
129
data/assets/scene/solarsystem/missions/newhorizons/charon.asset
Normal file
@@ -0,0 +1,129 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('./transforms')
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local kernels = asset.require('./kernels')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Charon Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "charon_textures",
|
||||
Version = 3
|
||||
})
|
||||
|
||||
local charonRadius = 6.035E5
|
||||
|
||||
local Charon = {
|
||||
Name = "Charon",
|
||||
Parent = transforms.PlutoBarycenter.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "CHARON",
|
||||
Observer = "PLUTO BARYCENTER"
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_CHARON",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlanetProjection",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = charonRadius,
|
||||
Segments = 350
|
||||
},
|
||||
ColorTexturePaths = {
|
||||
textures .. "/NH_Charon_mosaic.png",
|
||||
textures .. "/NH_Charon_mosaic_8192.png"
|
||||
},
|
||||
HeightTexturePaths = {
|
||||
textures .. "/NH_Charon_DTM.png",
|
||||
textures .. "/NH_Charon_DTM_8192.png"
|
||||
},
|
||||
Projection = {
|
||||
Observer = "NEW HORIZONS",
|
||||
Target = "CHARON",
|
||||
Aberration = "NONE",
|
||||
AspectRatio = 2,
|
||||
|
||||
Instrument = {
|
||||
Name = "NH_LORRI",
|
||||
Method = "ELLIPSOID",
|
||||
Aberration = "NONE",
|
||||
Fovy = 0.2907,
|
||||
Aspect = 1,
|
||||
Near = 0.2,
|
||||
Far = 10000
|
||||
},
|
||||
|
||||
PotentialTargets = {
|
||||
"PLUTO",
|
||||
"CHARON"
|
||||
}
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
local CharonText = {
|
||||
Name = "CharonText",
|
||||
Parent = Charon.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = {0, -1000000.0, 0}
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = 10^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = textures .. "/Charon-Text.png",
|
||||
BlendMode = "Additive"
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
local CharonShadow = {
|
||||
Name = "CharonShadow",
|
||||
Parent = Charon.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableShadowCylinder",
|
||||
TerminatorType = "PENUMBRAL",
|
||||
LightSource = "SUN",
|
||||
Observer = "NEW HORIZONS",
|
||||
Body = "CHARON",
|
||||
BodyFrame = "IAU_CHARON",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
local CharonTrail = {
|
||||
Name = "CharonTrail",
|
||||
Parent = transforms.PlutoBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailOrbit",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "CHARON",
|
||||
Observer = "PLUTO BARYCENTER"
|
||||
},
|
||||
Color = { 0.00, 0.62, 1.00 },
|
||||
Period = 6.38725,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
Charon,
|
||||
CharonText,
|
||||
CharonShadow,
|
||||
CharonTrail
|
||||
})
|
||||
351
data/assets/scene/solarsystem/missions/newhorizons/fov.asset
Normal file
@@ -0,0 +1,351 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('./transforms')
|
||||
|
||||
|
||||
|
||||
local LorriOffset = { -6.626, -4.1, -3.23 }
|
||||
local RalphOffset = { -6.9, -4.6, 8.7 }
|
||||
local AliceOffset = { -7.9, -1.7, 8.3 }
|
||||
local RexOffset = { 0, 0, 0 }
|
||||
|
||||
local Lorri = {
|
||||
Name = "NH_LORRI",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "NEW HORIZONS",
|
||||
Frame = "NH_SPACECRAFT",
|
||||
Color = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "NH_LORRI",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
PotentialTargets = {
|
||||
"Pluto",
|
||||
"Charon",
|
||||
-- "Jupiter", "Io", "Europa", "Ganymede", "Callisto"
|
||||
}
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = LorriOffset
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
}
|
||||
|
||||
local RalphLeisa = {
|
||||
Name = "NH_RALPH_LEISA",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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
|
||||
}
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
}
|
||||
|
||||
local RalphMvicPan1 = {
|
||||
Name = "NH_RALPH_MVIC_PAN1",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local RalphMvicPan2 = {
|
||||
Name = "NH_RALPH_MVIC_PAN2",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local RalphMvicRed = {
|
||||
Name = "NH_RALPH_MVIC_RED",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local RalphMvicBlue = {
|
||||
Name = "NH_RALPH_MVIC_BLUE",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local RalphMvicFt = {
|
||||
Name = "NH_RALPH_MVIC_FT",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local RalphMvicMethane = {
|
||||
Name = "NH_RALPH_MVIC_METHANE",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local RalphMvicNir = {
|
||||
Name = "NH_RALPH_MVIC_NIR",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local AliceAirglow = {
|
||||
Name = "NH_ALICE_AIRGLOW",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local AliceSoc = {
|
||||
Name = "NH_ALICE_SOC",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
local Rex = {
|
||||
Name = "NH_REX",
|
||||
Parent = transforms.NewHorizonsPosition.Name,
|
||||
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"
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
Lorri,
|
||||
RalphLeisa,
|
||||
RalphMvicPan1,
|
||||
RalphMvicPan2,
|
||||
RalphMvicRed,
|
||||
RalphMvicBlue,
|
||||
RalphMvicFt,
|
||||
RalphMvicMethane,
|
||||
RalphMvicNir,
|
||||
AliceAirglow,
|
||||
AliceSoc,
|
||||
Rex
|
||||
})
|
||||
@@ -0,0 +1,88 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('./transforms')
|
||||
local kernels = asset.require('./kernels').Kernels
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Hydra Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "hydra_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local Hydra = {
|
||||
Name = "Hydra",
|
||||
Parent = transforms.PlutoBarycenter.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "HYDRA",
|
||||
Observer = "PLUTO BARYCENTER",
|
||||
Kernels = kernels .. "/new_horizons/spk/NavSE_plu047_od122.bsp"
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_HYDRA",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlanet",
|
||||
Frame = "IAU_PLUTO",
|
||||
Body = "HYDRA",
|
||||
Radius = hydra_radius,
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = 0.53E5,
|
||||
Segments = 100
|
||||
},
|
||||
ColorTexture = textures .. "/gray.jpg"
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
local HydraText = {
|
||||
Name = "HydraText",
|
||||
Parent = Hydra.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = { 1000000, 0, 1000000 },
|
||||
},
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = 10.0^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = textures .. "/Hydra-Text.png",
|
||||
BlendMode = "Additive"
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
local HydraTrail = {
|
||||
Name = "HydraTrail",
|
||||
Parent = transforms.PlutoBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailOrbit",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "HYDRA",
|
||||
Observer = "PLUTO BARYCENTER",
|
||||
},
|
||||
Color = { 0.00, 0.62, 1.00 },
|
||||
Period = 38.20177,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
Hydra,
|
||||
HydraText,
|
||||
HydraTrail
|
||||
})
|
||||
@@ -0,0 +1,84 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('./transforms')
|
||||
local kernels = asset.require('./kernels')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Kerberos Textures",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "kerberos_textures",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local Kerberos = {
|
||||
Name = "Kerberos",
|
||||
Parent = transforms.PlutoBarycenter.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "KERBEROS",
|
||||
Observer = "PLUTO BARYCENTER",
|
||||
Kernels = kernels.Kernels .. "/new_horizons/spk/NavSE_plu047_od122.bsp"
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_KERBEROS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlanet",
|
||||
Frame = "IAU_PLUTO",
|
||||
Body = "KERBEROS",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = 0.1E5,
|
||||
Segments = 100
|
||||
},
|
||||
ColorTexture = textures .. "/gray.jpg"
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
local KerberosText = {
|
||||
Name = "KerberosText",
|
||||
Parent = Kerberos.Name,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = { 1000000.0, 0, 1000000.0 }
|
||||
},
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = 10^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = textures .. "/Kerberos-Text.png"
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
local KerberosTrail = {
|
||||
Name = "KerberosTrail",
|
||||
Parent = transforms.PlutoBarycenter.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailOrbit",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "KERBEROS",
|
||||
Observer = "PLUTO BARYCENTER"
|
||||
},
|
||||
Color = { 0.00, 0.62, 1.00 },
|
||||
Period = 32.16756,
|
||||
Resolution = 1000
|
||||
},
|
||||
GuiPath = "/Solar System/Dwarf Planets/Pluto"
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
Kerberos,
|
||||
KerberosText,
|
||||
KerberosTrail
|
||||
})
|
||||
@@ -0,0 +1,46 @@
|
||||
local Kernels = asset.syncedResource({
|
||||
Name = "New Horizons Kernels",
|
||||
Type = "TorrentSynchronization",
|
||||
Identifier = "newhorizons_kernels",
|
||||
Magnet = "magnet:?xt=urn:btih:4AF38BDD42C5B29A0EF1CE4AB274CD91C017B8CC&dn=new_horizons&tr=udp%3a%2f%2ftracker.ccc.de%3a80%2fannounce&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce"
|
||||
})
|
||||
|
||||
local NewHorizonsKernels = {
|
||||
Kernels .. "/new_horizons/spk/nh_pred_20141201_20190301_od122.bsp",
|
||||
Kernels .. "/new_horizons/spk/NavSE_plu047_od122.bsp",
|
||||
Kernels .. "/new_horizons/spk/NavPE_de433_od122.bsp",
|
||||
|
||||
Kernels .. "/new_horizons/ck/nh_scispi_2015_pred.bc",
|
||||
Kernels .. "/new_horizons/ck/nh_scispi_2015_recon.bc",
|
||||
Kernels .. "/new_horizons/ck/nh_lorri_wcs.bc",
|
||||
|
||||
Kernels .. "/new_horizons/smithed_pc_and_sp/PLU_LORRI_ALL_161216.bc",
|
||||
|
||||
Kernels .. "/new_horizons/sclk/new-horizons_1121.tsc",
|
||||
|
||||
Kernels .. "/new_horizons/pck/nh_targets_v001.tpc",
|
||||
Kernels .. "/new_horizons/pck/nh_pcnh_005.tpc",
|
||||
|
||||
Kernels .. "/new_horizons/fk/nh_v220.tf",
|
||||
Kernels .. "/new_horizons/ik/nh_allinstruments_v002.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_alice_v200.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_lorri_v201.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_pepssi_v110.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_ralph_v100.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_rex_v100.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_sdc_v101.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_swap_v100.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_astr_v000.ti",
|
||||
Kernels .. "/new_horizons/ik/nh_fss_v000.ti",
|
||||
Kernels .. "/new_horizons/fk/nh_soc_misc_v001.tf",
|
||||
Kernels .. "/new_horizons/spk/nh_stars.bsp",
|
||||
}
|
||||
|
||||
local PlutoKernels = {
|
||||
Kernels .. "/new_horizons/spk/NavPE_de433_od122.bsp",
|
||||
Kernels .. "/new_horizons/spk/NavSE_plu047_od122.bsp"
|
||||
}
|
||||
|
||||
asset.export("Kernels", Kernels)
|
||||
asset.export("NewHorizonsKernels", NewHorizonsKernels)
|
||||
asset.export("PlutoKernels", PlutoKernels)
|
||||
@@ -0,0 +1,28 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local transforms = asset.require('./transforms')
|
||||
local NewHorizonsModel = asset.require('./model')
|
||||
|
||||
|
||||
|
||||
local textures = NewHorizonsModel.NewHorizonsTextures
|
||||
local models = NewHorizonsModel.NewHorizonsModels
|
||||
|
||||
local Labels = {
|
||||
Name = "Labels",
|
||||
Parent = NewHorizonsModel.NewHorizons.Name,
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Body = "NEW HORIZONS",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = models .. "/Labels.obj"
|
||||
},
|
||||
ColorTexture = textures .. "/labels.png"
|
||||
},
|
||||
GuiPath = "/Solar System/Missions/New Horizons"
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { Labels })
|
||||