ソースを参照

Extract addTrackEdit

trethaller 7 年 前
コミット
e576e4cf43
1 ファイル変更79 行追加75 行削除
  1. 79 75
      hide/view/FXScene.hx

+ 79 - 75
hide/view/FXScene.hx

@@ -314,6 +314,84 @@ class FXScene extends FileView {
 		}
 	}
 
+	function addTrackEdit(curve: hide.prefab.Curve, tracksEl: Element) {
+		var trackEl = new Element('<div class="track">
+			<div class="track-header">
+				<div class="track-prop">
+					<label>${curve.name}</label>
+					<div class="track-toggle"><div class="icon fa"></div></div>
+				</div>
+				<div class="dopesheet"></div>
+			</div>
+			<div class="curve"></div>
+		</div>');
+		var trackToggle = trackEl.find(".track-toggle");
+		tracksEl.append(trackEl);
+
+		var curveContainer = trackEl.find(".curve");
+		var curveEdit = new hide.comp.CurveEditor(this.undo, curveContainer);
+		var cpath = curve.getAbsPath();
+		var trackKey = "trackVisible:" + cpath;
+		var expand = getDisplayState(trackKey) == true;
+		curveEdit.saveDisplayKey = getPath() + "/" + cpath;
+		curveEdit.lockViewX = true;
+		curveEdit.xOffset = xOffset;
+		curveEdit.xScale = xScale;
+		curveEdit.curve = curve;
+		curveEdits.push(curveEdit);
+		function updateExpanded() {
+			var icon = trackToggle.find(".icon");
+			if(expand)
+				icon.removeClass("fa-angle-right").addClass("fa-angle-down");
+			else
+				icon.removeClass("fa-angle-down").addClass("fa-angle-right");
+			curveContainer.toggleClass("hidden", !expand);
+		}
+		trackToggle.click(function(e) {
+			expand = !expand;
+			saveDisplayState(trackKey, expand);
+			updateExpanded();
+		});
+		var dopesheet = trackEl.find(".dopesheet");
+		function refreshDopesheet() {
+			dopesheet.empty();
+			for(key in curve.keys) {
+				var keyEl = new Element('<span class="key">').appendTo(dopesheet);
+				function update() keyEl.css({left: xt(key.time)});
+				update();
+				keyEl.mousedown(function(e) {
+					var offset = dopesheet.offset();
+					var prevVal = key.time;
+					startDrag(function(e) {
+						var x = ixt(e.clientX - offset.left);
+						key.time = x;
+						curveEdit.refreshGraph(true, key);
+						update();
+					}, function(e) {
+						curveEdit.refreshGraph();
+						var newVal = key.time;
+						undo.change(Custom(function(undo) {
+							if(undo)
+								key.time = prevVal;
+							else
+								key.time = newVal;
+							update();
+							curveEdit.refreshGraph();
+						}));
+					});
+				});
+				refreshDopesheetKeys.push(function(anim) {
+					update();
+				});
+			}
+		}
+		refreshDopesheet();
+		curveEdit.onChange = function(anim) {
+			refreshDopesheet();
+		}
+		updateExpanded();
+	}
+
 	function rebuildAnimPanel() {
 		var selection = sceneEditor.getSelection();
 		var scrollPanel = element.find(".anim-scroll");
@@ -349,81 +427,7 @@ class FXScene extends FileView {
 			var tracksEl = objPanel.find(".tracks");
 			var curves = elt.getAll(hide.prefab.Curve);
 			for(curve in curves) {
-				var trackEl = new Element('<div class="track">
-					<div class="track-header">
-						<div class="track-prop">
-							<label>${curve.name}</label>
-							<div class="track-toggle"><div class="icon fa"></div></div>
-						</div>
-						<div class="dopesheet"></div>
-					</div>
-					<div class="curve"></div>
-				</div>');
-				var trackToggle = trackEl.find(".track-toggle");
-				tracksEl.append(trackEl);
-
-				var curveContainer = trackEl.find(".curve");
-				var curveEdit = new hide.comp.CurveEditor(this.undo, curveContainer);
-				var cpath = curve.getAbsPath();
-				var trackKey = "trackVisible:" + cpath;
-				var expand = getDisplayState(trackKey) == true;
-				curveEdit.saveDisplayKey = getPath() + "/" + cpath;
-				curveEdit.lockViewX = true;
-				curveEdit.xOffset = xOffset;
-				curveEdit.xScale = xScale;
-				curveEdit.curve = curve;
-				curveEdits.push(curveEdit);
-				function updateExpanded() {
-					var icon = trackToggle.find(".icon");
-					if(expand)
-						icon.removeClass("fa-angle-right").addClass("fa-angle-down");
-					else
-						icon.removeClass("fa-angle-down").addClass("fa-angle-right");
-					curveContainer.toggleClass("hidden", !expand);
-				}
-				trackToggle.click(function(e) {
-					expand = !expand;
-					saveDisplayState(trackKey, expand);
-					updateExpanded();
-				});
-				var dopesheet = trackEl.find(".dopesheet");
-				function refreshDopesheet() {
-					dopesheet.empty();
-					for(key in curve.keys) {
-						var keyEl = new Element('<span class="key">').appendTo(dopesheet);
-						function update() keyEl.css({left: xt(key.time)});
-						update();
-						keyEl.mousedown(function(e) {
-							var offset = dopesheet.offset();
-							var prevVal = key.time;
-							startDrag(function(e) {
-								var x = ixt(e.clientX - offset.left);
-								key.time = x;
-								curveEdit.refreshGraph(true, key);
-								update();
-							}, function(e) {
-								curveEdit.refreshGraph();
-								var newVal = key.time;
-								undo.change(Custom(function(undo) {
-									if(undo)
-										key.time = prevVal;
-									else
-										key.time = newVal;
-									update();
-									curveEdit.refreshGraph();
-								}));
-							});
-						});
-						refreshDopesheetKeys.push(function(anim) {
-							update();
-						});
-					}
-				}
-				refreshDopesheet();
-				curveEdit.onChange = function(anim) {
-					refreshDopesheet();
-				}
-				updateExpanded();
+				addTrackEdit(curve, tracksEl);
 			}
 		}
 	}