Преглед изворни кода

Spline: add remove button on each point inspectors

LeoVgr пре 9 месеци
родитељ
комит
40731551b9
3 измењених фајлова са 31 додато и 2 уклоњено
  1. 3 0
      bin/style.css
  2. 4 0
      bin/style.less
  3. 24 2
      hrt/prefab/l3d/Spline.hx

+ 3 - 0
bin/style.css

@@ -3900,6 +3900,9 @@ hide-popover hide-content {
 .spline-editor .points-inspector .content .points-container .point .header .icon:hover {
   color: #ececec;
 }
+.spline-editor .points-inspector .content .points-container .point .header #remove {
+  margin-left: auto;
+}
 .spline-editor .points-inspector .content .points-container .point .header p {
   margin: 0;
 }

+ 4 - 0
bin/style.less

@@ -4569,6 +4569,10 @@ hide-popover {
 							color: #ececec;
 						}
 
+						#remove {
+							margin-left: auto;
+						}
+
 						p {
 							margin: 0;
 						}

+ 24 - 2
hrt/prefab/l3d/Spline.hx

@@ -728,8 +728,9 @@ class Spline extends hrt.prefab.Object3D {
 			var pos = points[pIdx].pos;
 			var el = new hide.Element('<div class="point folded">
 				<div class="header">
-					<div class="icon ico ico-chevron-right"></div>
+					<div id="fold" class="icon ico ico-chevron-right"></div>
 					<p>Point [${pIdx}]</p>
+					<div id="remove" class="icon ico ico-close"></div>
 				</div>
 				<div class="body">
 					<dt>Position</dt><dd><input class="pos-x" type="number" value="${pos.x}"/><input class="pos-y" type="number" value="${pos.y}"/><input type="number" class="pos-z" value="${pos.z}"/></dd>
@@ -742,7 +743,7 @@ class Spline extends hrt.prefab.Object3D {
 				selected = pIdx;
 			});
 
-			var foldBtn = el.find(".icon");
+			var foldBtn = el.find("#fold");
 			foldBtn.click((e) -> {
 				var folded = !el.hasClass('folded');
 				el.toggleClass("folded", folded);
@@ -750,6 +751,27 @@ class Spline extends hrt.prefab.Object3D {
 				foldBtn.toggleClass("ico-chevron-right", folded);
 			});
 
+			var removeBtn = el.find("#remove");
+			removeBtn.click((e) -> {
+				var idxToRemove = pIdx;
+				var p = points[pIdx];
+				removePoint(idxToRemove);
+				this.updateInstance();
+				refreshHandles();
+				refreshPointList(ctx);
+				ctx.properties.undo.change(Custom(function(undo) {
+					if (undo) {
+						addPoint(idxToRemove, p);
+					}
+					else {
+						removePoint(idxToRemove);
+					}
+					this.updateInstance();
+					refreshHandles();
+					refreshPointList(ctx);
+				}));
+			});
+
 			var px = el.find(".pos-x");
 			var py = el.find(".pos-y");
 			var pz = el.find(".pos-z");