您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
41 行
1.2 KiB
41 行
1.2 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System;
|
|
using System.Reflection;
|
|
using System.Linq;
|
|
using UnityEditor.Experimental.UIElements.GraphView;
|
|
using UnityEngine.Experimental.UIElements;
|
|
|
|
namespace GraphProcessor
|
|
{
|
|
public static class PortBehaviorFactory
|
|
{
|
|
static Dictionary<Type, Type> portBehaviors = new Dictionary<Type, Type>();
|
|
|
|
static PortBehaviorFactory()
|
|
{
|
|
foreach (var type in AppDomain.CurrentDomain.GetAllTypes())
|
|
{
|
|
var customPortBehaviorAttr = type.GetCustomAttribute< CustomPortBehaviorAttribute >();
|
|
|
|
if (customPortBehaviorAttr == null)
|
|
continue ;
|
|
|
|
portBehaviors[customPortBehaviorAttr.targetType] = type;
|
|
}
|
|
}
|
|
|
|
public static void CreatePortBehavior(BaseNodeView nodeView, FieldInfo field, Direction direction, EdgeConnectorListener listener, bool isMultiple, string name)
|
|
{
|
|
Type behaviorType;
|
|
|
|
portBehaviors.TryGetValue(field.FieldType, out behaviorType);
|
|
|
|
if (behaviorType == null)
|
|
behaviorType = typeof(DefaultPortBehavior);
|
|
|
|
Activator.CreateInstance(behaviorType, nodeView, field, direction, listener, isMultiple, name);
|
|
}
|
|
}
|
|
}
|