Pārlūkot izejas kodu

Always full refresh scene on FX and prefab editor. Fix time playback in FXE

trethaller 6 gadi atpakaļ
vecāks
revīzija
ab736e9a37
4 mainītis faili ar 29 papildinājumiem un 18 dzēšanām
  1. 16 15
      hide/comp/SceneEditor.hx
  2. 7 1
      hide/view/FXEditor.hx
  3. 4 0
      hide/view/Prefab.hx
  4. 2 2
      hide/view/l3d/Level3D.hx

+ 16 - 15
hide/comp/SceneEditor.hx

@@ -74,6 +74,11 @@ class SceneEditorContext extends hide.prefab.EditContext {
 	}
 	}
 }
 }
 
 
+enum RefreshMode {
+	Partial;
+	Full;
+}
+
 class SceneEditor {
 class SceneEditor {
 
 
 	public var tree : hide.comp.IconTree<PrefabElement>;
 	public var tree : hide.comp.IconTree<PrefabElement>;
@@ -340,12 +345,12 @@ class SceneEditor {
 		refresh();
 		refresh();
 	}
 	}
 
 
-	public function refresh( ?callb ) {
-		refreshScene();
+	public function refresh( ?mode: RefreshMode, ?callb: Void->Void) {
+		if(mode == null || mode == Full) refreshScene();
 		refreshTree(callb);
 		refreshTree(callb);
 	}
 	}
 
 
-	public function refreshTree( ?callb ) {
+	function refreshTree( ?callb ) {
 		tree.refresh(function() {
 		tree.refresh(function() {
 			var all = sceneData.flatten(hxd.prefab.Prefab);
 			var all = sceneData.flatten(hxd.prefab.Prefab);
 			for(elt in all) {
 			for(elt in all) {
@@ -810,7 +815,7 @@ class SceneEditor {
 
 
 	public function addObject(e : PrefabElement) {
 	public function addObject(e : PrefabElement) {
 		makeInstance(e);
 		makeInstance(e);
-		refreshTree(() -> selectObjects([e]));
+		refresh(Partial, () -> selectObjects([e]));
 		undo.change(Custom(function(undo) {
 		undo.change(Custom(function(undo) {
 			var fullRefresh = false;
 			var fullRefresh = false;
 			if(undo) {
 			if(undo) {
@@ -818,13 +823,12 @@ class SceneEditor {
 				if(!removeInstance(e))
 				if(!removeInstance(e))
 					fullRefresh = true;
 					fullRefresh = true;
 				e.parent.children.remove(e);
 				e.parent.children.remove(e);
-				if(fullRefresh) refresh();
-				else refreshTree();
+				refresh(fullRefresh ? Full : Partial);
 			}
 			}
 			else {
 			else {
 				e.parent.children.push(e);
 				e.parent.children.push(e);
 				makeInstance(e);
 				makeInstance(e);
-				refreshTree(() -> selectObjects([e]));
+				refresh(Partial, () -> selectObjects([e]));
 			}
 			}
 		}));
 		}));
 	}
 	}
@@ -935,7 +939,7 @@ class SceneEditor {
 
 
 		for(e in elts)
 		for(e in elts)
 			makeInstance(e);
 			makeInstance(e);
-		refreshTree(() -> selectObjects(elts));
+		refresh(Partial, () -> selectObjects(elts));
 
 
 		undo.change(Custom(function(undo) {
 		undo.change(Custom(function(undo) {
 			if( undo ) {
 			if( undo ) {
@@ -945,15 +949,14 @@ class SceneEditor {
 						fullRefresh = true;
 						fullRefresh = true;
 					parent.children.remove(e);
 					parent.children.remove(e);
 				}
 				}
-				if(fullRefresh) refresh();
-				else refreshTree();
+				refresh(fullRefresh ? Full : Partial);
 			}
 			}
 			else {
 			else {
 				for(e in elts) {
 				for(e in elts) {
 					parent.children.push(e);
 					parent.children.push(e);
 					makeInstance(e);
 					makeInstance(e);
 				}
 				}
-				refreshTree();
+				refresh(Partial);
 			}
 			}
 		}));
 		}));
 	}
 	}
@@ -1241,8 +1244,7 @@ class SceneEditor {
 					makeInstance(elt);
 					makeInstance(elt);
 			}
 			}
 
 
-			if(fullRefresh) refresh();
-			else refreshTree();
+			refresh(fullRefresh ? Full : Partial);
 		}));
 		}));
 	}
 	}
 
 
@@ -1277,8 +1279,7 @@ class SceneEditor {
 		}
 		}
 
 
 		function refreshFunc(then) {
 		function refreshFunc(then) {
-			if(fullRefresh) refresh(then);
-			else refreshTree(then);
+			refresh(fullRefresh ? Full : Partial, then);
 		}
 		}
 
 
 		refreshFunc(selectObjects.bind(elts));
 		refreshFunc(selectObjects.bind(elts));

+ 7 - 1
hide/view/FXEditor.hx

@@ -52,6 +52,12 @@ private class FXSceneEditor extends hide.comp.SceneEditor {
 		parent.onSelect(elts);
 		parent.onSelect(elts);
 	}
 	}
 
 
+	override function refresh(?mode, ?callb:Void->Void) {
+		// Always refresh scene
+		refreshScene();
+		refreshTree(callb);
+	}
+
 	override function getNewContextMenu(current: PrefabElement, ?onMake: PrefabElement->Void=null) {
 	override function getNewContextMenu(current: PrefabElement, ?onMake: PrefabElement->Void=null) {
 		if(current != null && current.to(hide.prefab.Shader) != null) {
 		if(current != null && current.to(hide.prefab.Shader) != null) {
 			return parent.getNewTrackMenu(current);
 			return parent.getNewTrackMenu(current);
@@ -957,7 +963,7 @@ class FXEditor extends FileView {
 			anim = cast ctx.local3d;
 			anim = cast ctx.local3d;
 		}
 		}
 		if(!pauseButton.isDown()) {
 		if(!pauseButton.isDown()) {
-			currentTime += scene.speed * dt / hxd.Timer.wantedFPS;
+			currentTime += scene.speed * dt;
 			if(timeLineEl != null)
 			if(timeLineEl != null)
 				timeLineEl.css({left: xt(currentTime)});
 				timeLineEl.css({left: xt(currentTime)});
 			if(currentTime >= previewMax) {
 			if(currentTime >= previewMax) {

+ 4 - 0
hide/view/Prefab.hx

@@ -17,6 +17,10 @@ private class PrefabSceneEditor extends hide.comp.SceneEditor {
 		super.update(dt);
 		super.update(dt);
 		parent.onUpdate(dt);
 		parent.onUpdate(dt);
 	}
 	}
+	override function refresh(?mode, ?callb:Void->Void) {
+		refreshScene();
+		refreshTree(callb);
+	}
 }
 }
 
 
 class Prefab extends FileView {
 class Prefab extends FileView {

+ 2 - 2
hide/view/l3d/Level3D.hx

@@ -91,9 +91,9 @@ private class Level3DSceneEditor extends hide.comp.SceneEditor {
 		return c;
 		return c;
 	}
 	}
 
 
-	override function refresh(?callback) {
+	override function refresh(?mode, ?callback) {
 		parent.onRefresh();
 		parent.onRefresh();
-		super.refresh(callback);
+		super.refresh(mode, callback);
 	}
 	}
 
 
 	override function refreshScene() {
 	override function refreshScene() {