Brush GetTypeBrush(Type type) { if (type == null) { return(Brushes.Gray); } else if (type == typeof(object)) { return(Brushes.Gray); } else if (type == typeof(Type)) { return(HostNodeControl.TryFindResource("Pin_Type") as Brush); } else if (type == typeof(bool)) { return(HostNodeControl.TryFindResource("Pin_bool") as Brush); } else if (type == typeof(Int16) || type == typeof(Int32) || type == typeof(Int64) || type == typeof(UInt16) || type == typeof(UInt32) || type == typeof(UInt64)) { return(HostNodeControl.TryFindResource("Pin_Int") as Brush); } else if (type == typeof(Byte) || type == typeof(SByte)) { return(HostNodeControl.TryFindResource("Pin_Byte") as Brush); } else if (type == typeof(float) || type == typeof(double)) { return(HostNodeControl.TryFindResource("Pin_Float") as Brush); } else if (type == typeof(string)) { return(HostNodeControl.TryFindResource("Pin_String") as Brush); } else if (type == typeof(EngineNS.Vector2) || type == typeof(EngineNS.Vector3) || type == typeof(EngineNS.Vector4)) { return(HostNodeControl.TryFindResource("Pin_Vector") as Brush); } else if (type == typeof(EngineNS.Quaternion)) { return(HostNodeControl.TryFindResource("Pin_Rotator") as Brush); } else if (type == typeof(EngineNS.Matrix) || type == typeof(EngineNS.Matrix3x2)) { return(HostNodeControl.TryFindResource("Pin_Transform") as Brush); } else if (type.IsEnum) { return(HostNodeControl.TryFindResource("Pin_Enum") as Brush); } else if (type == typeof(IntPtr)) { return(HostNodeControl.TryFindResource("Pin_Intptr") as Brush); } else if (type.IsArray) { return(GetTypeBrush(type.GetElementType())); } else if (type.IsGenericType && type.GetInterface(typeof(IEnumerable).FullName) != null) { var argTypes = type.GetGenericArguments(); if (argTypes.Length == 1) { return(GetTypeBrush(argTypes[0])); } } else if (type.IsValueType) { return(HostNodeControl.TryFindResource("Pin_Struct") as Brush); } else if (type.IsClass) { return(HostNodeControl.TryFindResource("Pin_ClassObject") as Brush); } return(Brushes.Gray); }
Brush GetPinBrush() { if (HostNodeControl == null) { return(null); } switch (LinkType) { case enLinkType.Bool: return(HostNodeControl.TryFindResource("Pin_bool") as Brush); case enLinkType.Int16: case enLinkType.Int32: case enLinkType.Int64: case enLinkType.UInt16: case enLinkType.UInt32: case enLinkType.UInt64: return(HostNodeControl.TryFindResource("Pin_Int") as Brush); case enLinkType.Byte: case enLinkType.SByte: return(HostNodeControl.TryFindResource("Pin_Byte") as Brush); case enLinkType.Single: case enLinkType.Double: case enLinkType.Float1: return(HostNodeControl.TryFindResource("Pin_Float") as Brush); case enLinkType.String: return(HostNodeControl.TryFindResource("Pin_String") as Brush); case enLinkType.NumbericalValue: return(HostNodeControl.TryFindResource("Pin_NumbericalValue") as Brush); case enLinkType.Vector2: case enLinkType.Vector3: case enLinkType.Vector4: case enLinkType.Float2: case enLinkType.Float3: case enLinkType.Float4: case enLinkType.UInt2: case enLinkType.UInt3: case enLinkType.UInt4: return(HostNodeControl.TryFindResource("Pin_Vector") as Brush); case enLinkType.Method: return(HostNodeControl.TryFindResource("Link_MethodBrush") as Brush); case enLinkType.Delegate: return(HostNodeControl.TryFindResource("Link_DelegateBrush") as Brush); case enLinkType.Float4x4: return(HostNodeControl.TryFindResource("Pin_Transform") as Brush); case enLinkType.Struct: return(HostNodeControl.TryFindResource("Pin_Struct") as Brush); case enLinkType.Class: { var type = EngineNS.Rtti.RttiHelper.GetTypeFromTypeFullName(ClassType); if (type == typeof(Type)) { return(HostNodeControl.TryFindResource("Pin_Type") as Brush); } else { return(HostNodeControl.TryFindResource("Pin_ClassObject") as Brush); } } case enLinkType.IntPtr: return(HostNodeControl.TryFindResource("Pin_Intptr") as Brush); case enLinkType.Enumerable: { var type = EngineNS.Rtti.RttiHelper.GetTypeFromTypeFullName(ClassType); if (type == null) { return(Brushes.Gray); } else { return(GetTypeBrush(type)); } } default: { var type = EngineNS.Rtti.RttiHelper.GetTypeFromTypeFullName(ClassType); return(GetTypeBrush(type)); } } }