diff options
author | Alan Jeffrey <ajeffrey@mozilla.com> | 2019-08-09 14:59:13 -0500 |
---|---|---|
committer | Alan Jeffrey <ajeffrey@mozilla.com> | 2019-08-09 15:02:53 -0500 |
commit | deb06ffcec22c6fad7245e5054971c65d70fe9dd (patch) | |
tree | f1edff9bbab129bdf6bce034980e90fac5155c35 /support/magicleap/Servo2D | |
parent | 6775c69da128608fa6f7f11e19232c05a3b92365 (diff) | |
download | servo-deb06ffcec22c6fad7245e5054971c65d70fe9dd.tar.gz servo-deb06ffcec22c6fad7245e5054971c65d70fe9dd.zip |
Updated Servo2D to LRE v0.22.0
Diffstat (limited to 'support/magicleap/Servo2D')
29 files changed, 791 insertions, 174 deletions
diff --git a/support/magicleap/Servo2D/.gitignore b/support/magicleap/Servo2D/.gitignore new file mode 100644 index 00000000000..10e24c83cb9 --- /dev/null +++ b/support/magicleap/Servo2D/.gitignore @@ -0,0 +1,14 @@ +.DS_Store +*.log +*.json.dirty +*.json.lock +*.pyc +*.sln +*.vcxproj* +*.previous +*.draft + +pipeline/cache/intermediate/ +.out/ +.vscode/ +.vs/ diff --git a/support/magicleap/Servo2D/Servo2D.mabu b/support/magicleap/Servo2D/Servo2D.mabu index 9bf43347d6e..7b600b74846 100644 --- a/support/magicleap/Servo2D/Servo2D.mabu +++ b/support/magicleap/Servo2D/Servo2D.mabu @@ -51,4 +51,4 @@ CXXFLAGS = \ USES = \ lumin_runtime \ - code/srcsGen + code/srcs diff --git a/support/magicleap/Servo2D/Servo2D.mlproject b/support/magicleap/Servo2D/Servo2D.mlproject index 21702384991..8ae20de661a 100644 --- a/support/magicleap/Servo2D/Servo2D.mlproject +++ b/support/magicleap/Servo2D/Servo2D.mlproject @@ -1,5 +1,10 @@ <?xml version="1.0" encoding="ASCII"?> -<mlproject:mlproject xmlns:mlproject="http://www.magicleap.com/uidesigner/mlproject" generated="true"> +<mlproject:mlproject xmlns:mlproject="http://www.magicleap.com/uidesigner/mlproject" generated="true" srcGenVersion="1"> <designFile path="scenes/Servo2D.design"/> <pipelineDirectory path="pipeline"/> + <preferences key="srcgen.directories.src" value="src"/> + <preferences key="srcgen.directories.basedir" value="code"/> + <preferences key="srcgen.directories.inc" value="inc"/> + <preferences key="srcgen.directories.incgen" value="inc.gen"/> + <preferences key="srcgen.directories.srcgen" value="src.gen"/> </mlproject:mlproject>
\ No newline at end of file diff --git a/support/magicleap/Servo2D/Servo2D.package b/support/magicleap/Servo2D/Servo2D.package index 7d6f264e57f..73f35b6ba6d 100644 --- a/support/magicleap/Servo2D/Servo2D.package +++ b/support/magicleap/Servo2D/Servo2D.package @@ -1,5 +1,6 @@ - -USES = "scenes" "pipeline/cache/AssetManifest" +USES = \ + scenes \ + pipeline/cache/AssetManifest DATAS = \ fonts.xml : etc/fonts.xml diff --git a/support/magicleap/Servo2D/code/inc.gen/PrismSceneManager.h b/support/magicleap/Servo2D/code/inc.gen/PrismSceneManager.h new file mode 100644 index 00000000000..82d43212325 --- /dev/null +++ b/support/magicleap/Servo2D/code/inc.gen/PrismSceneManager.h @@ -0,0 +1,74 @@ +// -- 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 + +#pragma once + +#include <lumin/Prism.h> +#include <lumin/node/Node.h> + +#include <SceneDescriptor.h> +#include <SpawnedSceneBase.h> +#include <SpawnedSceneUserData.h> +#include <scenes.h> + +class PrismSceneManager { + public: + + typedef std::function<SpawnedSceneUserData*(SpawnedSceneBase&)> (*CreateSpawnedSceneUserData); + static void setUserDataCreator(const SceneDescriptor & sceneDescriptor, CreateSpawnedSceneUserData createSpawnedSceneUserData); + + public: + + PrismSceneManager(lumin::Prism* prism); + + enum class SceneState { + Unloaded, + ResourceModelLoaded, + ResourceAndObjectModelLoaded, + }; + + void setSceneState(const SceneDescriptor & sceneDescriptor, SceneState sceneState); + SceneState getSceneState(const SceneDescriptor & sceneDescriptor, SceneState sceneState) const; + + SpawnedSceneBase* spawnScene(const SceneDescriptor & sceneDescriptor); + lumin::Node* spawn(const SceneDescriptor & sceneDescriptor); + + private: + + typedef SpawnedSceneBase* (*CreateSpawnedScene)(const SceneDescriptor& sceneDescriptor, lumin::Node* root); + static const CreateSpawnedScene createSpawnedScene[scenes::numberOfExternalScenes]; + + typedef SpawnedSceneHandlers* (*CreateSpawnedSceneHandlers)(SpawnedSceneBase& spawnedScene); + static const CreateSpawnedSceneHandlers createSpawnedSceneHandlers[scenes::numberOfExternalScenes]; + + static CreateSpawnedSceneUserData createSpawnedSceneUserData[scenes::numberOfExternalScenes]; + + private: + + lumin::Node* createNodeTree(const SceneDescriptor & sceneDescriptor); + + private: + + lumin::Prism* prism_; + SceneState sceneStates_[scenes::numberOfExternalScenes]; + std::string objectModelNames_[scenes::numberOfExternalScenes]; +}; + diff --git a/support/magicleap/Servo2D/code/inc.gen/SceneDescriptor.h b/support/magicleap/Servo2D/code/inc.gen/SceneDescriptor.h index db950700a13..c1b42119bae 100644 --- a/support/magicleap/Servo2D/code/inc.gen/SceneDescriptor.h +++ b/support/magicleap/Servo2D/code/inc.gen/SceneDescriptor.h @@ -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,6 +17,8 @@ // --------------------------------------------------------------------- // %BANNER_END% +// %SRC_VERSION%: 1 + #pragma once #include <string> @@ -26,23 +28,31 @@ class SceneDescriptor { public: - typedef std::map<std::string /* exportedNodeName */, const std::string& /* exportedNodeId */> ExportedNodeReferences; + typedef std::map<std::string /* externalNodeName */, const std::string& /* externalNodeId */> ExternalNodeReferences; - SceneDescriptor(const char* exportedName, const char* id, const char* sceneGraphFilePath, const char* resourceModelFilePath, const ExportedNodeReferences& exportedNodeReferences, bool initiallyInstanced); - const std::string& getExportedName() const; + SceneDescriptor(int index, const char* externalName, const char* id, const char* sceneGraphFilePath, const char* resourceModelFilePath, const ExternalNodeReferences& externalNodeReferences, bool initiallySpawned); + const std::string& getExternalName() const; const std::string& getId() const; const std::string& getSceneGraphPath() const; const std::string& getResourceModelPath() const; - const ExportedNodeReferences & getExportedNodeReferences() const; - bool getInitiallyInstanced() const; + const ExternalNodeReferences & getExternalNodeReferences() const; + bool getInitiallySpawned() const; + + private: + + friend class PrismSceneManager; + int getIndex() const; private: - std::string exportedName_; + + int index_; + std::string externalName_; std::string id_; std::string sceneGraphPath_; std::string resourceModelPath_; - const ExportedNodeReferences& exportedNodeReferences_; - bool initiallyInstanced_; + const ExternalNodeReferences& externalNodeReferences_; + bool initiallySpawned_; }; -typedef std::map<std::string /* exportedName */, const SceneDescriptor&> SceneDescriptorReferences; +bool operator<(const SceneDescriptor& a, const SceneDescriptor& b); + diff --git a/support/magicleap/Servo2D/code/inc.gen/Servo2D/Servo2D.h b/support/magicleap/Servo2D/code/inc.gen/Servo2D/Servo2D.h new file mode 100644 index 00000000000..1ed3d155f5a --- /dev/null +++ b/support/magicleap/Servo2D/code/inc.gen/Servo2D/Servo2D.h @@ -0,0 +1,63 @@ +// -- 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 + +#pragma once + +#include <SpawnedSceneBase.h> +#include <SpawnedSceneHandlers.h> + +#include <lumin/node/LineNode.h> +#include <lumin/node/QuadNode.h> +#include <lumin/ui/node/UiButton.h> +#include <lumin/ui/node/UiPanel.h> +#include <lumin/ui/node/UiTextEdit.h> + +namespace scenes { + + namespace Servo2D { + + namespace externalNodes { + extern const std::string contentPanel; + extern const std::string content; + extern const std::string backButton; + extern const std::string fwdButton; + extern const std::string urlBar; + extern const std::string laser; + } + + struct SpawnedScene : public SpawnedSceneBase { + SpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root); + ~SpawnedScene(); + lumin::ui::UiPanel* contentPanel; + lumin::QuadNode* content; + lumin::ui::UiButton* backButton; + lumin::ui::UiButton* fwdButton; + lumin::ui::UiTextEdit* urlBar; + lumin::LineNode* laser; + }; + + SpawnedSceneBase* createSpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root); + SpawnedSceneHandlers* createSpawnedSceneHandlers(SpawnedSceneBase& spawnedScene); + + extern const SceneDescriptor descriptor; + } +} + diff --git a/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneBase.h b/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneBase.h new file mode 100644 index 00000000000..4b597bfdd73 --- /dev/null +++ b/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneBase.h @@ -0,0 +1,43 @@ +// -- 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 + +#pragma once + +#include <lumin/node/Node.h> + +class SceneDescriptor; +class SpawnedSceneHandlers; +struct SpawnedSceneUserData; + +struct SpawnedSceneBase { + SpawnedSceneBase(const SceneDescriptor &sd, lumin::Node* rt); + virtual ~SpawnedSceneBase(); + + SpawnedSceneBase() = delete; + SpawnedSceneBase(const SpawnedSceneBase&) = delete; + SpawnedSceneBase(const SpawnedSceneBase&&) = delete; + + const SceneDescriptor& sceneDescriptor; + lumin::Node* root = nullptr; + SpawnedSceneHandlers* handlers = nullptr; + SpawnedSceneUserData* userData = nullptr; +}; + diff --git a/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneHandlers.h b/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneHandlers.h new file mode 100644 index 00000000000..071a9c9bea6 --- /dev/null +++ b/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneHandlers.h @@ -0,0 +1,31 @@ +// -- 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 + +#pragma once + +struct SpawnedSceneBase; + +class SpawnedSceneHandlers { +public: + SpawnedSceneHandlers(SpawnedSceneBase& ssb); + virtual ~SpawnedSceneHandlers(); +}; + diff --git a/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneUserData.h b/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneUserData.h new file mode 100644 index 00000000000..936efea6880 --- /dev/null +++ b/support/magicleap/Servo2D/code/inc.gen/SpawnedSceneUserData.h @@ -0,0 +1,27 @@ +// -- 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 + +#pragma once + +struct SpawnedSceneUserData { + virtual ~SpawnedSceneUserData(); +}; + diff --git a/support/magicleap/Servo2D/code/inc.gen/scenesGen.h b/support/magicleap/Servo2D/code/inc.gen/scenes.h index 4b2304ddbdb..73f00a033a1 100644 --- a/support/magicleap/Servo2D/code/inc.gen/scenesGen.h +++ b/support/magicleap/Servo2D/code/inc.gen/scenes.h @@ -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,17 @@ // --------------------------------------------------------------------- // %BANNER_END% +// %SRC_VERSION%: 1 + #pragma once #include <SceneDescriptor.h> - -namespace Servo2D_exportedNodes { - extern const std::string contentPanel; - extern const std::string content; - extern const std::string backButton; - extern const std::string fwdButton; - extern const std::string urlBar; - extern const std::string laser; -} +#include <map> namespace scenes { - extern const SceneDescriptor Servo2D; - extern const SceneDescriptorReferences exportedScenes; + const int numberOfExternalScenes = 1; + + typedef std::map<std::string /* externalName */, const SceneDescriptor& /* sceneDescription */> SceneDescriptorReferences; + extern const SceneDescriptorReferences externalScenes; } + diff --git a/support/magicleap/Servo2D/code/inc/Servo2D.h b/support/magicleap/Servo2D/code/inc/Servo2D.h index 1e526bb2b94..2c1e0c8fd9a 100644 --- a/support/magicleap/Servo2D/code/inc/Servo2D.h +++ b/support/magicleap/Servo2D/code/inc/Servo2D.h @@ -2,10 +2,13 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -#include <GLES/gl.h> #include <lumin/LandscapeApp.h> #include <lumin/Prism.h> #include <lumin/event/ServerEvent.h> +#include <SceneDescriptor.h> +#include <PrismSceneManager.h> + +#include <GLES/gl.h> #include <lumin/event/GestureInputEventData.h> #include <lumin/event/KeyInputEventData.h> #include <lumin/event/ControlTouchPadInputEventData.h> @@ -17,7 +20,6 @@ #include <lumin/ui/node/UiButton.h> #include <lumin/ui/node/UiPanel.h> #include <lumin/ui/node/UiTextEdit.h> -#include <SceneDescriptor.h> typedef struct Opaque ServoInstance; @@ -85,25 +87,20 @@ protected: int deInit() override; /** - * Returns the size of the Prism, default = +/- (1.0f, 1.0f, 1.0f) meters. + * Returns the initial size of the Prism * Used in createPrism(). */ - const glm::vec3 getInitialPrismExtents() const; + const glm::vec3 getInitialPrismSize() const; /** * Creates the prism, updates the private variable prism_ with the created prism. */ - int createInitialPrism(); + void createInitialPrism(); /** * Initializes and creates the scene of all scenes marked as initially instanced */ - void instanceInitialScenes(); - - /** - * Initializes and creates the scene of the scene and instances it into the prism - */ - lumin::Node* instanceScene(const SceneDescriptor & sceneToInit); + void spawnInitialScenes(); /** * Run application login @@ -133,6 +130,7 @@ protected: private: lumin::Prism* prism_ = nullptr; // represents the bounded space where the App renders. + PrismSceneManager* prismSceneManager_ = nullptr; lumin::PlanarResource* plane_ = nullptr; // the plane we're rendering into lumin::QuadNode* content_node_ = nullptr; // the node containing the plane lumin::ui::UiPanel* content_panel_ = nullptr; // the panel containing the node 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} - }; -} diff --git a/support/magicleap/Servo2D/code/src/Servo2D.cpp b/support/magicleap/Servo2D/code/src/Servo2D.cpp index 768abbcae21..7dfc8a43693 100644 --- a/support/magicleap/Servo2D/code/src/Servo2D.cpp +++ b/support/magicleap/Servo2D/code/src/Servo2D.cpp @@ -2,13 +2,15 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -#include <Servo2D.h> +#include <Servo2D/Servo2D.h> #include <lumin/node/RootNode.h> -#include <lumin/node/QuadNode.h> #include <lumin/ui/Cursor.h> #include <ml_logging.h> -#include <scenesGen.h> -#include <SceneDescriptor.h> +#include <scenes.h> +#include <PrismSceneManager.h> + +#include <Servo2D.h> +#include <lumin/node/QuadNode.h> #include <lumin/ui/Keyboard.h> #include <EGL/egl.h> #include <GLES/gl.h> @@ -90,30 +92,26 @@ Servo2D::~Servo2D() { ML_LOG(Debug, "Servo2D Destructor."); } -// The prism dimensions -const glm::vec3 Servo2D::getInitialPrismExtents() const { +const glm::vec3 Servo2D::getInitialPrismSize() const { return glm::vec3(PRISM_W, PRISM_H, PRISM_D); } -// Create the prism for Servo -int Servo2D::createInitialPrism() { - prism_ = requestNewPrism(getInitialPrismExtents()); +void Servo2D::createInitialPrism() { + prism_ = requestNewPrism(getInitialPrismSize()); if (!prism_) { ML_LOG(Error, "Servo2D Error creating default prism."); - return 1; + abort(); } - return 0; + prismSceneManager_ = new PrismSceneManager(prism_); } -// Initialize a Servo instance int Servo2D::init() { ML_LOG(Debug, "Servo2D Initializing."); - // Set up the prism createInitialPrism(); lumin::ui::Cursor::SetScale(prism_, 0.03f); - instanceInitialScenes(); + spawnInitialScenes(); // Check privileges if (checkPrivilege(lumin::PrivilegeId::kInternet) != lumin::PrivilegeResult::kGranted) { @@ -135,7 +133,7 @@ int Servo2D::init() { return 1; } - std::string content_node_id = Servo2D_exportedNodes::content; + std::string content_node_id = scenes::Servo2D::externalNodes::content; content_node_ = lumin::QuadNode::CastFrom(prism_->findNode(content_node_id, root_node)); if (!content_node_) { ML_LOG(Error, "Servo2D Failed to get content node"); @@ -144,7 +142,9 @@ int Servo2D::init() { } content_node_->setTriggerable(true); - content_panel_ = lumin::ui::UiPanel::CastFrom(prism_->findNode(Servo2D_exportedNodes::contentPanel, root_node)); + content_panel_ = lumin::ui::UiPanel::CastFrom( + prism_->findNode(scenes::Servo2D::externalNodes::contentPanel, root_node) + ); if (!content_panel_) { ML_LOG(Error, "Servo2D Failed to get content panel"); abort(); @@ -193,7 +193,7 @@ int Servo2D::init() { } // Add a callback to the back button - std::string back_button_id = Servo2D_exportedNodes::backButton; + std::string back_button_id = scenes::Servo2D::externalNodes::backButton; back_button_ = lumin::ui::UiButton::CastFrom(prism_->findNode(back_button_id, root_node)); if (!back_button_) { ML_LOG(Error, "Servo2D Failed to get back button"); @@ -203,7 +203,7 @@ int Servo2D::init() { back_button_->onActivateSub(std::bind(traverse_servo, servo_, -1)); // Add a callback to the forward button - std::string fwd_button_id = Servo2D_exportedNodes::fwdButton; + std::string fwd_button_id = scenes::Servo2D::externalNodes::fwdButton; fwd_button_ = lumin::ui::UiButton::CastFrom(prism_->findNode(fwd_button_id, root_node)); if (!fwd_button_) { ML_LOG(Error, "Servo2D Failed to get forward button"); @@ -213,7 +213,7 @@ int Servo2D::init() { fwd_button_->onActivateSub(std::bind(traverse_servo, servo_, +1)); // Add a callback to the URL bar - std::string url_bar_id = Servo2D_exportedNodes::urlBar; + std::string url_bar_id = scenes::Servo2D::externalNodes::urlBar; url_bar_ = lumin::ui::UiTextEdit::CastFrom(prism_->findNode(url_bar_id, root_node)); if (!url_bar_) { ML_LOG(Error, "Servo2D Failed to get URL bar"); @@ -227,7 +227,7 @@ int Servo2D::init() { url_bar_->onFocusLostSub(std::bind(&Servo2D::urlBarEventListener, this)); // Add the laser pointer - laser_ = lumin::LineNode::CastFrom(prism_->findNode(Servo2D_exportedNodes::laser, root_node)); + laser_ = lumin::LineNode::CastFrom(prism_->findNode(scenes::Servo2D::externalNodes::laser, root_node)); if (!laser_) { ML_LOG(Error, "Servo2D Failed to get laser"); abort(); @@ -244,39 +244,21 @@ int Servo2D::deInit() { return 0; } -lumin::Node* Servo2D::instanceScene(const SceneDescriptor& scene) { - // Load resources. - if (!prism_->loadResourceModel(scene.getResourceModelPath())) { - ML_LOG(Info, "No resource model loaded"); - } - - // Load a scene file. - std::string editorObjectModelName; - if (!prism_->loadObjectModel(scene.getSceneGraphPath(), editorObjectModelName)) { - ML_LOG(Error, "Servo2D Failed to load object model"); - abort(); - return nullptr; - } - - // Add scene to this prism. - lumin::Node* newTree = prism_->createAll(editorObjectModelName); - if (!prism_->getRootNode()->addChild(newTree)) { - ML_LOG(Error, "Servo2D Failed to add newTree to the prism root node"); - abort(); - return nullptr; - } - - return newTree; -} +void Servo2D::spawnInitialScenes() { -void Servo2D::instanceInitialScenes() { // Iterate over all the exported scenes - for (auto& exportedSceneEntry : scenes::exportedScenes ) { + for (auto& exportedSceneEntry : scenes::externalScenes ) { // If this scene was marked to be instanced at app initialization, do it const SceneDescriptor &sd = exportedSceneEntry.second; - if (sd.getInitiallyInstanced()) { - instanceScene(sd); + if (sd.getInitiallySpawned()) { + lumin::Node* const spawnedRoot = prismSceneManager_->spawn(sd); + if (spawnedRoot) { + if (!prism_->getRootNode()->addChild(spawnedRoot)) { + ML_LOG(Error, "Servo2D Failed to add spawnedRoot to the prism root node"); + abort(); + } + } } } } diff --git a/support/magicleap/Servo2D/code/srcs.comp b/support/magicleap/Servo2D/code/srcs.comp new file mode 100644 index 00000000000..7319bc2e28f --- /dev/null +++ b/support/magicleap/Servo2D/code/srcs.comp @@ -0,0 +1,8 @@ +SRCS = \ + src.gen/scenes.cpp \ + src.gen/Servo2D/Servo2D.cpp \ + src.gen/PrismSceneManager.cpp \ + src.gen/SceneDescriptor.cpp \ + src.gen/SpawnedSceneBase.cpp \ + src.gen/SpawnedSceneHandlers.cpp \ + src.gen/SpawnedSceneUserData.cpp \ diff --git a/support/magicleap/Servo2D/code/srcsGen.comp b/support/magicleap/Servo2D/code/srcsGen.comp deleted file mode 100644 index d46daea0bbb..00000000000 --- a/support/magicleap/Servo2D/code/srcsGen.comp +++ /dev/null @@ -1,3 +0,0 @@ -SRCS = \ - src.gen/scenesGen.cpp \ - src.gen/SceneDescriptor.cpp \ diff --git a/support/magicleap/Servo2D/pipeline/cache/AssetManifest.comp b/support/magicleap/Servo2D/pipeline/cache/AssetManifest.comp index a1c45b39d6b..e69de29bb2d 100644 --- a/support/magicleap/Servo2D/pipeline/cache/AssetManifest.comp +++ b/support/magicleap/Servo2D/pipeline/cache/AssetManifest.comp @@ -1 +0,0 @@ -DATAS=
\ No newline at end of file diff --git a/support/magicleap/Servo2D/pipeline/lap/project.json b/support/magicleap/Servo2D/pipeline/lap/project.json index db27f7df84a..50368388ec7 100644 --- a/support/magicleap/Servo2D/pipeline/lap/project.json +++ b/support/magicleap/Servo2D/pipeline/lap/project.json @@ -22,7 +22,7 @@ "lap/types/file/png" ] }, - "checkpoint-hash": "74689acde6571e19f86366dd94d8890be66acfceb26d14ac3ca14228fa31959087b8771fbb5a86764b4e7dc121bd78c3b0ee4c9c0716f0d91c90a59315f8acd8", + "checkpoint-hash": "b1a5b4c3dfe7a6c0a3068dd837adfa07364f5016ddef9e6698090ba3544ccf921abba715182f372e25d65a9b6b13fdf11f12e436482cc3bace76f56876bd2251", "templates": [ "lap/template/passthru_material_from_kmat", "lap/template/passthru_model_from_fbx", diff --git a/support/magicleap/Servo2D/scenes.comp b/support/magicleap/Servo2D/scenes.comp index a5c3213a275..5d63e258e3b 100644 --- a/support/magicleap/Servo2D/scenes.comp +++ b/support/magicleap/Servo2D/scenes.comp @@ -1,3 +1,3 @@ DATAS = \ - scenes/Servo2D.scene.res.xml : assets/scenes/scenes/Servo2D.scene.res.xml \ - scenes/Servo2D.scene.xml : assets/scenes/scenes/Servo2D.scene.xml + scenes/Servo2D.scene.res.xml : assets/scenes/Servo2D.scene.res.xml \ + scenes/Servo2D.scene.xml : assets/scenes/Servo2D.scene.xml diff --git a/support/magicleap/Servo2D/scenes/Servo2D.design b/support/magicleap/Servo2D/scenes/Servo2D.design index 57db6f82035..583f7440eba 100644 --- a/support/magicleap/Servo2D/scenes/Servo2D.design +++ b/support/magicleap/Servo2D/scenes/Servo2D.design @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="ASCII"?> -<design:rootNode xmlns:design="http://www.magicleap.com/uidesigner/rcp/document/design" name="root" nodeTypeId="lumin.root" modelId="lumin" version="1.8.0"> +<design:rootNode xmlns:design="http://www.magicleap.com/uidesigner/rcp/document/design" name="root" nodeTypeId="lumin.root" modelId="lumin" version="1.11.1"> <property id="name" value="root"/> + <property id="sceneName" value="Servo2D"/> <node name="contentPanel" nodeTypeId="lumin.ui.panel"> <property id="cursorInitialPosition"/> <property id="edgeConstraint"/> - <property id="externalName" value="contentPanel"/> + <property id="external" value="true"/> <property id="gravityWellProperties"> <property id="boundaryShape"> <property id="size"/> @@ -25,7 +26,7 @@ <property id="rotation"/> <property id="scale"/> <node name="content" nodeTypeId="lumin.quad"> - <property id="externalName" value="content"/> + <property id="external" value="true"/> <property id="name" value="content"/> <property id="position"> <property id="x" value="-0.25"/> @@ -84,7 +85,7 @@ <property id="y" value="0.05"/> </property> <node name="backButton" nodeTypeId="lumin.ui.button"> - <property id="externalName" value="backButton"/> + <property id="external" value="true"/> <property id="gravityWellProperties"> <property id="boundaryShape"> <property id="size"/> @@ -105,7 +106,7 @@ <property id="width" value="0.1"/> </node> <node name="fwdButton" nodeTypeId="lumin.ui.button"> - <property id="externalName" value="fwdButton"/> + <property id="external" value="true"/> <property id="gravityWellProperties"> <property id="boundaryShape"> <property id="size"/> @@ -127,7 +128,7 @@ <property id="alignment"> <property id="verticalAlignment" value="Center"/> </property> - <property id="externalName" value="urlBar"/> + <property id="external" value="true"/> <property id="gravityWellProperties"> <property id="boundaryShape"> <property id="size"/> @@ -153,7 +154,7 @@ </node> <node name="laser" nodeTypeId="lumin.line"> <property id="color" value="0 0 0 0"/> - <property id="externalName" value="laser"/> + <property id="external" value="true"/> <property id="name" value="laser"/> <property id="opaque" value="false"/> <property id="points"> diff --git a/support/magicleap/Servo2D/scenes/Servo2D.scene.res.xml b/support/magicleap/Servo2D/scenes/Servo2D.scene.res.xml index e69de29bb2d..ef5f53f7591 100644 --- a/support/magicleap/Servo2D/scenes/Servo2D.scene.res.xml +++ b/support/magicleap/Servo2D/scenes/Servo2D.scene.res.xml @@ -0,0 +1 @@ +<ResourceModel version="1"></ResourceModel>
\ No newline at end of file diff --git a/support/magicleap/Servo2D/scenes/Servo2D.scene.xml b/support/magicleap/Servo2D/scenes/Servo2D.scene.xml index aed589784d8..f542b2611db 100644 --- a/support/magicleap/Servo2D/scenes/Servo2D.scene.xml +++ b/support/magicleap/Servo2D/scenes/Servo2D.scene.xml @@ -1,19 +1,19 @@ <ObjectModel name="Servo2D" version="1"> <TransformNode/> - <UiPanel gravityWellEnabled="false" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="contentPanel" pos="0.000000, 0.060000, 0.000000" shape="[size:[0.5,0.44], roundness: 0, offset[0,0,0]]"> - <QuadNode castShadow="false" name="content" pos="-0.250000, -0.220000, -0.000000" receiveShadow="false" shader="UnlitColorTex2d" size="0.500000, 0.500000"/> + <UiPanel bottomEdgeConstraint="0.000000" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" leftEdgeConstraint="0.000000" name="contentPanel" pos="0,0.06,0" rightEdgeConstraint="0.000000" shape="[size:[0.5,0.44], roundness: 0, offset:[0,0,0]]" topEdgeConstraint="0.000000"> + <QuadNode castShadow="false" name="content" pos="-0.25,-0.22,-0" receiveShadow="false" shader="MAX" size="0.500000, 0.500000"/> </UiPanel> - <UiLinearLayout alignment="Top, Center" gravityWellEnabled="false" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" itemAlignment="Center, Left" itemPadding="0.000000, 0.010000, 0.000000, 0.010000" name="uiLinearLayout1" orientation="Horizontal" pos="0.000000, -0.200000, 0.000000" size="0.500000, 0.050000"> + <UiLinearLayout alignment="Top, Center" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" itemAlignment="Center, Left" itemPadding="0.000000, 0.010000, 0.000000, 0.010000" name="uiLinearLayout1" orientation="Horizontal" pos="0,-0.2,0" size="0.500000, 0.050000"> <Content> - <UiButton gravityWellEnabled="false" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="backButton" pos="0.000000, -0.600000, 0.000000" size="0.100000, 0.100000" text="Back" textSize="0.050000"/> + <UiButton gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="backButton" pos="0,-0.6,0" size="0.100000, 0.100000" text="Back" textSize="0.050000"/> </Content> <Content> - <UiButton gravityWellEnabled="false" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="fwdButton" size="0.100000, 0.100000" text="Fwd" textSize="0.050000"/> + <UiButton gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="fwdButton" size="0.100000, 0.100000" text="Fwd" textSize="0.050000"/> </Content> <Content> - <UiTextEdit alignment="Center, Left" gravityWellEnabled="false" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="urlBar" scrollSpeed="0.500000" size="0.600000, 0.050000" textSize="0.050000"/> + <UiTextEdit alignment="Center, Left" font="DefaultRes_Font_LominoUI_Rg" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="urlBar" scrollSpeed="0.500000" size="0.600000, 0.050000" textSize="0.050000"/> </Content> </UiLinearLayout> - <LineNode castShadow="false" color="0.000000, 0.000000, 0.000000, 0.000000" name="laser" opaque="false" points="0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000" receiveShadow="false" shader="Line"/> - <QuadNode castShadow="false" color="0.157206, 0.092197, 0.481788, 1.000000" name="bevel" pos="-0.260000, -0.170000, -0.010000" receiveShadow="false" shader="UnlitColorTex2d" size="0.520000, 0.520000"/> + <LineNode castShadow="false" color="0,0,0,0" name="laser" opaque="false" points="0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000" receiveShadow="false" shader="Line"/> + <QuadNode castShadow="false" color="0.1572062,0.09219654,0.4817875,1" name="bevel" pos="-0.26,-0.17,-0.01" receiveShadow="false" shader="MAX" size="0.520000, 0.520000"/> </ObjectModel> |