Updated Servo2D to LRE v0.22.0

This commit is contained in:
Alan Jeffrey 2019-08-09 14:59:13 -05:00
parent 6775c69da1
commit deb06ffcec
29 changed files with 791 additions and 174 deletions

View file

@ -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 ;
}

View file

@ -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) {
}
const std::string & SceneDescriptor::getExportedName() const {
return exportedName_;
int SceneDescriptor::getIndex() const {
return index_;
}
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();
}

View file

@ -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));
}
}
}

View file

@ -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;
}

View file

@ -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() {
}

View file

@ -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() {
}

View file

@ -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)
};

View file

@ -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}
};
}