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(); } }
private static void Init() { m_Window = new EditorPopupEnterString(); m_Window.ShowPopup(); }
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(); } } }