// -- 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 #include #include #include #include #include class PrismSceneManager { public: typedef std::function (*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]; };