Esempio n. 1
0
    // EditorGUI.DrawTextureTransparent(new Rect(25, 0, 100f, 100f))
    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        createGroupName = EditorGUILayout.TextField(createGroupName);
        if (GUILayout.Button("AddSpriteGroup", GUILayout.Width(110f)))
        {
            if (spriteDatabase.KeyOverlapCheck(createGroupName))
            {
                int i = spriteDatabase.AddSpriteGroup(createGroupName);

                if (i != -1)
                {
                    selectSpriteGroupIndex = i;
                    GetSpriteGroup();
                }
            }
            else
            {
                EditorUtility.DisplayDialog("Error", "Group Name Is Already Exists", "ok");
            }
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        createSpriteSetName = EditorGUILayout.TextField(createSpriteSetName);
        if (GUILayout.Button("AddSpriteSet", GUILayout.Width(110f)))
        {
            if (spriteDatabase.FindListFromIndex(selectSpriteGroupIndex) != null)
            {
                if (spriteDatabase.SpriteSetNameOverlapCheck(selectSpriteGroupIndex, createSpriteSetName))
                {
                    int i = spriteDatabase.AddSpriteSet(selectSpriteGroupIndex, new SpriteDatabase.SpriteSet(createSpriteSetName));

                    selectSpriteSetIndex = i == -1 ? selectSpriteSetIndex : i;
                    GetNames();
                }
                else
                {
                    EditorUtility.DisplayDialog("Error", "Group Name Is Already Exists", "ok");
                }
            }
            else
            {
                EditorUtility.DisplayDialog("Error", "List is null", "ok");
            }
        }
        EditorGUILayout.EndHorizontal();

        // GUILayout.Label("ViewImageSize");

        // EditorGUILayout.BeginHorizontal();

        // // GUILayout.Label("Width",GUILayout.Width(50f));
        // // imageWidth = EditorGUILayout.IntField(imageWidth,GUILayout.Width(100f));
        // // GUILayout.Label("Height",GUILayout.Width(50f));
        // // imageHeight = EditorGUILayout.IntField(imageHeight,GUILayout.Width(100f));

        // EditorGUILayout.EndHorizontal();

        // spriteListArea = new Rect(position.width - 150f,0f,150f,250f);
        // GUILayout.BeginArea(spriteListArea);

        selectSpriteGroupIndex = EditorGUILayout.Popup("Group", selectSpriteGroupIndex, spriteGroup);
        if (prevSpriteGroupIndex != selectSpriteGroupIndex)
        {
            SpriteGroupSelect();

            selectSpriteSetIndex = 0;

            GetNames();
            GetSprites();
        }

        if (names != null && names.Length != 0)
        {
            selectSpriteSetIndex = EditorGUILayout.Popup("SpriteSet", selectSpriteSetIndex, names);
            GetSprites();
        }
        GUILayout.BeginVertical("box");

        UnityEngine.Object[] objects = DropAreaGUI();

        spritesScrollPos = GUILayout.BeginScrollView(spritesScrollPos);

        if (objects != null)
        {
            List <SpriteDatabase.SpriteSet> list = spriteDatabase.FindListFromIndex(selectSpriteGroupIndex);
            if (list != null)
            {
                if (list.Count > selectSpriteSetIndex)
                {
                    if (list[selectSpriteSetIndex].sprites == null)
                    {
                        list[selectSpriteSetIndex].sprites = new Sprite[objects.Length];
                    }
                    else
                    {
                        Array.Resize(ref list[selectSpriteSetIndex].sprites, objects.Length);
                    }

                    Type type = objects[0].GetType();

                    if (type == typeof(Texture2D))
                    {
                        for (int i = 0; i < objects.Length; ++i)
                        {
                            string path = AssetDatabase.GetAssetPath(objects[i]);
                            list[selectSpriteSetIndex].sprites[i] = AssetDatabase.LoadAssetAtPath(path, typeof(Sprite)) as Sprite;
                        }
                    }
                    else if (type == typeof(Sprite))
                    {
                        for (int i = 0; i < objects.Length; ++i)
                        {
                            list[selectSpriteSetIndex].sprites[i] = objects[i] as Sprite;
                        }
                    }

                    spriteDatabase.SaveDirty();
                }
                else
                {
                    EditorUtility.DisplayDialog("Error", "List is null", "ok");
                }
            }
            else
            {
                EditorUtility.DisplayDialog("Error", "List is null", "ok");
            }
        }

        if (sprites != null)
        {
            for (int i = 0; i < sprites.Length; ++i)
            {
                sprites[i] = EditorGUILayout.ObjectField(sprites[i], typeof(Sprite), true) as Sprite;
            }
        }

        GUILayout.EndScrollView();

        GUILayout.BeginHorizontal();

        if (GUILayout.Button("DeleteSpriteSet"))
        {
            int i = spriteDatabase.DeleteSpriteSet(selectSpriteGroupIndex, selectSpriteSetIndex);

            if (i != -2)
            {
                selectSpriteSetIndex = i == -1 ? 0 : i;
                GetSprites();
                GetNames();
            }
            else
            {
                EditorUtility.DisplayDialog("Error", "List is Empty", "ok");
            }
        }
        if (GUILayout.Button("DeleteGroup"))
        {
            int i = spriteDatabase.DeleteSpriteGroup(selectSpriteGroupIndex);

            if (i != -2)
            {
                selectSpriteGroupIndex = i == -1 ? 0 : i;

                GetSprites();
                GetNames();
                GetSpriteGroup();
            }
            else
            {
                EditorUtility.DisplayDialog("Error", "List is Empty", "ok");
            }
        }

        GUILayout.EndHorizontal();

        GUILayout.EndVertical();

        GUILayout.BeginHorizontal();

        if (GUILayout.Button("Add Sprite"))
        {
            List <SpriteDatabase.SpriteSet> list = spriteDatabase.FindListFromIndex(selectSpriteGroupIndex);

            if (list != null)
            {
                if (list.Count > selectSpriteSetIndex)
                {
                    if (list[selectSpriteSetIndex].sprites == null)
                    {
                        list[selectSpriteSetIndex].sprites = new Sprite[1];
                    }
                    else
                    {
                        Array.Resize(ref list[selectSpriteSetIndex].sprites, list[selectSpriteSetIndex].sprites.Length + 1);
                    }

                    EditorUtility.SetDirty(spriteDatabase);

                    GetSprites();
                }
                else if (list.Count == 0)
                {
                    EditorUtility.DisplayDialog("Error", "List is Empty", "ok");
                }
            }
            else
            {
                EditorUtility.DisplayDialog("Error", "List is null", "ok");
            }
        }

        if (GUILayout.Button("Delete Sprite"))
        {
            List <SpriteDatabase.SpriteSet> list = spriteDatabase.FindListFromIndex(selectSpriteGroupIndex);

            if (list != null)
            {
                if (list.Count > selectSpriteSetIndex)
                {
                    if (list[selectSpriteSetIndex].sprites == null)
                    {
                        EditorUtility.DisplayDialog("Error", "Array is null", "ok");
                    }
                    else if (list[selectSpriteSetIndex].sprites.Length == 0)
                    {
                        EditorUtility.DisplayDialog("Error", "Array is Empty", "ok");
                    }
                    else
                    {
                        Array.Resize(ref list[selectSpriteSetIndex].sprites, list[selectSpriteSetIndex].sprites.Length - 1);

                        EditorUtility.SetDirty(spriteDatabase);

                        GetSprites();
                    }
                }
                else if (list.Count == 0)
                {
                    EditorUtility.DisplayDialog("Error", "List is Empty", "ok");
                }
            }
            else
            {
                EditorUtility.DisplayDialog("Error", "List is null", "ok");
            }
        }

        GUILayout.EndHorizontal();

        GUILayout.Space(10f);
        GUILayout.Label("TextureSplit");
        splitName   = EditorGUILayout.TextField("SpriteSetName", splitName);
        splitGroup  = EditorGUILayout.Popup("Group", splitGroup, spriteGroup);
        splitSprite = EditorGUILayout.ObjectField(splitSprite, typeof(Sprite), false) as Sprite;

        GUILayout.BeginHorizontal();

        GUILayout.Label("Tiles");
        GUILayout.Label("X");
        splitX = EditorGUILayout.IntField(splitX);
        GUILayout.Label("Y");
        splitY = EditorGUILayout.IntField(splitY);

        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();

        GUILayout.Label("Pivot");
        GUILayout.Label("X");
        splitPivot.x = EditorGUILayout.FloatField(splitPivot.x);
        GUILayout.Label("Y");
        splitPivot.y = EditorGUILayout.FloatField(splitPivot.y);

        GUILayout.EndHorizontal();

        if (GUILayout.Button("Split"))
        {
            if (splitName == "")
            {
                EditorUtility.DisplayDialog("Error", "Name is Empty", "ok");
            }
            else if (spriteDatabase.FindListFromIndex(splitGroup) == null)
            {
                EditorUtility.DisplayDialog("Error", "Group Does Not Exist", "ok");
            }
            else
            {
                if (spriteDatabase.SpriteSetNameOverlapCheck(splitGroup, splitName))
                {
                    UnityEngine.Object[]     objs   = SetMultiSprite(splitSprite.texture, splitX, splitY, splitPivot);
                    SpriteDatabase.SpriteSet sprSet = new SpriteDatabase.SpriteSet();

                    sprSet.name    = splitName;
                    sprSet.sprites = new Sprite[objs.Length - 1];

                    for (int i = 1; i < objs.Length; ++i)
                    {
                        sprSet.sprites[i - 1] = objs[i] as Sprite;
                    }

                    selectSpriteGroupIndex = splitGroup;
                    int j = spriteDatabase.AddSpriteSet(splitGroup, sprSet);

                    if (j != -1)
                    {
                        selectSpriteSetIndex = j;

                        GetNames();
                        GetSprites();
                    }
                }
                else
                {
                    EditorUtility.DisplayDialog("Error", "Name Already Exists In That Group", "ok");
                }
            }
        }
        //  GUILayout.EndArea();
    }