Pārlūkot izejas kodu

refresh render props if not temp change

ncannasse 7 gadi atpakaļ
vecāks
revīzija
5549c4431b
4 mainītis faili ar 40 papildinājumiem un 5 dzēšanām
  1. 12 0
      bin/style.css
  2. 16 1
      bin/style.less
  3. 5 0
      hide/comp/PropsEditor.hx
  4. 7 4
      hide/view/Model.hx

+ 12 - 0
bin/style.css

@@ -516,6 +516,18 @@ input[type=checkbox]:checked:after {
   margin-left: -17px;
   margin-top: 2px;
 }
+.hide-properties dl dl dt {
+  width: 50px;
+}
+.hide-properties dl dl dd {
+  width: 140px;
+}
+.hide-properties dl dl input[type=range] {
+  width: 90px;
+}
+.hide-properties dl dl .hide-range input[type=text] {
+  width: 30px;
+}
 .hide-properties .group {
   margin-bottom: 5px;
 }

+ 16 - 1
bin/style.less

@@ -503,7 +503,7 @@ input[type=checkbox] {
 		span {
 			display: inline-block;
 			width: 20px;
-		}	
+		}
 	}
 
 	dt {
@@ -559,6 +559,21 @@ input[type=checkbox] {
 
 	}
 
+	dl dl {
+		dt {
+			width : 50px;
+		}
+		dd {
+			width : 140px;
+		}
+		input[type=range] {
+			width : 90px;
+		}
+		.hide-range input[type=text] {
+			width : 30px;
+		}
+	}
+
 	.group {
 		>.title {
 			text-align : center;

+ 5 - 0
hide/comp/PropsEditor.hx

@@ -22,6 +22,7 @@ class PropsEditor extends Component {
 	public var undo : hide.ui.UndoHistory;
 	public var lastChange : Float = 0.;
 	public var fields(default, null) : Array<PropsField>;
+	public var isTempChange = false;
 
 	public function new(?undo,?parent,?el) {
 		super(parent,el);
@@ -158,8 +159,10 @@ class PropsEditor extends Component {
 		for( f in e.find("[field]").elements() ) {
 			var f = new PropsField(this, f, context);
 			f.onChange = function(undo) {
+				isTempChange = f.isTempChange;
 				lastChange = haxe.Timer.stamp();
 				if( onChange != null ) onChange(@:privateAccess f.fname);
+				isTempChange = false;
 			};
 			fields.push(f);
 
@@ -192,6 +195,7 @@ class PropsEditor extends Component {
 class PropsField extends Component {
 
 	public var fname : String;
+	public var isTempChange : Bool;
 	var props : PropsEditor;
 	var context : Dynamic;
 	var current : Dynamic;
@@ -385,6 +389,7 @@ class PropsField extends Component {
 			current = beforeTempChange.value;
 			beforeTempChange = null;
 		}
+		isTempChange = tempChange;
 		if( tempChange ) {
 			tempChange = false;
 			if( beforeTempChange == null ) beforeTempChange = { value : current };

+ 7 - 4
hide/view/Model.hx

@@ -229,14 +229,16 @@ class Model extends FileView {
 			control.loadFromCamera();
 		});
 
-		tools.addButton("gears", "Renderer Properties", function() {
+		function renderProps() {
 			properties.clear();
 
 			var renderer = scene.s3d.renderer;
 			var group = new Element('<div class="group" name="Renderer"></div>');
 			renderer.editProps().appendTo(group);
-			properties.add(group, renderer.props, function(_) renderer.refreshProps());
-
+			properties.add(group, renderer.props, function(_) {
+				renderer.refreshProps();
+				if( !properties.isTempChange ) renderProps();
+			});
 
 			var lprops = {
 				power : Math.sqrt(light.color.r),
@@ -252,7 +254,8 @@ class Model extends FileView {
 				light.color.set(p, p, p);
 			});
 
-		});
+		}
+		tools.addButton("gears", "Renderer Properties", renderProps);
 
 		var axis = new h3d.scene.Graphics(scene.s3d);
 		axis.lineStyle(1,0xFF0000);