Example #1
0
        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);
        }
Example #2
0
        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));
            }
            }
        }