diff options
Diffstat (limited to 'support/magicleap/Servo2D/code/src.gen')
8 files changed, 431 insertions, 65 deletions
diff --git a/support/magicleap/Servo2D/code/src.gen/PrismSceneManager.cpp b/support/magicleap/Servo2D/code/src.gen/PrismSceneManager.cpp new file mode 100644 index 00000000000..7a8aee9f3ff --- /dev/null +++ b/support/magicleap/Servo2D/code/src.gen/PrismSceneManager.cpp @@ -0,0 +1,124 @@ +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// +// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND +// ANY MODIFICATIONS WILL BE OVERWRITTEN +// +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- + +// %BANNER_BEGIN% +// --------------------------------------------------------------------- +// %COPYRIGHT_BEGIN% +// +// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved. +// Use of this file is governed by the Creator Agreement, located +// here: https://id.magicleap.com/creator-terms +// +// %COPYRIGHT_END% +// --------------------------------------------------------------------- +// %BANNER_END% + +// %SRC_VERSION%: 1 + +#include <PrismSceneManager.h> + +#include <ml_logging.h> + +PrismSceneManager::CreateSpawnedSceneUserData PrismSceneManager::createSpawnedSceneUserData[scenes::numberOfExternalScenes]; + +PrismSceneManager::PrismSceneManager(lumin::Prism* prism) +: prism_(prism) { + + if (!prism_) { + ML_LOG(Error, "PrismSceneManager nullptr prism"); + abort(); + } + + for (int i = 0; i < sizeof(sceneStates_)/sizeof(sceneStates_[0]); ++i) { + sceneStates_[i] = SceneState::Unloaded; + } +} + +void PrismSceneManager::setSceneState(const SceneDescriptor & sceneDescriptor, SceneState newState) { + + const int sceneIndex = sceneDescriptor.getIndex(); + SceneState& sceneState = sceneStates_[sceneIndex]; + std::string& objectModelName = objectModelNames_[sceneIndex]; + + if (sceneState == SceneState::Unloaded && (newState == SceneState::ResourceModelLoaded || newState == SceneState::ResourceAndObjectModelLoaded)) { + if (!prism_->loadResourceModel(sceneDescriptor.getResourceModelPath())) { + ML_LOG(Error, "PrismSceneManager failed to load resource model"); + abort(); + } + sceneState = SceneState::ResourceModelLoaded; + } + + if (sceneState == SceneState::ResourceModelLoaded && newState == SceneState::ResourceAndObjectModelLoaded) { + std::string& objectModelName = objectModelNames_[sceneIndex]; + if (!prism_->loadObjectModel(sceneDescriptor.getSceneGraphPath(), objectModelName)) { + ML_LOG(Error, "PrismSceneManager failed to load object model"); + abort(); + } + sceneState = SceneState::ResourceAndObjectModelLoaded; + } + + if (sceneState == SceneState::ResourceAndObjectModelLoaded && (newState == SceneState::ResourceModelLoaded || newState == SceneState::Unloaded)) { + if (!prism_->unloadObjectModel(objectModelName)) { + ML_LOG(Error, "PrismSceneManager failed to unload object model"); + abort(); + } + sceneState = SceneState::ResourceModelLoaded; + objectModelName.clear(); + } + + // Currently there is no effective way to unload the resource model +} + +SpawnedSceneBase* PrismSceneManager::spawnScene(const SceneDescriptor & sceneDescriptor) { + + lumin::Node* root = createNodeTree(sceneDescriptor); + if (!root) { + return nullptr; + } + + const int index = sceneDescriptor.getIndex(); + CreateSpawnedScene css = createSpawnedScene[index]; + SpawnedSceneBase* const spawnedScene = (*css)(sceneDescriptor, root); + + CreateSpawnedSceneHandlers ch = createSpawnedSceneHandlers[index]; + SpawnedSceneHandlers* const handlers = (*ch)(*spawnedScene); + spawnedScene->handlers = handlers; + + CreateSpawnedSceneUserData cssud = createSpawnedSceneUserData[sceneDescriptor.getIndex()]; + if (cssud) { + spawnedScene->userData = (*cssud)(*spawnedScene); + } + return spawnedScene; +} + +lumin::Node* PrismSceneManager::spawn(const SceneDescriptor & sceneDescriptor) { + SpawnedSceneBase* spawnedSceneBase = spawnScene(sceneDescriptor); + if (!spawnedSceneBase) { + return nullptr; + } + lumin::Node* root = spawnedSceneBase->root; + return root; +} + +lumin::Node* PrismSceneManager::createNodeTree(const SceneDescriptor & sceneDescriptor) { + setSceneState(sceneDescriptor, SceneState::ResourceAndObjectModelLoaded); + const int sceneIndex = sceneDescriptor.getIndex(); + std::string& objectModelName = objectModelNames_[sceneIndex]; + + lumin::Node* root = prism_->createAll(objectModelName); + if (!root) { + ML_LOG(Error, "PrismSceneManager failed to create the scene. Is the scene empty?"); + return nullptr; + } + + return root; +} + +void PrismSceneManager::setUserDataCreator(const SceneDescriptor & sceneDescriptor, CreateSpawnedSceneUserData cssud) { + createSpawnedSceneUserData[sceneDescriptor.getIndex()] = cssud ; +} + diff --git a/support/magicleap/Servo2D/code/src.gen/SceneDescriptor.cpp b/support/magicleap/Servo2D/code/src.gen/SceneDescriptor.cpp index 08bb47d61ac..92673e33d62 100644 --- a/support/magicleap/Servo2D/code/src.gen/SceneDescriptor.cpp +++ b/support/magicleap/Servo2D/code/src.gen/SceneDescriptor.cpp @@ -1,9 +1,9 @@ -// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- // // THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND // ANY MODIFICATIONS WILL BE OVERWRITTEN // -// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- // %BANNER_BEGIN% // --------------------------------------------------------------------- @@ -17,20 +17,27 @@ // --------------------------------------------------------------------- // %BANNER_END% +// %SRC_VERSION%: 1 + #include <SceneDescriptor.h> -SceneDescriptor::SceneDescriptor(const char * exportedName, const char * id, const char * sceneGraphPath, const char * resourceModelPath, const ExportedNodeReferences& exportedNodeReferences, bool initiallyInstanced) +SceneDescriptor::SceneDescriptor(int index, const char * externalName, const char * id, const char * sceneGraphPath, const char * resourceModelPath, const ExternalNodeReferences& externalNodeReferences, bool initiallySpawned) : - exportedName_(exportedName), + index_(index), + externalName_(externalName), id_(id), sceneGraphPath_(sceneGraphPath), resourceModelPath_(resourceModelPath), - exportedNodeReferences_(exportedNodeReferences), - initiallyInstanced_(initiallyInstanced) { + externalNodeReferences_(externalNodeReferences), + initiallySpawned_(initiallySpawned) { +} + +int SceneDescriptor::getIndex() const { + return index_; } -const std::string & SceneDescriptor::getExportedName() const { - return exportedName_; +const std::string & SceneDescriptor::getExternalName() const { + return externalName_; } const std::string & SceneDescriptor::getId() const { @@ -45,10 +52,15 @@ const std::string & SceneDescriptor::getResourceModelPath() const { return resourceModelPath_; } -const SceneDescriptor::ExportedNodeReferences & SceneDescriptor::getExportedNodeReferences() const { - return exportedNodeReferences_; +const SceneDescriptor::ExternalNodeReferences & SceneDescriptor::getExternalNodeReferences() const { + return externalNodeReferences_; } -bool SceneDescriptor::getInitiallyInstanced() const { - return initiallyInstanced_; +bool SceneDescriptor::getInitiallySpawned() const { + return initiallySpawned_; } + +bool operator<(const SceneDescriptor& a, const SceneDescriptor& b) { + return a.getExternalName() < b.getExternalName(); +} + diff --git a/support/magicleap/Servo2D/code/src.gen/Servo2D/Servo2D.cpp b/support/magicleap/Servo2D/code/src.gen/Servo2D/Servo2D.cpp new file mode 100644 index 00000000000..c8b6db95552 --- /dev/null +++ b/support/magicleap/Servo2D/code/src.gen/Servo2D/Servo2D.cpp @@ -0,0 +1,117 @@ +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// +// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND +// ANY MODIFICATIONS WILL BE OVERWRITTEN +// +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- + +// %BANNER_BEGIN% +// --------------------------------------------------------------------- +// %COPYRIGHT_BEGIN% +// +// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved. +// Use of this file is governed by the Creator Agreement, located +// here: https://id.magicleap.com/creator-terms +// +// %COPYRIGHT_END% +// --------------------------------------------------------------------- +// %BANNER_END% + +// %SRC_VERSION%: 1 + +#include <SceneDescriptor.h> +#include <SpawnedSceneBase.h> +#include <Servo2D/Servo2D.h> + +namespace scenes { + + namespace Servo2D { + + SpawnedScene::SpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root) + : SpawnedSceneBase(sceneDescriptor, root) { + contentPanel = lumin::ui::UiPanel::CastFrom(root->findChild(externalNodes::contentPanel)); + content = lumin::QuadNode::CastFrom(root->findChild(externalNodes::content)); + backButton = lumin::ui::UiButton::CastFrom(root->findChild(externalNodes::backButton)); + fwdButton = lumin::ui::UiButton::CastFrom(root->findChild(externalNodes::fwdButton)); + urlBar = lumin::ui::UiTextEdit::CastFrom(root->findChild(externalNodes::urlBar)); + laser = lumin::LineNode::CastFrom(root->findChild(externalNodes::laser)); + } + + SpawnedScene::~SpawnedScene() { + } + + SpawnedSceneBase* createSpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root) { + using namespace externalNodes; + SpawnedScene* spawnedScene = new SpawnedScene(sceneDescriptor, root); + return spawnedScene; + } + + class Handlers : public SpawnedSceneHandlers + { + public: + Handlers(SpawnedScene& ss); + + private: + + struct contentPanelHandlers { + contentPanelHandlers(SpawnedScene& ss); + }; + contentPanelHandlers contentPanelHandlers_; + struct contentHandlers { + contentHandlers(SpawnedScene& ss); + }; + contentHandlers contentHandlers_; + struct backButtonHandlers { + backButtonHandlers(SpawnedScene& ss); + }; + backButtonHandlers backButtonHandlers_; + struct fwdButtonHandlers { + fwdButtonHandlers(SpawnedScene& ss); + }; + fwdButtonHandlers fwdButtonHandlers_; + struct urlBarHandlers { + urlBarHandlers(SpawnedScene& ss); + }; + urlBarHandlers urlBarHandlers_; + struct laserHandlers { + laserHandlers(SpawnedScene& ss); + }; + laserHandlers laserHandlers_; + }; + + Handlers::contentPanelHandlers::contentPanelHandlers(SpawnedScene& ss) + { + } + Handlers::contentHandlers::contentHandlers(SpawnedScene& ss) + { + } + Handlers::backButtonHandlers::backButtonHandlers(SpawnedScene& ss) + { + } + Handlers::fwdButtonHandlers::fwdButtonHandlers(SpawnedScene& ss) + { + } + Handlers::urlBarHandlers::urlBarHandlers(SpawnedScene& ss) + { + } + Handlers::laserHandlers::laserHandlers(SpawnedScene& ss) + { + } + + Handlers::Handlers(SpawnedScene& ss) + : SpawnedSceneHandlers(ss), + contentPanelHandlers_(ss), + contentHandlers_(ss), + backButtonHandlers_(ss), + fwdButtonHandlers_(ss), + urlBarHandlers_(ss), + laserHandlers_(ss) + { + } + + SpawnedSceneHandlers* createSpawnedSceneHandlers(SpawnedSceneBase& ssb) { + return new Handlers(static_cast<SpawnedScene&>(ssb)); + } + } +} + diff --git a/support/magicleap/Servo2D/code/src.gen/SpawnedSceneBase.cpp b/support/magicleap/Servo2D/code/src.gen/SpawnedSceneBase.cpp new file mode 100644 index 00000000000..51cc3aa76cf --- /dev/null +++ b/support/magicleap/Servo2D/code/src.gen/SpawnedSceneBase.cpp @@ -0,0 +1,35 @@ +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// +// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND +// ANY MODIFICATIONS WILL BE OVERWRITTEN +// +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- + +// %BANNER_BEGIN% +// --------------------------------------------------------------------- +// %COPYRIGHT_BEGIN% +// +// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved. +// Use of this file is governed by the Creator Agreement, located +// here: https://id.magicleap.com/creator-terms +// +// %COPYRIGHT_END% +// --------------------------------------------------------------------- +// %BANNER_END% + +// %SRC_VERSION%: 1 + +#include <SpawnedSceneBase.h> +#include <SpawnedSceneHandlers.h> +#include <SpawnedSceneUserData.h> + +SpawnedSceneBase::SpawnedSceneBase(const SceneDescriptor &sd, lumin::Node* rt) +: sceneDescriptor(sd), + root(rt) { +} + +SpawnedSceneBase::~SpawnedSceneBase() { + delete handlers; + delete userData; +} + diff --git a/support/magicleap/Servo2D/code/src.gen/SpawnedSceneHandlers.cpp b/support/magicleap/Servo2D/code/src.gen/SpawnedSceneHandlers.cpp new file mode 100644 index 00000000000..6aa3042234f --- /dev/null +++ b/support/magicleap/Servo2D/code/src.gen/SpawnedSceneHandlers.cpp @@ -0,0 +1,29 @@ +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// +// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND +// ANY MODIFICATIONS WILL BE OVERWRITTEN +// +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- + +// %BANNER_BEGIN% +// --------------------------------------------------------------------- +// %COPYRIGHT_BEGIN% +// +// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved. +// Use of this file is governed by the Creator Agreement, located +// here: https://id.magicleap.com/creator-terms +// +// %COPYRIGHT_END% +// --------------------------------------------------------------------- +// %BANNER_END% + +// %SRC_VERSION%: 1 + +#include <SpawnedSceneHandlers.h> + +SpawnedSceneHandlers::SpawnedSceneHandlers(SpawnedSceneBase& ssb) { +} + +SpawnedSceneHandlers::~SpawnedSceneHandlers() { +} + diff --git a/support/magicleap/Servo2D/code/src.gen/SpawnedSceneUserData.cpp b/support/magicleap/Servo2D/code/src.gen/SpawnedSceneUserData.cpp new file mode 100644 index 00000000000..777f0ed6846 --- /dev/null +++ b/support/magicleap/Servo2D/code/src.gen/SpawnedSceneUserData.cpp @@ -0,0 +1,26 @@ +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// +// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND +// ANY MODIFICATIONS WILL BE OVERWRITTEN +// +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- + +// %BANNER_BEGIN% +// --------------------------------------------------------------------- +// %COPYRIGHT_BEGIN% +// +// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved. +// Use of this file is governed by the Creator Agreement, located +// here: https://id.magicleap.com/creator-terms +// +// %COPYRIGHT_END% +// --------------------------------------------------------------------- +// %BANNER_END% + +// %SRC_VERSION%: 1 + +#include <SpawnedSceneUserData.h> + +SpawnedSceneUserData::~SpawnedSceneUserData() { +} + diff --git a/support/magicleap/Servo2D/code/src.gen/scenes.cpp b/support/magicleap/Servo2D/code/src.gen/scenes.cpp new file mode 100644 index 00000000000..2728270cd6c --- /dev/null +++ b/support/magicleap/Servo2D/code/src.gen/scenes.cpp @@ -0,0 +1,76 @@ +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- +// +// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND +// ANY MODIFICATIONS WILL BE OVERWRITTEN +// +// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- + +// %BANNER_BEGIN% +// --------------------------------------------------------------------- +// %COPYRIGHT_BEGIN% +// +// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved. +// Use of this file is governed by the Creator Agreement, located +// here: https://id.magicleap.com/creator-terms +// +// %COPYRIGHT_END% +// --------------------------------------------------------------------- +// %BANNER_END% + +// %SRC_VERSION%: 1 + +#include <PrismSceneManager.h> +#include <scenes.h> +#include <Servo2D/Servo2D.h> + +namespace scenes { + + namespace Servo2D { + + namespace externalNodes { + extern const std::string contentPanel = "contentPanel"; + extern const std::string content = "content"; + extern const std::string backButton = "backButton"; + extern const std::string fwdButton = "fwdButton"; + extern const std::string urlBar = "urlBar"; + extern const std::string laser = "laser"; + } + + const SceneDescriptor::ExternalNodeReferences externalNodesMap = { + {"contentPanel", externalNodes::contentPanel}, + {"content", externalNodes::content}, + {"backButton", externalNodes::backButton}, + {"fwdButton", externalNodes::fwdButton}, + {"urlBar", externalNodes::urlBar}, + {"laser", externalNodes::laser} + }; + + const SceneDescriptor descriptor( + 0, + "Servo2D", + "root", + "/assets/scenes/Servo2D.scene.xml", + "/assets/scenes/Servo2D.scene.res.xml", + externalNodesMap, + true); + } + + const SceneDescriptorReferences externalScenes = { + {Servo2D::descriptor.getExternalName(), Servo2D::descriptor} + }; + + struct VerifyNumberOfExternalScenes { + VerifyNumberOfExternalScenes() { assert(externalScenes.size() == numberOfExternalScenes); } + }; + + VerifyNumberOfExternalScenes verifyNumberOfExternalScenes; +} + +const PrismSceneManager::CreateSpawnedScene PrismSceneManager::createSpawnedScene[scenes::numberOfExternalScenes] = { + ::scenes::Servo2D::createSpawnedScene +}; + +const PrismSceneManager::CreateSpawnedSceneHandlers PrismSceneManager::createSpawnedSceneHandlers[scenes::numberOfExternalScenes] = { + static_cast<CreateSpawnedSceneHandlers>(::scenes::Servo2D::createSpawnedSceneHandlers) +}; + diff --git a/support/magicleap/Servo2D/code/src.gen/scenesGen.cpp b/support/magicleap/Servo2D/code/src.gen/scenesGen.cpp deleted file mode 100644 index b6927f8aec8..00000000000 --- a/support/magicleap/Servo2D/code/src.gen/scenesGen.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- -// -// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND -// ANY MODIFICATIONS WILL BE OVERWRITTEN -// -// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- - -// %BANNER_BEGIN% -// --------------------------------------------------------------------- -// %COPYRIGHT_BEGIN% -// -// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved. -// Use of this file is governed by the Creator Agreement, located -// here: https://id.magicleap.com/creator-terms -// -// %COPYRIGHT_END% -// --------------------------------------------------------------------- -// %BANNER_END% - -#include <scenesGen.h> - -namespace Servo2D_exportedNodes { - const std::string contentPanel = "contentPanel"; - const std::string content = "content"; - const std::string backButton = "backButton"; - const std::string fwdButton = "fwdButton"; - const std::string urlBar = "urlBar"; - const std::string laser = "laser"; -} - -namespace scenes { - - const SceneDescriptor::ExportedNodeReferences Servo2D_exportedNodesMap = { - {"contentPanel", Servo2D_exportedNodes::contentPanel}, - {"content", Servo2D_exportedNodes::content}, - {"backButton", Servo2D_exportedNodes::backButton}, - {"fwdButton", Servo2D_exportedNodes::fwdButton}, - {"urlBar", Servo2D_exportedNodes::urlBar}, - {"laser", Servo2D_exportedNodes::laser} - }; - - const SceneDescriptor Servo2D( - "Servo2D", - "root", - "/assets/scenes/scenes/Servo2D.scene.xml", - "/assets/scenes/scenes/Servo2D.scene.res.xml", - Servo2D_exportedNodesMap, - true); - - const SceneDescriptorReferences exportedScenes = { - {Servo2D.getExportedName(), Servo2D} - }; -} |