Pārlūkot izejas kodu

make s2d/s3d/sevents read only, make setScene public (need correct rebinding for events etc.)

ncannasse 8 gadi atpakaļ
vecāks
revīzija
e437696a7d
1 mainītis faili ar 24 papildinājumiem un 10 dzēšanām
  1. 24 10
      hxd/App.hx

+ 24 - 10
hxd/App.hx

@@ -2,10 +2,10 @@ package hxd;
 
 class App implements h3d.IDrawable {
 
-	public var engine : h3d.Engine;
-	public var s3d : h3d.scene.Scene;
-	public var s2d : h2d.Scene;
-	public var sevents : hxd.SceneEvents;
+	public var engine(default,null) : h3d.Engine;
+	public var s3d(default,null) : h3d.scene.Scene;
+	public var s2d(default,null) : h2d.Scene;
+	public var sevents(default,null) : hxd.SceneEvents;
 
 	public var wantedFPS(get, set) : Float;
 	var isDisposed : Bool;
@@ -30,12 +30,26 @@ class App implements h3d.IDrawable {
 	function onResize() {
 	}
 
-	function setScene3D( s3d : h3d.scene.Scene, disposePrevious = true ) {
-		sevents.removeScene(this.s3d);
-		sevents.addScene(s3d);
-		if( disposePrevious )
-			this.s3d.dispose();
-		this.s3d = s3d;
+	public function setScene( scene : hxd.SceneEvents.InteractiveScene, disposePrevious = true ) {
+		var new2D = Std.instance(scene, h2d.Scene);
+		var new3D = Std.instance(scene, h3d.scene.Scene);
+		if( new2D != null )
+			sevents.removeScene(s2d);
+		if( new3D != null )
+			sevents.removeScene(s3d);
+		sevents.addScene(scene);
+		if( disposePrevious ) {
+			if( new2D != null )
+				s2d.dispose();
+			else if( new3D != null )
+				s3d.dispose();
+			else
+				throw "Can't dispose previous scene";
+		}
+		if( new2D != null )
+			this.s2d = new2D;
+		if( new3D != null )
+			this.s3d = new3D;
 	}
 
 	function setScene2D( s2d : h2d.Scene, disposePrevious = true ) {