public void UpdateInputs() { SortIns(); for (int i = 0; i < groupIns.Count; i++) { if (inputs.Count > i) { //update current input MultiDataInput inp = (MultiDataInput)inputs[i]; GroupInputNode node = (GroupInputNode)groupIns[i].node; if (!inp.GetAllowedDataTypes().Contains(node.dataType)) { inp.SetAllowedDataTypes(new List <Type>(new Type[] { node.dataType })); } } else { //create new input GroupInputNode node = (GroupInputNode)groupIns[i].node; MultiDataInput inp = new MultiDataInput(this, new List <Type>(new Type[] { node.dataType })); inputs.Add(inp); } } //supprime les autres inputs while (inputs.Count > groupIns.Count) { inputs.RemoveAt(groupIns.Count); } }
internal override void PartialSetup() { if (in1.GetDataType() != null || in2.GetDataType() != null) { //if there is something plugged in somewhere //or both are plugged in bool one = true; bool two = false; Type t = in1.GetDataType(); if (t == null) { one = false; two = true; t = in2.GetDataType(); } if (in2.GetDataType() != null) { two = true; } //t is the right type in1.SetAllowedDataTypes(new List <Type>(new Type[] { t })); in2.SetAllowedDataTypes(new List <Type>(new Type[] { t })); if (one) { in1.SetIncommingDataType(t); } if (two) { in2.SetIncommingDataType(t); } outp.SetDataType(t); if (outputs.Count == 0) { outputs.Add(outp); } //both can only accept the right type } if (in1.GetDataType() == null && in2.GetDataType() == null) { //otherwise if both are unplugged, open back the inputs to any type outputs.Clear(); in1.SetAllowedDataTypes(new List <Type>(new Type[] { typeof(Vector2), typeof(Vector3), typeof(float) })); in2.SetAllowedDataTypes(new List <Type>(new Type[] { typeof(Vector2), typeof(Vector3), typeof(float) })); } }
public void InitFromVar() { if (variables.ContainsKey(varName)) { Variable vari = variables[varName]; varType = vari.GetDataType(); inp.SetAllowedDataTypes(new List <Type>(new Type[] { vari.GetDataType() })); outp.SetDataType(vari.GetDataType()); if (varType != null && onTypeChanged != null) { onTypeChanged(varType); } } }