void InputsCountChanged() { //go though each input, if the old input existed update it if not create one //an then delete all the inputs in surplus List <InputVisual> nInputVisuals = new List <InputVisual>(); List <List <Type> > noldInputTypes = new List <List <Type> >(); for (int i = 0; i < node.inputs.Count; i++) { if (inputsVisuals.Length > i) { //if there is and old input here //update it UpdateInput(i); nInputVisuals.Add(inputsVisuals[i]); noldInputTypes.Add(GetDataTypeOrAllowed(node.inputs[i])); } else { //if there is not and old input here //create input InputVisual inp = CreateInputVisual(node.inputs[i], GetInputLabel(i)); inp.name = "input_" + i; List <Type> dataType = GetDataTypeOrAllowed(node.inputs[i]); inp.UpdateType(); PlaceInput(inp, i); nInputVisuals.Add(inp); noldInputTypes.Add(dataType); } } if (inputsVisuals.Length > node.inputs.Count) { //there is some input in surplus //delete them (the surplus) for (int i = node.inputs.Count; i < inputsVisuals.Length; i++) { inputsVisuals[i].Disconnect(); Destroy(inputsVisuals[i].gameObject); } } //resize oldInputTypes and inputVisuals inputsVisuals = nInputVisuals.ToArray(); oldInputTypes = noldInputTypes.ToArray(); }
void BuildInputs() { //Debug.Log("Building inputs for " + GetType()); inputsVisuals = new InputVisual[node.inputs.Count]; oldInputTypes = new List <Type> [inputsVisuals.Length]; for (int i = 0; i < node.inputs.Count; i++)//inputs { InputVisual inp = CreateInputVisual(node.inputs[i], GetInputLabel(i)); inp.name = "input_" + i; inputsVisuals[i] = inp; List <Type> dataTypes = GetDataTypeOrAllowed(node.inputs[i]); inp.UpdateType(); oldInputTypes[i] = dataTypes; } PlaceInputs(); }