@@ -465,116 +465,21 @@ class SceneManager {
465465 ArchiveLoader *archiveLoader = nullptr ;
466466
467467 public:
468- SceneManager (SceneContext *vSceneContext, EntityManager *vEntityManager, ComponentManager *vComponentManager, AssetManager *vAssetManager) :
469- sceneContext (vSceneContext), entityManager(vEntityManager), componentManager(vComponentManager), assetManager(vAssetManager) {
470- timerManager = TimerManager::GetInstance ();
471- archiveLoader = ArchiveLoader::GetInstance ();
472- sceneNodeJsonParser = SceneNodeJsonParser (entityManager, componentManager, assetManager, timerManager);
473- }
474-
475- Scene GetCurrentScene () {
476- return currentScene;
477- }
478-
479- SceneNode GetEntitySceneNode (Entity entity) {
480- assert (HasEntitySceneNode (entity) && " Tried to get scene node that doesn't exist!" );
481- return entityToSceneNodeMap[entity];
482- }
483-
484- bool HasEntitySceneNode (Entity entity) {
485- return entityToSceneNodeMap.count (entity) > 0 ;
486- }
487-
488- void AddSingletonScene (Entity singletonEntity) {
489- SceneNode sceneNode = SceneNode{.entity = singletonEntity};
490- Scene scene = Scene{.rootNode = sceneNode};
491- entityToMainScenesMap.emplace (singletonEntity, scene);
492- }
493-
494- void ChangeToScene (Scene scene) {
495- currentScene = scene;
496- sceneContext->currentSceneEntity = currentScene.rootNode .entity ;
497- entityToMainScenesMap.emplace (currentScene.rootNode .entity , currentScene);
498- AddChild (NULL_ENTITY, currentScene.rootNode .entity );
499- }
500-
501- void AddChild (Entity parent, Entity child) {
502- SceneNode childNode = SceneNode{.entity = child, .parent = parent};
503- if (parent != NULL_ENTITY) {
504- assert ((entityToSceneNodeMap.count (parent) > 0 ) && " Parent scene node doesn't exist!" );
505- SceneNode parentNode = entityToSceneNodeMap[parent];
506- parentNode.children .emplace_back (childNode);
507- entityToSceneNodeMap[parent] = parentNode;
508- if (parentNode.entity == currentScene.rootNode .entity ) {
509- currentScene.rootNode .children .emplace_back (childNode);
510- }
511- }
512- // assert((entityToSceneNodeMap.count(child) <= 0) && "Child already exists!");
513- entityToSceneNodeMap.emplace (childNode.entity , childNode);
514- }
515-
516- std::vector<Entity> GetAllChildEntities (Entity entity) {
517- std::vector<Entity> childrenEntities;
518- SceneNode parentNode = GetEntitySceneNode (entity);
519- for (SceneNode childNode : parentNode.children ) {
520- if (IsEntityInScene (childNode.entity )) {
521- childrenEntities.emplace_back (childNode.entity );
522- }
523- }
524- return childrenEntities;
525- }
526-
527- Entity GetParent (Entity entity) {
528- if (IsEntityInScene (entity)) {
529- SceneNode sceneNode = entityToSceneNodeMap[entity];
530- return sceneNode.parent ;
531- }
532- return NULL_ENTITY;
533- }
534-
535- void RemoveNode (SceneNode sceneNode) {
536- entityToSceneNodeMap.erase (sceneNode.entity );
537- entityToMainScenesMap.erase (sceneNode.entity );
538- entitiesRecentlyRemoved.emplace_back (sceneNode.entity );
539- for (SceneNode childNode : sceneNode.children ) {
540- RemoveNode (childNode);
541- }
542- }
543-
544- void RemoveNode (Entity entity) {
545- if (entityToSceneNodeMap.count (entity) > 0 ) {
546- RemoveNode (entityToSceneNodeMap[entity]);
547- } else {
548- Logger::GetInstance ()->Warn (" Tried to remove non existent entity" );
549- }
550- }
551-
552- std::vector<Entity> FlushRemovedEntities () {
553- std::vector<Entity> removedEntitiesCopy = entitiesRecentlyRemoved;
554- entitiesRecentlyRemoved.clear ();
555- return removedEntitiesCopy;
556- }
557-
558- bool IsEntityInScene (Entity entity) {
559- return entityToSceneNodeMap.count (entity) > 0 ;
560- }
561-
562- Scene LoadSceneFromFile (const std::string &filePath) {
563- nlohmann::json sceneJson = JsonFileHelper::LoadJsonFile (filePath);
564- SceneNode rootNode = sceneNodeJsonParser.ParseSceneJson (sceneJson, true );
565- Scene loadedScene = Scene{.rootNode = rootNode};
566- ChangeToScene (loadedScene);
567- return loadedScene;
568- }
569-
570- Scene LoadSceneFromMemory (const std::string &filePath) {
571- const std::string &sceneArchiveJsonString = archiveLoader->LoadAsString (filePath);
572- nlohmann::json sceneJson = JsonFileHelper::ConvertStringToJson (sceneArchiveJsonString);
573- SceneNode rootNode = sceneNodeJsonParser.ParseSceneJson (sceneJson, true );
574- Scene loadedScene = Scene{.rootNode = rootNode};
575- ChangeToScene (loadedScene);
576- return loadedScene;
577- }
468+ SceneManager (SceneContext *vSceneContext, EntityManager *vEntityManager, ComponentManager *vComponentManager, AssetManager *vAssetManager);
469+ Scene GetCurrentScene ();
470+ SceneNode GetEntitySceneNode (Entity entity);
471+ bool HasEntitySceneNode (Entity entity) const ;
472+ // void AddSingletonScene(Entity singletonEntity);
473+ void ChangeToScene (Scene scene);
474+ void AddChild (Entity parent, Entity child);
475+ std::vector<Entity> GetAllChildEntities (Entity entity);
476+ Entity GetParent (Entity entity);
477+ void RemoveNode (SceneNode sceneNode);
478+ // void RemoveNode(Entity entity);
479+ std::vector<Entity> FlushRemovedEntities ();
480+ bool IsEntityInScene (Entity entity) const ;
481+ Scene LoadSceneFromFile (const std::string &filePath);
482+ Scene LoadSceneFromMemory (const std::string &filePath);
578483};
579484
580485class SceneNodeHelper {
0 commit comments