コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }