瀏覽代碼

Support loading multiple scenes

Josh Engebretson 10 年之前
父節點
當前提交
221283e929
共有 2 個文件被更改,包括 18 次插入13 次删除
  1. 1 1
      Resources/EditorData/AtomicEditor/templates/template_component.js
  2. 17 12
      Source/AtomicPlayer/Player.cpp

+ 1 - 1
Resources/EditorData/AtomicEditor/templates/template_component.js

@@ -14,4 +14,4 @@ var component = function (self) {
 
 }
 
-module.exports = component;
+exports.component = component;

+ 17 - 12
Source/AtomicPlayer/Player.cpp

@@ -43,29 +43,34 @@ Scene* Player::LoadScene(const String& filename, Camera *camera)
         return 0;
     }
 
-    SharedPtr<Scene> scene(new Scene(context_));
+    Scene* scene = new Scene(context_);
 
     if (!scene->LoadXML(*file))
     {
+        scene->ReleaseRef();
         return 0;
     }
 
-    currentScene_ = scene;
-
-    if(!camera)
+    if (currentScene_.Null())
     {
-        PODVector<Node*> cameraNodes;
-        scene->GetChildrenWithComponent(cameraNodes, Camera::GetTypeStatic(), true);
-        if (cameraNodes.Size())
+        currentScene_ = scene;
+
+        if(!camera)
         {
-            camera = cameraNodes[0]->GetComponent<Camera>();
+            PODVector<Node*> cameraNodes;
+            scene->GetChildrenWithComponent(cameraNodes, Camera::GetTypeStatic(), true);
+            if (cameraNodes.Size())
+            {
+                camera = cameraNodes[0]->GetComponent<Camera>();
+            }
         }
-    }
 
-    viewport_->SetScene(scene);
+        viewport_->SetScene(scene);
 
-    if (camera)
-        viewport_->SetCamera(camera);
+        if (camera)
+            viewport_->SetCamera(camera);
+
+    }
 
     return scene;
 }