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) })); } }