public NodePointData(int index, string nodeGUID, ConnectionPointType pointType, string parameterType, string parameterName) : base() { this.index = index; this.nodeGUID = nodeGUID; this.pointType = pointType; this.parameterType = parameterType; this.parameterName = parameterName; //unityengine.vector3 어셈블리 이름 타입에 적어줘야함 this.cachedValue = NodeGUIUtility.GetDefaultValue(NodeGUIUtility.GetType(parameterType))?.ToString() ?? "null"; }
public void MakePoints() { if (this.data is NodeFuncData) { NodeFuncData data = this.data as NodeFuncData; List <Type> methodParameters = new List <Type>(); foreach (var point in data.parameters) { methodParameters.Add(NodeGUIUtility.GetType(point)); } if (data.nodeType == NodeType.Constructor) { ConstructorInfo method = NodeGUIUtility.GetType(data.funcClassType).GetConstructor(methodParameters.ToArray()); ParameterInfo[] parameters = method.GetParameters(); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Return, data.funcClassType, "instance")); int index = 1; foreach (var parameter in parameters) { AddPoint(new NodePointData(index++, data.GUID, ConnectionPointType.Parameter, parameter.ParameterType.FullName, parameter.Name)); } } else { Type classType = NodeGUIUtility.GetType(data.funcClassType); MethodInfo method = classType.GetMethod(data.methodName, methodParameters.ToArray()); ParameterInfo[] parameters = method.GetParameters(); int index = 1; if (method.ReturnParameter.ParameterType == typeof(void)) { AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.In, typeof(void).FullName, "Logic", null)); AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.Out, typeof(void).FullName, "Logic", null)); data.nodeType = NodeType.Logic; } else { AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Return, method.ReturnParameter.ParameterType.FullName, method.ReturnParameter.Name)); data.nodeType = NodeType.Func; } if (!method.IsStatic) { AddPoint(new NodePointData(index++, data.GUID, ConnectionPointType.Parameter, data.funcClassType, "This")); } foreach (var parameter in parameters) { AddPoint(new NodePointData(index++, data.GUID, ConnectionPointType.Parameter, parameter.ParameterType.FullName, parameter.Name)); } if (data.methodName.Contains("get_") || data.methodName.Contains("set_")) { data.nodeType = NodeType.Property; } } } else { if (data.nodeType == NodeType.Condition) { AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.In, typeof(void).FullName, "Logic", null)); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Parameter, typeof(bool).FullName, "Condition")); AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.Out, typeof(void).FullName, "Logic", null)); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Out, typeof(void).FullName, "Logic", null)); } else if (data.nodeType == NodeType.For) { AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.In, typeof(void).FullName, "Logic", null)); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Parameter, typeof(int).FullName, "LoofCount")); AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.Out, typeof(void).FullName, "Logic", null)); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Out, typeof(void).FullName, "Logic", null)); } else if (data.nodeType == NodeType.Event) { AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.Out, typeof(void).FullName, "Logic", null)); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Return, typeof(Character).FullName, "Owner", null)); } else if (data.nodeType == NodeType.TimeLine) { AddPoint(new NodePointData(0, data.GUID, ConnectionPointType.Out, typeof(void).FullName, "Logic", null)); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Return, typeof(Character).FullName, "Owner", null)); AddPoint(new NodePointData(1, data.GUID, ConnectionPointType.Parameter, typeof(float).FullName, "Time")); } } }