예제 #1
0
        protected override Data.OverloadSetting GetOverload(Type neosType)
        {
            NodeOverload typeOverload = neosType.GetCustomAttribute <NodeOverload>();

            if (Overloads.TryGetValue(neosType.FullName, out Data.OverloadSetting overloadSetting))
            {
                return(overloadSetting);
            }
            if (typeOverload != null)
            {
                if (Overloads.TryGetValue(typeOverload.FunctionName, out overloadSetting))
                {
                    return(overloadSetting);
                }
                Type foundTypeOverload = LogixHelper.GetMatchingOverload(typeOverload.FunctionName, null, new Func <Type, int>(GetTypeRank));
                if (foundTypeOverload != null)
                {
                    OverloadCache.Add(typeOverload.FunctionName);
                    return(new Data.OverloadSetting {
                        OverloadType = foundTypeOverload?.FullName
                    });
                }
            }
            return(new Data.OverloadSetting {
                OverloadType = neosType.FullName
            });
        }
예제 #2
0
        public override bool ValidateProcessor(Type neosType)
        {
            NodeOverload typeOverload = neosType.GetCustomAttribute <NodeOverload>();
            Category     typeCategory = GetCategory(neosType);

            if (typeOverload != null && OverloadCache.Contains(typeOverload.FunctionName))
            {
                return(false);
            }

            if (typeCategory != null && typeCategory.Paths.Any((s) => s == "Hidden"))
            {
                return(false);
            }

            return(neosType.IsSubclassOf(typeof(Component)) &&
                   neosType.IsSubclassOf(typeof(LogixNode)) &&
                   !TypeBlacklist.Contains(neosType.FullName));
        }