浏览代码

Model: fix multi animation edit on models

lviguier 2 月之前
父节点
当前提交
11e39443ba
共有 1 个文件被更改,包括 29 次插入19 次删除
  1. 29 19
      hrt/prefab/Model.hx

+ 29 - 19
hrt/prefab/Model.hx

@@ -240,28 +240,38 @@ class Model extends Object3D {
 		var select = new hide.comp.Select(null, props.find("#anim"), elts);
 		select.value = animation;
 		select.onChange = function(newAnim : String) {
-			var v = newAnim;
-			var prev = animation;
-			var obj = local3d;
-			ctx.scene.setCurrent();
-			if( v == "" ) {
-				animation = null;
-				obj.stopAnimation();
-			} else {
-				obj.playAnimation(shared.loadAnimation(v)).loop = true;
-				if( lockAnimation ) return;
-				animation = v;
-			}
-			var newValue = animation;
-			ctx.properties.undo.change(Custom(function(undo) {
-				var obj = local3d;
-				animation = undo ? prev : newValue;
-				if( animation == null ) {
+			var models : Array<Model> = [];
+			for (p in ctx.scene.editor.getSelection())
+				if (Std.isOfType(p, Model))
+					models.push(cast p);
+
+			var prevAnims = [];
+			for (idx => m in models) {
+				var v = newAnim;
+				prevAnims[idx] = m.animation;
+				var obj = m.local3d;
+				ctx.scene.setCurrent();
+				if( v == "" ) {
+					m.animation = null;
 					obj.stopAnimation();
 				} else {
-					obj.playAnimation(shared.loadAnimation(animation)).loop = true;
+					obj.playAnimation(m.shared.loadAnimation(v)).loop = true;
+					if( lockAnimation ) return;
+					m.animation = v;
+				}
+			}
+
+			ctx.properties.undo.change(Custom(function(undo) {
+				for (idx => m in models) {
+					var obj = m.local3d;
+					m.animation = undo ? prevAnims[idx] : newAnim;
+					if( m.animation == null ) {
+						obj.stopAnimation();
+					} else {
+						obj.playAnimation(m.shared.loadAnimation(m.animation)).loop = true;
+					}
+					select.value = m.animation;
 				}
-				select.value = animation;
 			}));
 		};
 	}