Example #1
0
        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);
            }
        }
Example #3
0
        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();
 }
Example #6
0
        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();
        }
Example #7
0
        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();
        }