Browse Source

[shraph] Fix bug when adding new parameter after remove

Clément Espeute 6 months ago
parent
commit
3be2214bb0
2 changed files with 2 additions and 39 deletions
  1. 2 12
      hide/view/shadereditor/ShaderEditor.hx
  2. 0 27
      hrt/shgraph/ShaderGraph.hx

+ 2 - 12
hide/view/shadereditor/ShaderEditor.hx

@@ -424,7 +424,7 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 			values.sort((a, b) -> Reflect.compare(a.index, b.index));
 			return values;
 		};
-		parametersList.getItemName = (v: Parameter) -> v.name;
+		parametersList.getItemName = (v: Parameter) -> v.name + ' (${v.index})';
 		parametersList.reorderItem = reorderParameter;
 		parametersList.removeItem = removeParameter;
 		parametersList.setItemName = renameParameter;
@@ -1071,13 +1071,9 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 		function exec(isUndo:Bool) {
 			if (!isUndo) {
 				var name = "Param_" + paramShaderID;
-				shaderGraph.parametersAvailable.set(paramShaderID, {id: paramShaderID, name : name, type : type, defaultValue : null, variable : shaderGraph.generateParameter(name, type), index : shaderGraph.parametersKeys.length});
-				shaderGraph.parametersKeys.push(paramShaderID);
+				shaderGraph.parametersAvailable.set(paramShaderID, {id: paramShaderID, name : name, type : type, defaultValue : null, variable : shaderGraph.generateParameter(name, type), index : shaderGraph.parametersAvailable.count()});
 			} else {
 				shaderGraph.parametersAvailable.remove(paramShaderID);
-				shaderGraph.parametersKeys.remove(paramShaderID);
-				parametersUpdate.remove(paramShaderID);
-				shaderGraph.checkParameterIndex();
 			}
 			parametersList.refresh();
 		}
@@ -1088,12 +1084,6 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 		parametersList.editTitle(paramShader.index);
 	}
 
-	// function moveParameter(parameter : Parameter, up : Bool) {
-	// 	var parameterElt = parametersList.find("#param_" + parameter.id);
-	// 	var parameterPrev = shaderGraph.parametersAvailable.get(shaderGraph.parametersKeys[shaderGraph.parametersKeys.indexOf(parameter.id) + (up? -1 : 1)]);
-	// 	execMoveParameterTo(parameter, parameterPrev, !up);
-	// }
-
 	function updateParam(id : Int) : Bool {
 		meshPreviewScene.setCurrent(); // needed for texture changes
 

+ 0 - 27
hrt/shgraph/ShaderGraph.hx

@@ -409,7 +409,6 @@ class ShaderGraph extends hrt.prefab.Prefab {
 		super.load(json);
 		graphs = [];
 		parametersAvailable = [];
-		parametersKeys = [];
 
 		for (variable in json.variables ?? []) {
 			variables.push({
@@ -680,7 +679,6 @@ class ShaderGraph extends hrt.prefab.Prefab {
 	var allParameters = [];
 	var current_param_id = 0;
 	public var parametersAvailable : Map<Int, Parameter> = [];
-	public var parametersKeys : Array<Int> = [];
 
 	function generateParameter(name : String, type : Type) : TVar {
 		return {
@@ -696,14 +694,6 @@ class ShaderGraph extends hrt.prefab.Prefab {
 		return parametersAvailable.get(id);
 	}
 
-	public function addParameter(type : Type) {
-		var name = "Param_" + current_param_id;
-		parametersAvailable.set(current_param_id, {id: current_param_id, name : name, type : type, defaultValue : null, variable : generateParameter(name, type), index : parametersKeys.length});
-		parametersKeys.push(current_param_id);
-		current_param_id++;
-		return current_param_id-1;
-	}
-
 	function loadParameters(parameters: Array<Dynamic>) {
 		for (p in parameters) {
 			var typeString : Array<Dynamic> = Reflect.field(p, "type");
@@ -728,17 +718,10 @@ class ShaderGraph extends hrt.prefab.Prefab {
 			}
 			p.variable = generateParameter(p.name, p.type);
 			this.parametersAvailable.set(p.id, p);
-			parametersKeys.push(p.id);
 			current_param_id = p.id + 1;
 		}
-		checkParameterOrder();
-	}
-
-	public function checkParameterOrder() {
-		parametersKeys.sort((x,y) -> Reflect.compare(parametersAvailable.get(x).index, parametersAvailable.get(y).index));
 	}
 
-
 	public function setParameterTitle(id : Int, newName : String) {
 		var p = parametersAvailable.get(id);
 		if (p != null) {
@@ -767,16 +750,6 @@ class ShaderGraph extends hrt.prefab.Prefab {
 
 	public function removeParameter(id : Int) {
 		parametersAvailable.remove(id);
-		parametersKeys.remove(id);
-		checkParameterIndex();
-	}
-
-	public function checkParameterIndex() {
-		for (k in parametersKeys) {
-			var oldParam = parametersAvailable.get(k);
-			oldParam.index = parametersKeys.indexOf(k);
-			parametersAvailable.set(k, oldParam);
-		}
 	}
 
 	/**