void SetShowNativeSize(bool instant) { GImage.Type type = (GImage.Type)m_Type.enumValueIndex; bool showNativeSize = (type == GImage.Type.Simple || type == GImage.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, m_SpriteContent); if (EditorGUI.EndChangeCheck()) { var newSprite = m_Sprite.objectReferenceValue as Sprite; if (newSprite) { GImage.Type oldType = (GImage.Type)m_Type.enumValueIndex; if (newSprite.border.SqrMagnitude() > 0) { m_Type.enumValueIndex = (int)GImage.Type.Sliced; } else if (oldType == GImage.Type.Sliced) { m_Type.enumValueIndex = (int)GImage.Type.Simple; } } (serializedObject.targetObject as GImage).DisableSpriteOptimizations(); } }
/// <summary> /// Sprites's custom properties based on the type. /// </summary> protected void TypeGUI() { EditorGUILayout.PropertyField(m_Type, m_SpriteTypeContent); ++EditorGUI.indentLevel; { GImage.Type typeEnum = (GImage.Type)m_Type.enumValueIndex; bool showSlicedOrTiled = (!m_Type.hasMultipleDifferentValues && (typeEnum == GImage.Type.Sliced || typeEnum == GImage.Type.Tiled)); if (showSlicedOrTiled && targets.Length > 1) { showSlicedOrTiled = targets.Select(obj => obj as GImage).All(img => img.hasBorder); } m_ShowSlicedOrTiled.target = showSlicedOrTiled; m_ShowSliced.target = (showSlicedOrTiled && !m_Type.hasMultipleDifferentValues && typeEnum == GImage.Type.Sliced); m_ShowTiled.target = (showSlicedOrTiled && !m_Type.hasMultipleDifferentValues && typeEnum == GImage.Type.Tiled); m_ShowFilled.target = (!m_Type.hasMultipleDifferentValues && typeEnum == GImage.Type.Filled); GImage image = target as GImage; if (EditorGUILayout.BeginFadeGroup(m_ShowSlicedOrTiled.faded)) { if (image.hasBorder) { EditorGUILayout.PropertyField(m_FillCenter); EditorGUILayout.PropertyField(m_SlicedCenter); } } 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 ((GImage.FillMethod)m_FillMethod.enumValueIndex) { case GImage.FillMethod.Horizontal: m_FillOrigin.intValue = (int)(GImage.OriginHorizontal)EditorGUILayout.EnumPopup("Fill Origin", (GImage.OriginHorizontal)m_FillOrigin.intValue); break; case GImage.FillMethod.Vertical: m_FillOrigin.intValue = (int)(GImage.OriginVertical)EditorGUILayout.EnumPopup("Fill Origin", (GImage.OriginVertical)m_FillOrigin.intValue); break; case GImage.FillMethod.Radial90: m_FillOrigin.intValue = (int)(GImage.Origin90)EditorGUILayout.EnumPopup("Fill Origin", (GImage.Origin90)m_FillOrigin.intValue); break; case GImage.FillMethod.Radial180: m_FillOrigin.intValue = (int)(GImage.Origin180)EditorGUILayout.EnumPopup("Fill Origin", (GImage.Origin180)m_FillOrigin.intValue); break; case GImage.FillMethod.Radial360: m_FillOrigin.intValue = (int)(GImage.Origin360)EditorGUILayout.EnumPopup("Fill Origin", (GImage.Origin360)m_FillOrigin.intValue); break; } EditorGUILayout.PropertyField(m_FillAmount); if ((GImage.FillMethod)m_FillMethod.enumValueIndex > GImage.FillMethod.Vertical) { EditorGUILayout.PropertyField(m_FillClockwise, m_ClockwiseContent); } } EditorGUILayout.EndFadeGroup(); } --EditorGUI.indentLevel; }