浏览代码

Support model changes on Model

trethaller 7 年之前
父节点
当前提交
758770d0f7

+ 1 - 1
hide/prefab/EditContext.hx

@@ -12,7 +12,7 @@ class EditContext {
 	public var cleanups : Array<Void->Void>;
 	public var cleanups : Array<Void->Void>;
 	public var properties : hide.comp.PropsEditor;
 	public var properties : hide.comp.PropsEditor;
 	function get_ide() return hide.ui.Ide.inst;
 	function get_ide() return hide.ui.Ide.inst;
-	public function onChange(p : Prefab) { }
+	public function onChange(p : Prefab, propName : String) { }
 	#end
 	#end
 
 
 	public function new(ctx) {
 	public function new(ctx) {

+ 4 - 1
hide/prefab/Model.hx

@@ -48,11 +48,14 @@ class Model extends Object3D {
 		var props = ctx.properties.add(new hide.Element('
 		var props = ctx.properties.add(new hide.Element('
 			<div class="group" name="Animation">
 			<div class="group" name="Animation">
 				<dl>
 				<dl>
+					<dt>Model</dt><dd><input type="model" field="source"/></dd>
 					<dt>Animation</dt><dd><select><option value="">-- Choose --</option></select>
 					<dt>Animation</dt><dd><select><option value="">-- Choose --</option></select>
 					<dt title="Don\'t save animation changes">Lock</dt><dd><input type="checkbox" field="lockAnimation"></select>
 					<dt title="Don\'t save animation changes">Lock</dt><dd><input type="checkbox" field="lockAnimation"></select>
 				</dl>
 				</dl>
 			</div>
 			</div>
-		'),this);
+		'),this, function(pname) {
+			ctx.onChange(this, pname);
+		});
 
 
 		var select = props.find("select");
 		var select = props.find("select");
 		var anims = ctx.scene.listAnims(source);
 		var anims = ctx.scene.listAnims(source);

+ 2 - 2
hide/prefab/Object3D.hx

@@ -105,9 +105,9 @@ class Object3D extends Prefab {
 			</div>
 			</div>
 		');
 		');
 
 
-		ctx.properties.add(props, this, function(_) {
+		ctx.properties.add(props, this, function(pname) {
 			applyPos(ctx.getContext(this).local3d);
 			applyPos(ctx.getContext(this).local3d);
-			ctx.onChange(this);
+			ctx.onChange(this, pname);
 		});
 		});
 
 
 		for(fname in "x y z rotationX rotationY rotationZ scaleX scaleY scaleZ".split(" ")) {
 		for(fname in "x y z rotationX rotationY rotationZ scaleX scaleY scaleZ".split(" ")) {

+ 1 - 1
hide/prefab/l3d/Instance.hx

@@ -58,7 +58,7 @@ class Instance extends Object3D {
 								mesh.setPos(-0.25, -0.25, -0.25);
 								mesh.setPos(-0.25, -0.25, -0.25);
 								mesh.scale(0.5);
 								mesh.scale(0.5);
 								var mat = mesh.material;
 								var mat = mesh.material;
-								mat.color.setColor(0xff0000ff);
+								mat.color.setColor(parentLayer.color);
 								mat.shadows = false;
 								mat.shadows = false;
 							}
 							}
 						}
 						}

+ 5 - 5
hide/prefab/l3d/Layer.hx

@@ -10,7 +10,7 @@ class Layer extends Object3D {
 		super(parent);
 		super(parent);
 		type = "layer";
 		type = "layer";
 	}
 	}
-	
+
 	public function getCdbModel() {
 	public function getCdbModel() {
 		var levelSheet = getLevelSheet();
 		var levelSheet = getLevelSheet();
 		if(levelSheet == null) return null;
 		if(levelSheet == null) return null;
@@ -48,8 +48,8 @@ class Layer extends Object3D {
 					<dt>Color</dt><dd><input name="colorVal"/></dd>
 					<dt>Color</dt><dd><input name="colorVal"/></dd>
 				</dl>
 				</dl>
 			</div>
 			</div>
-		'),this, function(_) {
-			ctx.onChange(this);
+		'),this, function(pname) {
+			ctx.onChange(this, pname);
 		});
 		});
 		var colorInput = props.find('input[name="colorVal"]');
 		var colorInput = props.find('input[name="colorVal"]');
 		var picker = new hide.comp.ColorPicker(colorInput, false);
 		var picker = new hide.comp.ColorPicker(colorInput, false);
@@ -67,9 +67,9 @@ class Layer extends Object3D {
 						color = newVal;
 						color = newVal;
 					}
 					}
 					picker.value = color;
 					picker.value = color;
-					ctx.onChange(this);
+					ctx.onChange(this, "color");
 				}));
 				}));
-				ctx.onChange(this);
+				ctx.onChange(this, "color");
 			}
 			}
 		}
 		}
 		#end
 		#end

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

@@ -33,8 +33,8 @@ class Level3D extends Library {
 				</dl>
 				</dl>
 			</div>
 			</div>
 		');
 		');
-		ctx.properties.add(props, this, function(_) {
-			ctx.onChange(this);
+		ctx.properties.add(props, this, function(pname) {
+			ctx.onChange(this, pname);
 		});
 		});
 		#end
 		#end
 	}
 	}

+ 6 - 1
hide/view/l3d/Level3D.hx

@@ -1007,7 +1007,7 @@ class Level3D extends FileView {
 		}
 		}
 	}
 	}
 
 
-	public function onPrefabChange(p: PrefabElement) {
+	public function onPrefabChange(p: PrefabElement, ?pname: String) {
 		var level3d = p.to(hide.prefab.l3d.Level3D);
 		var level3d = p.to(hide.prefab.l3d.Level3D);
 		if(level3d != null) {
 		if(level3d != null) {
 			updateGrid();
 			updateGrid();
@@ -1026,6 +1026,11 @@ class Level3D extends FileView {
 				interactives.get(m).visible = !layer.locked;
 				interactives.get(m).visible = !layer.locked;
 			}
 			}
 		}
 		}
+		var model = p.to(hide.prefab.Model);
+		if(model != null && pname == "source") {
+			refresh();
+			return;
+		}
 
 
 		var el = tree.getElement(p);
 		var el = tree.getElement(p);
 		updateTreeStyle(p, el);
 		updateTreeStyle(p, el);

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

@@ -34,8 +34,8 @@ class LevelEditContext extends hide.prefab.EditContext {
 		cleanups = [];
 		cleanups = [];
 	}
 	}
 
 
-	override function onChange(p : PrefabElement) {
+	override function onChange(p : PrefabElement, pname: String) {
 		var level3D : Level3D = cast view;
 		var level3D : Level3D = cast view;
-		level3D.onPrefabChange(p);
+		level3D.onPrefabChange(p, pname);
 	}
 	}
 }
 }