예제 #1
0
    protected override void OnGUILeftView()
    {
        EditorGUIUtility.labelWidth = 80;
        EditorGUILayout.LabelField("");

        if (SpriteSheet == null)
        {
            gridSpriteNames.Clear();
            selectedSprite = 0;
        }

        if (SpriteSheet != null)
        {
            GUILayout.Space(10);
            showSprites = EditorGUILayout.Foldout(showSprites, "Sprites");

            if (showSprites)
            {
                selectedSprite = GUILayout.SelectionGrid(selectedSprite, gridSpriteNames.ToArray(), 1);
            }

            showAttachments = EditorGUILayout.Foldout(showAttachments, "Attachments");

            if (showAttachments)
            {
                EditorGUILayout.BeginHorizontal();
                GUI.backgroundColor = Color.green;

                if (popup == null)
                {
                    popupActive = false;
                }

                if (GUILayout.Button("Create") && !popupActive)
                {
                    popupActive         = true;
                    popup               = GetWindow <EditorPopupEnterString>();
                    popup.m_DemandInput = true;
                    popup.Focus();
                    popup.OnConfirm += (string name) =>
                    {
                        foreach (SerializedSpriteAttachmentSprite sprite in SpriteSheet.AttachmentSprites)
                        {
                            if (sprite.Attachments.SingleOrDefault(x => x.Name == name) != null)
                            {
                                Debug.LogError(string.Format("[SAEditor] Sprite Attachment with name '{0}' already exists.", name));
                                break;
                            }
                            SerializedSpriteAttachment attachment = new SerializedSpriteAttachment();
                            attachment.Name = name;
                            Undo.RecordObject(SpriteSheet, "Add Attachment");
                            sprite.Attachments.Add(attachment);
                            dirty = true;
                        }
                        Repaint();
                        popupActive = false;
                    };
                }


                GUI.backgroundColor = Color.red;

                if (GUILayout.Button("Delete"))
                {
                    foreach (SerializedSpriteAttachmentSprite sprite in SpriteSheet.AttachmentSprites)
                    {
                        SerializedSpriteAttachment toDelete = null;
                        foreach (SerializedSpriteAttachment attachment in sprite.Attachments)
                        {
                            if (sprite.Attachments[selectedAttachmentIndex].Name == attachment.Name)
                            {
                                toDelete = attachment;
                                break;
                            }
                        }

                        if (toDelete != null)
                        {
                            Undo.RecordObject(SpriteSheet, "Delete Attachment");
                            sprite.Attachments.Remove(toDelete);
                            dirty = true;
                        }
                    }
                    selectedAttachmentIndex = 0;
                    Repaint();
                }

                GUI.backgroundColor = Color.white;
                EditorGUILayout.EndHorizontal();

                if (SpriteSheet.AttachmentSprites.Count > 0)
                {
                    string spriteName = sprites[selectedSprite].name;
                    SerializedSpriteAttachmentSprite sprite = null;
                    foreach (SerializedSpriteAttachmentSprite s in SpriteSheet.AttachmentSprites)
                    {
                        if (s.Name == spriteName)
                        {
                            sprite = s;
                            break;
                        }
                    }

                    if (sprite.Attachments.Count > 0)
                    {
                        List <string> attachmentNames = new List <string>();
                        sprite.Attachments.ForEach(x => attachmentNames.Add(x.Name));
                        selectedAttachmentIndex = GUILayout.SelectionGrid(selectedAttachmentIndex, attachmentNames.ToArray(), 1);
                    }
                }
            }
        }
        else
        {
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            GUILayout.BeginVertical();
            GUILayout.FlexibleSpace();
            GUILayout.Label("Select Sprite Attachment Sheet Asset");
            GUILayout.FlexibleSpace();
            GUILayout.EndVertical();
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }
    }
예제 #2
0
 private static void Init()
 {
     m_Window = new EditorPopupEnterString();
     m_Window.ShowPopup();
 }
예제 #3
0
    private void DrawAnimationMenu()
    {
        showAttachments = EditorGUILayout.Foldout(showAttachments, "Animations");
        if (showAttachments)
        {
            GUI.backgroundColor = Color.green;

            if (popup == null)
            {
                popupActive = false;
            }

            if (GUILayout.Button("Create") && !popupActive)
            {
                popupActive         = true;
                popup               = GetWindow <EditorPopupEnterString>();
                popup.m_DemandInput = true;
                popup.Focus();
                popup.OnConfirm += (string name) => {
                    VirtualClip vc;
                    for (int i = 0; i < virtualClips.Count; i++)
                    {
                        vc = virtualClips[i];
                        if (vc.name == name)
                        {
                            Debug.LogError(string.Format("[SAEditor] Animation with name '{0}' already exists.", name));
                            return;
                        }
                    }
                    vc      = new VirtualClip();
                    vc.name = name;
                    virtualClips.Add(vc);
                    Repaint();
                    popupActive = false;
                };
            }
            EditorGUIUtility.labelWidth = 40;
            GUI.backgroundColor         = Color.white;
            for (int i = 0; i < virtualClips.Count; i++)
            {
                EditorGUILayout.LabelField(virtualClips[i].name);
                EditorGUILayout.BeginHorizontal();
                virtualClips[i].startFrame = EditorGUILayout.IntField("Start: ", virtualClips[i].startFrame);
                virtualClips[i].endFrame   = EditorGUILayout.IntField("End: ", virtualClips[i].endFrame);

                if (virtualClips[i].startFrame >= virtualFrames.Count)
                {
                    virtualClips[i].startFrame = virtualFrames.Count;
                }
                if (virtualClips[i].startFrame < 0)
                {
                    virtualClips[i].startFrame = 0;
                }
                if (virtualClips[i].endFrame >= virtualFrames.Count)
                {
                    virtualClips[i].endFrame = virtualFrames.Count;
                }
                if (virtualClips[i].endFrame < 0)
                {
                    virtualClips[i].endFrame = 0;
                }
                GUI.backgroundColor = Color.red;
                if (GUILayout.Button("Delete"))
                {
                    virtualClips.RemoveAt(i);
                    Repaint();
                }
                GUI.backgroundColor = Color.white;
                EditorGUILayout.EndHorizontal();
            }
        }
    }