mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-07 12:10:52 -06:00
648 lines
21 KiB
C++
648 lines
21 KiB
C++
/*****************************************************************************************
|
|
* *
|
|
* OpenSpace *
|
|
* *
|
|
* Copyright (c) 2014-2021 *
|
|
* *
|
|
* 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/globals.h>
|
|
|
|
#include <openspace/engine/downloadmanager.h>
|
|
#include <openspace/engine/configuration.h>
|
|
#include <openspace/engine/globalscallbacks.h>
|
|
#include <openspace/engine/moduleengine.h>
|
|
#include <openspace/engine/openspaceengine.h>
|
|
#include <openspace/engine/syncengine.h>
|
|
#include <openspace/engine/virtualpropertymanager.h>
|
|
#include <openspace/engine/windowdelegate.h>
|
|
#include <openspace/interaction/interactionmonitor.h>
|
|
#include <openspace/interaction/keybindingmanager.h>
|
|
#include <openspace/interaction/joystickinputstate.h>
|
|
#include <openspace/interaction/websocketinputstate.h>
|
|
#include <openspace/interaction/navigationhandler.h>
|
|
#include <openspace/interaction/sessionrecording.h>
|
|
#include <openspace/interaction/shortcutmanager.h>
|
|
#include <openspace/mission/missionmanager.h>
|
|
#include <openspace/network/parallelpeer.h>
|
|
#include <openspace/properties/propertyowner.h>
|
|
#include <openspace/rendering/dashboard.h>
|
|
#include <openspace/rendering/deferredcastermanager.h>
|
|
#include <openspace/rendering/luaconsole.h>
|
|
#include <openspace/rendering/raycastermanager.h>
|
|
#include <openspace/rendering/renderengine.h>
|
|
#include <openspace/rendering/screenspacerenderable.h>
|
|
#include <openspace/scene/profile.h>
|
|
#include <openspace/scripting/scriptengine.h>
|
|
#include <openspace/scripting/scriptscheduler.h>
|
|
#include <openspace/util/memorymanager.h>
|
|
#include <openspace/util/timemanager.h>
|
|
#include <openspace/util/versionchecker.h>
|
|
#include <ghoul/misc/assert.h>
|
|
#include <ghoul/glm.h>
|
|
#include <ghoul/font/fontmanager.h>
|
|
#include <ghoul/misc/profiling.h>
|
|
#include <ghoul/misc/sharedmemory.h>
|
|
#include <ghoul/opengl/texture.h>
|
|
#include <array>
|
|
|
|
namespace openspace {
|
|
namespace {
|
|
// This is kind of weird. Optimally, we would want to use the std::array also on
|
|
// non-Windows platforms but that causes some issues with nullptrs being thrown
|
|
// around and invalid accesses. Switching this to a std::vector with dynamic memory
|
|
// allocation works on Linux, but it fails on Windows in some SGCT function and on Mac
|
|
// in some random global randoms
|
|
#ifdef WIN32
|
|
constexpr const int TotalSize =
|
|
sizeof(ghoul::fontrendering::FontManager) +
|
|
sizeof(Dashboard) +
|
|
sizeof(DeferredcasterManager) +
|
|
sizeof(DownloadManager) +
|
|
sizeof(LuaConsole) +
|
|
sizeof(MemoryManager) +
|
|
sizeof(MissionManager) +
|
|
sizeof(ModuleEngine) +
|
|
sizeof(OpenSpaceEngine) +
|
|
sizeof(ParallelPeer) +
|
|
sizeof(RaycasterManager) +
|
|
sizeof(RenderEngine) +
|
|
sizeof(std::vector<std::unique_ptr<ScreenSpaceRenderable>>) +
|
|
sizeof(SyncEngine) +
|
|
sizeof(TimeManager) +
|
|
sizeof(VersionChecker) +
|
|
sizeof(VirtualPropertyManager) +
|
|
sizeof(WindowDelegate) +
|
|
sizeof(configuration::Configuration) +
|
|
sizeof(interaction::InteractionMonitor) +
|
|
sizeof(interaction::WebsocketInputStates) +
|
|
sizeof(interaction::KeybindingManager) +
|
|
sizeof(interaction::NavigationHandler) +
|
|
sizeof(interaction::SessionRecording) +
|
|
sizeof(interaction::ShortcutManager) +
|
|
sizeof(properties::PropertyOwner) +
|
|
sizeof(properties::PropertyOwner) +
|
|
sizeof(scripting::ScriptEngine) +
|
|
sizeof(scripting::ScriptScheduler) +
|
|
sizeof(Profile);
|
|
|
|
std::array<std::byte, TotalSize> DataStorage;
|
|
#endif // WIN32
|
|
} // namespace
|
|
} // namespace openspace
|
|
|
|
namespace openspace::global {
|
|
|
|
void create() {
|
|
ZoneScoped
|
|
|
|
callback::create();
|
|
|
|
#ifdef WIN32
|
|
std::fill(DataStorage.begin(), DataStorage.end(), std::byte(0));
|
|
std::byte* currentPos = DataStorage.data();
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
fontManager = new (currentPos) ghoul::fontrendering::FontManager({ 1536, 1536, 1 });
|
|
ghoul_assert(fontManager, "No fontManager");
|
|
currentPos += sizeof(ghoul::fontrendering::FontManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
fontManager = new ghoul::fontrendering::FontManager({ 1536, 1536, 1 });
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
dashboard = new (currentPos) Dashboard;
|
|
ghoul_assert(dashboard, "No dashboard");
|
|
currentPos += sizeof(Dashboard);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
dashboard = new Dashboard;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
deferredcasterManager = new (currentPos) DeferredcasterManager;
|
|
ghoul_assert(deferredcasterManager, "No deferredcasterManager");
|
|
currentPos += sizeof(DeferredcasterManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
deferredcasterManager = new DeferredcasterManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
downloadManager = new (currentPos) DownloadManager;
|
|
ghoul_assert(downloadManager, "No downloadManager");
|
|
currentPos += sizeof(DownloadManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
downloadManager = new DownloadManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
luaConsole = new (currentPos) LuaConsole;
|
|
ghoul_assert(luaConsole, "No luaConsole");
|
|
currentPos += sizeof(LuaConsole);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
luaConsole = new LuaConsole;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
memoryManager = new (currentPos) MemoryManager;
|
|
ghoul_assert(memoryManager, "No memoryManager");
|
|
currentPos += sizeof(MemoryManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
memoryManager = new MemoryManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
missionManager = new (currentPos) MissionManager;
|
|
ghoul_assert(missionManager, "No missionManager");
|
|
currentPos += sizeof(MissionManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
missionManager = new MissionManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
moduleEngine = new (currentPos) ModuleEngine;
|
|
ghoul_assert(moduleEngine, "No moduleEngine");
|
|
currentPos += sizeof(ModuleEngine);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
moduleEngine = new ModuleEngine;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
openSpaceEngine = new (currentPos) OpenSpaceEngine;
|
|
ghoul_assert(openSpaceEngine, "No openSpaceEngine");
|
|
currentPos += sizeof(OpenSpaceEngine);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
openSpaceEngine = new OpenSpaceEngine;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
parallelPeer = new (currentPos) ParallelPeer;
|
|
ghoul_assert(parallelPeer, "No parallelPeer");
|
|
currentPos += sizeof(ParallelPeer);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
parallelPeer = new ParallelPeer;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
raycasterManager = new (currentPos) RaycasterManager;
|
|
ghoul_assert(raycasterManager, "No raycasterManager");
|
|
currentPos += sizeof(RaycasterManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
raycasterManager = new RaycasterManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
renderEngine = new (currentPos) RenderEngine;
|
|
ghoul_assert(renderEngine, "No renderEngine");
|
|
currentPos += sizeof(RenderEngine);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
renderEngine = new RenderEngine;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
screenSpaceRenderables =
|
|
new (currentPos) std::vector<std::unique_ptr<ScreenSpaceRenderable>>;
|
|
ghoul_assert(screenSpaceRenderables, "No screenSpaceRenderables");
|
|
currentPos += sizeof(std::vector<std::unique_ptr<ScreenSpaceRenderable>>);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
screenSpaceRenderables = new std::vector<std::unique_ptr<ScreenSpaceRenderable>>;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
syncEngine = new (currentPos) SyncEngine(4096);
|
|
ghoul_assert(syncEngine, "No syncEngine");
|
|
currentPos += sizeof(SyncEngine);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
syncEngine = new SyncEngine(4096);
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
timeManager = new (currentPos) TimeManager;
|
|
ghoul_assert(timeManager, "No timeManager");
|
|
currentPos += sizeof(TimeManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
timeManager = new TimeManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
versionChecker = new (currentPos) VersionChecker;
|
|
ghoul_assert(versionChecker, "No versionChecker");
|
|
currentPos += sizeof(VersionChecker);
|
|
#else
|
|
versionChecker = new VersionChecker;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
virtualPropertyManager = new (currentPos) VirtualPropertyManager;
|
|
ghoul_assert(virtualPropertyManager, "No virtualPropertyManager");
|
|
currentPos += sizeof(VirtualPropertyManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
virtualPropertyManager = new VirtualPropertyManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
windowDelegate = new (currentPos) WindowDelegate;
|
|
ghoul_assert(windowDelegate, "No windowDelegate");
|
|
currentPos += sizeof(WindowDelegate);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
windowDelegate = new WindowDelegate;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
configuration = new (currentPos) configuration::Configuration;
|
|
ghoul_assert(configuration, "No configuration");
|
|
currentPos += sizeof(configuration::Configuration);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
configuration = new configuration::Configuration;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
interactionMonitor = new (currentPos) interaction::InteractionMonitor;
|
|
ghoul_assert(interactionMonitor, "No interactionMonitor");
|
|
currentPos += sizeof(interaction::InteractionMonitor);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
interactionMonitor = new interaction::InteractionMonitor;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
joystickInputStates = new (currentPos) interaction::JoystickInputStates;
|
|
ghoul_assert(joystickInputStates, "No joystickInputStates");
|
|
currentPos += sizeof(interaction::JoystickInputStates);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
joystickInputStates = new interaction::JoystickInputStates;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
websocketInputStates = new (currentPos) interaction::WebsocketInputStates;
|
|
ghoul_assert(websocketInputStates, "No websocketInputStates");
|
|
currentPos += sizeof(interaction::WebsocketInputStates);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
websocketInputStates = new interaction::WebsocketInputStates;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
keybindingManager = new (currentPos) interaction::KeybindingManager;
|
|
ghoul_assert(keybindingManager, "No keybindingManager");
|
|
currentPos += sizeof(interaction::KeybindingManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
keybindingManager = new interaction::KeybindingManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
navigationHandler = new (currentPos) interaction::NavigationHandler;
|
|
ghoul_assert(navigationHandler, "No navigationHandler");
|
|
currentPos += sizeof(interaction::NavigationHandler);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
navigationHandler = new interaction::NavigationHandler;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
sessionRecording = new (currentPos) interaction::SessionRecording(true);
|
|
ghoul_assert(sessionRecording, "No sessionRecording");
|
|
currentPos += sizeof(interaction::SessionRecording);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
sessionRecording = new interaction::SessionRecording(true);
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
shortcutManager = new (currentPos) interaction::ShortcutManager;
|
|
ghoul_assert(shortcutManager, "No shortcutManager");
|
|
currentPos += sizeof(interaction::ShortcutManager);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
shortcutManager = new interaction::ShortcutManager;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
rootPropertyOwner = new (currentPos) properties::PropertyOwner({ "" });
|
|
ghoul_assert(rootPropertyOwner, "No rootPropertyOwner");
|
|
currentPos += sizeof(properties::PropertyOwner);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
rootPropertyOwner = new properties::PropertyOwner({ "" });
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
screenSpaceRootPropertyOwner =
|
|
new (currentPos) properties::PropertyOwner({ "ScreenSpace" });
|
|
ghoul_assert(screenSpaceRootPropertyOwner, "No screenSpaceRootPropertyOwner");
|
|
currentPos += sizeof(properties::PropertyOwner);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
screenSpaceRootPropertyOwner = new properties::PropertyOwner({ "ScreenSpace" });
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
scriptEngine = new (currentPos) scripting::ScriptEngine;
|
|
ghoul_assert(scriptEngine, "No scriptEngine");
|
|
currentPos += sizeof(scripting::ScriptEngine);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
scriptEngine = new scripting::ScriptEngine;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
scriptScheduler = new (currentPos) scripting::ScriptScheduler;
|
|
ghoul_assert(scriptScheduler, "No scriptScheduler");
|
|
currentPos += sizeof(scripting::ScriptScheduler);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
scriptScheduler = new scripting::ScriptScheduler;
|
|
#endif // WIN32
|
|
|
|
#ifdef WIN32
|
|
profile = new (currentPos) Profile;
|
|
ghoul_assert(profile, "No profile");
|
|
//currentPos += sizeof(Profile);
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
profile = new Profile;
|
|
#endif // WIN32
|
|
}
|
|
|
|
void initialize() {
|
|
ZoneScoped
|
|
|
|
rootPropertyOwner->addPropertySubOwner(global::moduleEngine);
|
|
|
|
navigationHandler->setPropertyOwner(global::rootPropertyOwner);
|
|
// New property subowners also have to be added to the ImGuiModule callback!
|
|
rootPropertyOwner->addPropertySubOwner(global::navigationHandler);
|
|
rootPropertyOwner->addPropertySubOwner(global::interactionMonitor);
|
|
rootPropertyOwner->addPropertySubOwner(global::sessionRecording);
|
|
rootPropertyOwner->addPropertySubOwner(global::timeManager);
|
|
|
|
rootPropertyOwner->addPropertySubOwner(global::renderEngine);
|
|
rootPropertyOwner->addPropertySubOwner(global::screenSpaceRootPropertyOwner);
|
|
|
|
rootPropertyOwner->addPropertySubOwner(global::parallelPeer);
|
|
rootPropertyOwner->addPropertySubOwner(global::luaConsole);
|
|
rootPropertyOwner->addPropertySubOwner(global::dashboard);
|
|
|
|
syncEngine->addSyncable(global::scriptEngine);
|
|
}
|
|
|
|
void initializeGL() {
|
|
ZoneScoped
|
|
|
|
}
|
|
|
|
void destroy() {
|
|
LDEBUGC("Globals", "Destroying 'Profile'");
|
|
#ifdef WIN32
|
|
profile->~Profile();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete profile;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'ScriptScheduler'");
|
|
#ifdef WIN32
|
|
scriptScheduler->~ScriptScheduler();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete scriptScheduler;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'ScriptEngine'");
|
|
#ifdef WIN32
|
|
scriptEngine->~ScriptEngine();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete scriptEngine;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'ScreenSpace Root Owner'");
|
|
#ifdef WIN32
|
|
screenSpaceRootPropertyOwner->~PropertyOwner();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete screenSpaceRootPropertyOwner;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'Root Owner'");
|
|
#ifdef WIN32
|
|
rootPropertyOwner->~PropertyOwner();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete rootPropertyOwner;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'ShortcutManager'");
|
|
#ifdef WIN32
|
|
shortcutManager->~ShortcutManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete shortcutManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'SessionRecording'");
|
|
#ifdef WIN32
|
|
sessionRecording->~SessionRecording();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete sessionRecording;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'NavigationHandler'");
|
|
#ifdef WIN32
|
|
navigationHandler->~NavigationHandler();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete navigationHandler;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'KeybindingManager'");
|
|
#ifdef WIN32
|
|
keybindingManager->~KeybindingManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete keybindingManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'WebsocketInputStates'");
|
|
#ifdef WIN32
|
|
websocketInputStates->~WebsocketInputStates();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete websocketInputStates;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'JoystickInputStates'");
|
|
#ifdef WIN32
|
|
joystickInputStates->~JoystickInputStates();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete joystickInputStates;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'InteractionMonitor'");
|
|
#ifdef WIN32
|
|
interactionMonitor->~InteractionMonitor();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete interactionMonitor;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'Configuration'");
|
|
#ifdef WIN32
|
|
configuration->~Configuration();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete configuration;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'WindowDelegate'");
|
|
#ifdef WIN32
|
|
windowDelegate->~WindowDelegate();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete windowDelegate;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'VirtualPropertyManager'");
|
|
#ifdef WIN32
|
|
virtualPropertyManager->~VirtualPropertyManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete virtualPropertyManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'VersionChecker'");
|
|
#ifdef WIN32
|
|
versionChecker->~VersionChecker();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete versionChecker;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'TimeManager'");
|
|
#ifdef WIN32
|
|
timeManager->~TimeManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete timeManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'SyncEngine'");
|
|
#ifdef WIN32
|
|
syncEngine->~SyncEngine();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete syncEngine;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'ScreenSpaceRenderables'");
|
|
#ifdef WIN32
|
|
screenSpaceRenderables->~vector();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete screenSpaceRenderables;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'RenderEngine'");
|
|
#ifdef WIN32
|
|
renderEngine->~RenderEngine();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete renderEngine;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'RaycasterManager'");
|
|
#ifdef WIN32
|
|
raycasterManager->~RaycasterManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete raycasterManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'ParallelPeer'");
|
|
#ifdef WIN32
|
|
parallelPeer->~ParallelPeer();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete parallelPeer;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'OpenSpaceEngine'");
|
|
#ifdef WIN32
|
|
openSpaceEngine->~OpenSpaceEngine();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete openSpaceEngine;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'ModuleEngine'");
|
|
#ifdef WIN32
|
|
moduleEngine->~ModuleEngine();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete moduleEngine;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'MissionManager'");
|
|
#ifdef WIN32
|
|
missionManager->~MissionManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete missionManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'MemoryManager'");
|
|
#ifdef WIN32
|
|
memoryManager->~MemoryManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete memoryManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'LuaConsole'");
|
|
#ifdef WIN32
|
|
luaConsole->~LuaConsole();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete luaConsole;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'DownloadManager'");
|
|
#ifdef WIN32
|
|
downloadManager->~DownloadManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete downloadManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'DeferredcasterManager'");
|
|
#ifdef WIN32
|
|
deferredcasterManager->~DeferredcasterManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete deferredcasterManager;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'Dashboard'");
|
|
#ifdef WIN32
|
|
dashboard->~Dashboard();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete dashboard;
|
|
#endif // WIN32
|
|
|
|
LDEBUGC("Globals", "Destroying 'FontManager'");
|
|
#ifdef WIN32
|
|
fontManager->~FontManager();
|
|
#else // ^^^ WIN32 / !WIN32 vvv
|
|
delete fontManager;
|
|
#endif // WIN32
|
|
|
|
callback::destroy();
|
|
}
|
|
|
|
void deinitialize() {
|
|
ZoneScoped
|
|
|
|
for (std::unique_ptr<ScreenSpaceRenderable>& ssr : *screenSpaceRenderables) {
|
|
ssr->deinitialize();
|
|
}
|
|
|
|
syncEngine->removeSyncables(timeManager->getSyncables());
|
|
|
|
moduleEngine->deinitialize();
|
|
luaConsole->deinitialize();
|
|
scriptEngine->deinitialize();
|
|
fontManager->deinitialize();
|
|
}
|
|
|
|
void deinitializeGL() {
|
|
ZoneScoped
|
|
|
|
for (std::unique_ptr<ScreenSpaceRenderable>& ssr : *screenSpaceRenderables) {
|
|
ssr->deinitializeGL();
|
|
}
|
|
|
|
renderEngine->deinitializeGL();
|
|
moduleEngine->deinitializeGL();
|
|
}
|
|
|
|
} // namespace openspace::global
|