void SetShowNativeSize(bool instant) { ImageUI.Type type = (ImageUI.Type)m_Type.enumValueIndex; bool showNativeSize = (type == ImageUI.Type.Simple || type == ImageUI.Type.Filled) && m_Sprite.objectReferenceValue != null; base.SetShowNativeSize(showNativeSize, instant); }
/// <summary> /// Draw the atlas and Image selection fields. /// </summary> protected void SpriteGUI() { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_Sprite); if (EditorGUI.EndChangeCheck()) { var newSprite = m_Sprite.objectReferenceValue as Sprite; if (newSprite) { ImageUI.Type oldType = (ImageUI.Type)m_Type.enumValueIndex; if (newSprite.border.SqrMagnitude() > 0) { m_Type.enumValueIndex = (int)ImageUI.Type.Sliced; } else if (oldType == ImageUI.Type.Sliced) { m_Type.enumValueIndex = (int)ImageUI.Type.Simple; } } } }
/// <summary> /// Sprites's custom properties based on the type. /// </summary> protected void TypeGUI() { EditorGUILayout.PropertyField(m_Type); ++EditorGUI.indentLevel; { ImageUI.Type typeEnum = (ImageUI.Type)m_Type.enumValueIndex; bool showSlicedOrTiled = (!m_Type.hasMultipleDifferentValues && (typeEnum == ImageUI.Type.Sliced || typeEnum == ImageUI.Type.Tiled)); if (showSlicedOrTiled && targets.Length > 1) { showSlicedOrTiled = targets.Select(obj => obj as ImageUI).All(img => img.hasBorder); } m_ShowSlicedOrTiled.target = showSlicedOrTiled; m_ShowSliced.target = (showSlicedOrTiled && !m_Type.hasMultipleDifferentValues && typeEnum == ImageUI.Type.Sliced); m_ShowTiled.target = (showSlicedOrTiled && !m_Type.hasMultipleDifferentValues && typeEnum == ImageUI.Type.Tiled); m_ShowFilled.target = (!m_Type.hasMultipleDifferentValues && typeEnum == ImageUI.Type.Filled); ImageUI image = target as ImageUI; if (EditorGUILayout.BeginFadeGroup(m_ShowSlicedOrTiled.faded)) { if (image.hasBorder) { EditorGUILayout.PropertyField(m_FillCenter); } } EditorGUILayout.EndFadeGroup(); if (EditorGUILayout.BeginFadeGroup(m_ShowSliced.faded)) { if (image.sprite != null && !image.hasBorder) { EditorGUILayout.HelpBox("This Image doesn't have a border.", MessageType.Warning); } } EditorGUILayout.EndFadeGroup(); if (EditorGUILayout.BeginFadeGroup(m_ShowTiled.faded)) { if (image.sprite != null && !image.hasBorder && (image.sprite.texture.wrapMode != TextureWrapMode.Repeat || image.sprite.packed)) { EditorGUILayout.HelpBox("It looks like you want to tile a sprite with no border. It would be more efficient to modify the Sprite properties, clear the Packing tag and set the Wrap mode to Repeat.", MessageType.Warning); } } EditorGUILayout.EndFadeGroup(); if (EditorGUILayout.BeginFadeGroup(m_ShowFilled.faded)) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_FillMethod); if (EditorGUI.EndChangeCheck()) { m_FillOrigin.intValue = 0; } switch ((ImageUI.FillMethod)m_FillMethod.enumValueIndex) { case ImageUI.FillMethod.Horizontal: m_FillOrigin.intValue = (int)(ImageUI.OriginHorizontal)EditorGUILayout.EnumPopup("Fill Origin", (ImageUI.OriginHorizontal)m_FillOrigin.intValue); break; case ImageUI.FillMethod.Vertical: m_FillOrigin.intValue = (int)(ImageUI.OriginVertical)EditorGUILayout.EnumPopup("Fill Origin", (ImageUI.OriginVertical)m_FillOrigin.intValue); break; case ImageUI.FillMethod.Radial90: m_FillOrigin.intValue = (int)(ImageUI.Origin90)EditorGUILayout.EnumPopup("Fill Origin", (ImageUI.Origin90)m_FillOrigin.intValue); break; case ImageUI.FillMethod.Radial180: m_FillOrigin.intValue = (int)(ImageUI.Origin180)EditorGUILayout.EnumPopup("Fill Origin", (ImageUI.Origin180)m_FillOrigin.intValue); break; case ImageUI.FillMethod.Radial360: m_FillOrigin.intValue = (int)(ImageUI.Origin360)EditorGUILayout.EnumPopup("Fill Origin", (ImageUI.Origin360)m_FillOrigin.intValue); break; } EditorGUILayout.PropertyField(m_FillAmount); if ((ImageUI.FillMethod)m_FillMethod.enumValueIndex > ImageUI.FillMethod.Vertical) { EditorGUILayout.PropertyField(m_FillClockwise); } } EditorGUILayout.EndFadeGroup(); } --EditorGUI.indentLevel; }