Example #1
0
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        var Attrib       = (TexturePreviewAttribute)attribute;
        var TargetObject = property.serializedObject.targetObject;

        //	show base selector
        var BaseHeight = base.GetPropertyHeight(property, label);
        var PropRect   = EatRect(ref position, BaseHeight);

        EditorGUI.PropertyField(PropRect, property, label, true);

        //	space
        /*var SpaceRect = */ EatRect(ref position, Spacing);
        //GUILayout.Space (Spacing);

        var EnumRect = EatRect(ref position, EnumHeight);

        PreviewMode = (TexturePreviewMode)EditorGUI.EnumPopup(EnumRect, "Preview Mode", PreviewMode as System.Enum);

        try
        {
            var Texture = GetPropertyAsTexture(property);
            Draw(position, Texture, PreviewMode);
        }
        catch
        {
            //EditorGUI.HelpBox (position, e.Message, MessageType.Error);
            Debug.Log("Error");
        }
    }
Example #2
0
    public static void Draw(Rect rect, Texture texture, TexturePreviewMode Mode)
    {
        //	see http://answers.unity3d.com/questions/377207/drawing-a-texture-in-a-custom-propertydrawer.html

        /*	gr: this check is done internally; https://github.com/MattRix/UnityDecompiled/blob/b4b209f8d1c93d66f560bf23c81bc0910cef177c/UnityEditor/UnityEditor/EditorGUI.cs#L6651
         * if (Event.current.type != EventType.Repaint) {
         *      return;
         * }
         */
        if (texture == null)
        {
            EditorGUI.LabelField(rect, "null");
            return;
        }

        switch (Mode)
        {
        case TexturePreviewMode.Colour:
            //Graphics.DrawTexture (rect, texture);
            EditorGUI.DrawPreviewTexture(rect, texture);
            //GUI.DrawTexture( rect, texture, ScaleMode.ScaleToFit, false );
            return;

        case TexturePreviewMode.Alpha:
            //	gr: need an alternative to this
            EditorGUI.DrawTextureAlpha(rect, texture);
            return;

        case TexturePreviewMode.Mixed:
            EditorGUI.DrawTextureTransparent(rect, texture);
            //GUI.DrawTexture( rect, texture, ScaleMode.ScaleToFit, true );
            return;

        case TexturePreviewMode.ColourAndAlpha:
            var ColourRect = EatRect(ref rect, SingleTextureHeight);
            var AlphaRect  = EatRect(ref rect, SingleTextureHeight);
            Draw(ColourRect, texture, TexturePreviewMode.Colour);
            Draw(AlphaRect, texture, TexturePreviewMode.Alpha);
            break;
        }
    }