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"); } }
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; } }