瀏覽代碼

DynamicBones: add additive toggle

lviguier 7 月之前
父節點
當前提交
d1a9fd6797
共有 1 個文件被更改,包括 9 次插入4 次删除
  1. 9 4
      hide/view/Model.hx

+ 9 - 4
hide/view/Model.hx

@@ -643,6 +643,7 @@ class Model extends FileView {
 				<div class="group" name="Local parameters">
 					<dt>Is Dynamic</dt><dd><input id="dynamic" type="checkbox"/></dd>
 					<div class="dynamic-edition">
+						<dt title="Should dynamic movement be applied on existing animation movement or not">Additive</dt><dd><input type="checkbox" id="additive"/></dd>
 						<dt title="Reduction of the amplitude of the oscillation movement">Damping</dt><dd><input id="damping" type="number" step="0.1" min="0" max="1"/></dd>
 						<dt title="Reduction factor applied on globale force">Resistance</dt><dd><input id="resistance" type="number" step="0.1" min="0" max="1"/></dd>
 						<dt title="Rigidity of the bone">Stiffness</dt><dd><input id="stiffness" type="number" step="0.1" min="0" max="1"/></dd>
@@ -742,17 +743,21 @@ class Model extends FileView {
 
 			var dynJoin = Std.downcast(j?.subs[0], h3d.anim.Skin.DynamicJoint);
 			if (dynJoin != null) {
-				var params = ["damping", "resistance", "stiffness", "slackness"];
+				var params = ["damping", "resistance", "stiffness", "slackness", "additive"];
 				for (param in params) {
 					var el = dynJointEl.find('#$param');
-					el.val(Reflect.field(dynJoin, param));
+					if (el.is(':checkbox'))
+						el.prop("checked", Reflect.field(dynJoin, param));
+					else
+						el.val(Reflect.field(dynJoin, param));
 					el.change(function(e) {
 						var oldJoints = skinData.allJoints.copy();
 						function apply(j : h3d.anim.Skin.Joint, param : String, v : Dynamic) {
-							Reflect.setField(j, param, Std.parseFloat(el.val()));
+							var v : Dynamic = el.is(':checkbox') ? el.is(':checked') : Std.parseFloat(el.val());
+							Reflect.setField(j, param, v);
 							if (synced && j.subs != null) {
 								for (s in j.subs)
-									apply(s, param, Std.parseFloat(el.val()));
+									apply(s, param, v);
 							}
 						}
 						for (s in dynJoin.parent.subs)