75 lines
2.3 KiB
C++
75 lines
2.3 KiB
C++
// -- 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];
|
|
};
|
|
|