private void AddSprite(Rect frame, int alignment, Vector2 pivot, AutoSlicingMethod slicingMethod, ref int index) { if (slicingMethod != AutoSlicingMethod.DeleteAll) { // Smart: Whenever we overlap, we just modify the existing rect and keep its other properties // Safe: We only add new rect if it doesn't overlap existing one SpriteRect existingSprite = GetExistingOverlappingSprite(frame); if (existingSprite != null) { if (slicingMethod == AutoSlicingMethod.Smart) { existingSprite.rect = frame; existingSprite.alignment = (SpriteAlignment)alignment; existingSprite.pivot = pivot; } } else { while (AddSprite(frame, alignment, pivot, GenerateSpriteNameWithIndex(index++), Vector4.zero) == -1) { } } } else { while (AddSprite(frame, alignment, pivot, GenerateSpriteNameWithIndex(index++), Vector4.zero) == -1) { } } }
private void AddSprite(Rect frame, int alignment, Vector2 pivot, AutoSlicingMethod slicingMethod, ref int index) { if (slicingMethod != AutoSlicingMethod.DeleteAll) { // Smart: Whenever we overlap, we just modify the existing rect and keep its other properties // Safe: We only add new rect if it doesn't overlap existing one SpriteRect existingSprite = GetExistingOverlappingSprite(frame); if (existingSprite != null) { if (slicingMethod == AutoSlicingMethod.Smart) { existingSprite.rect = frame; existingSprite.alignment = (SpriteAlignment)alignment; existingSprite.pivot = pivot; } } else { AddSpriteWithUniqueName(frame, alignment, pivot, kDefaultColliderAlphaCutoff, kDefaultColliderDetail, index++, Vector4.zero); } } else { AddSprite(frame, alignment, pivot, kDefaultColliderAlphaCutoff, kDefaultColliderDetail, GetSpriteNamePrefix() + "_" + index++, Vector4.zero); } }
private void AddSprite(Rect frame, int alignment, Vector2 pivot, AutoSlicingMethod slicingMethod, int originalCount, ref int index) { switch (slicingMethod) { case AutoSlicingMethod.DeleteAll: { while (AddSprite(frame, alignment, pivot, GenerateSpriteNameWithIndex(index++), Vector4.zero, false) == -1) { } } break; case AutoSlicingMethod.Smart: { SpriteRect existingSprite = GetExistingOverlappingSprite(frame, originalCount, true); if (existingSprite != null) { existingSprite.rect = frame; existingSprite.alignment = (SpriteAlignment)alignment; existingSprite.pivot = pivot; } else { while (AddSprite(frame, alignment, pivot, GenerateSpriteNameWithIndex(index++), Vector4.zero) == -1) { } } } break; case AutoSlicingMethod.Safe: { if (GetExistingOverlappingSprite(frame, originalCount) == null) { while (AddSprite(frame, alignment, pivot, GenerateSpriteNameWithIndex(index++), Vector4.zero) == -1) { } } } break; } }
private void AddSprite(Rect frame, int alignment, Vector2 pivot, AutoSlicingMethod slicingMethod) { if (slicingMethod != AutoSlicingMethod.DeleteAll) { SpriteRect existingOverlappingSprite = this.GetExistingOverlappingSprite(frame); if (existingOverlappingSprite != null) { if (slicingMethod == AutoSlicingMethod.Smart) { existingOverlappingSprite.m_Rect = frame; existingOverlappingSprite.m_Alignment = (SpriteAlignment) alignment; existingOverlappingSprite.m_Pivot = pivot; } } else { this.AddSprite(frame, alignment, pivot, this.defaultColliderAlphaCutoff, this.defaultColliderDetail); } } else { this.AddSprite(frame, alignment, pivot, this.defaultColliderAlphaCutoff, this.defaultColliderDetail); } }
public void DoAutomaticSlicing(int minimumSpriteSize, int alignment, Vector2 pivot, AutoSlicingMethod slicingMethod) { Undo.RegisterCompleteObjectUndo(this.m_RectsCache, "Automatic Slicing"); if (slicingMethod == AutoSlicingMethod.DeleteAll) { this.m_RectsCache.ClearAll(); } List<Rect> rects = new List<Rect>(InternalSpriteUtility.GenerateAutomaticSpriteRectangles(base.m_Texture, minimumSpriteSize, 0)); foreach (Rect rect in this.SortRects(rects)) { this.AddSprite(rect, alignment, pivot, slicingMethod); } this.selected = null; this.textureIsDirty = true; base.Repaint(); }
public void DoGridSlicing(Vector2 size, Vector2 offset, Vector2 padding, int alignment, Vector2 pivot, AutoSlicingMethod slicingMethod, bool keepEmptyRects = false) { var textureToUse = GetTextureToSlice(); Rect[] frames = InternalSpriteUtility.GenerateGridSpriteRectangles((UnityTexture2D)textureToUse, offset, size, padding, keepEmptyRects); undoSystem.RegisterCompleteObjectUndo(m_RectsCache, "Grid Slicing"); if (slicingMethod == AutoSlicingMethod.DeleteAll) { m_RectsCache.Clear(); } int index = 0; int originalCount = m_RectsCache.spriteRects.Count; foreach (Rect frame in frames) { AddSprite(frame, alignment, pivot, slicingMethod, originalCount, ref index); } selected = null; spriteEditor.SetDataModified(); Repaint(); }
public void DoAutomaticSlicing(int minimumSpriteSize, int alignment, Vector2 pivot, AutoSlicingMethod slicingMethod) { undoSystem.RegisterCompleteObjectUndo(m_RectsCache, "Automatic Slicing"); if (slicingMethod == AutoSlicingMethod.DeleteAll) { m_RectsCache.Clear(); } var textureToUse = GetTextureToSlice(); List <Rect> frames = new List <Rect>(InternalSpriteUtility.GenerateAutomaticSpriteRectangles((UnityTexture2D)textureToUse, minimumSpriteSize, 0)); frames = SortRects(frames); int index = 0; int originalCount = m_RectsCache.spriteRects.Count; foreach (Rect frame in frames) { AddSprite(frame, alignment, pivot, slicingMethod, originalCount, ref index); } selected = null; spriteEditor.SetDataModified(); Repaint(); }