public override void OnConnection(IPortModel selfConnectedPortModel, IPortModel otherConnectedPortModel) { var connectedInputTypes = this.InputsByDisplayOrder .Select(i => { if (i == selfConnectedPortModel) // not connected yet { return(otherConnectedPortModel?.DataTypeHandle.ToValueTypeOrUnknown() ?? ValueType.Unknown); } if (i.IsConnected) { return(i.ConnectionPortModels.First().DataTypeHandle.ToValueTypeOrUnknown()); } return(ValueType.Unknown); }).ToArray(); var bestCandidate = MathOperationsMetaData.ScoreCompatibleMethodsAccordingToInputParameters(m_CompatibleMethods, connectedInputTypes) .FirstOrDefault(); if (bestCandidate.Score > 0) { m_CurrentMethod = bestCandidate.Signature; var mathGenericNode = TypedNode; mathGenericNode.Type = (MathGeneratedFunction)Enum.Parse(typeof(MathGeneratedFunction), bestCandidate.Signature.EnumName); Node = mathGenericNode; DefineNode(); } base.OnConnection(selfConnectedPortModel, otherConnectedPortModel); }
PortCountProperties InputPortCountData() { var portCount = TypedNode.Inputs.DataCount; var result = new PortCountProperties { Min = portCount, Max = portCount, Name = "Input" }; var methodName = TypedNode.Function.GetMethodsSignature().OpType; if (MathOperationsMetaData.MethodNameSupportsMultipleInputs(methodName)) { result.Max = -1; result.Min = 2; } return(result); }