private bool AddFrameButton() { Rect rect = GUILayoutUtility.GetRect(GUIContent.none, GUITools.NodeStyle, GUILayout.Height(75), GUILayout.Width(75)); bool clicked = false; Event ev = Event.current; int controlID = GUIUtility.GetControlID(FocusType.Passive); GUITools.ButtonInfo info = GUIUtility.GetStateObject(typeof(GUITools.ButtonInfo), controlID) as GUITools.ButtonInfo; switch (ev.GetTypeForControl(controlID)) { case EventType.MouseUp: info.mouseDown = false; if (rect.Contains(ev.mousePosition)) { clicked = true; } if (GUIUtility.hotControl == controlID) { ev.Use(); GUIUtility.hotControl = 0; } break; case EventType.MouseDown: if (rect.Contains(ev.mousePosition)) { info.mouseDown = true; ev.Use(); GUIUtility.hotControl = controlID; } break; case EventType.Repaint: if (info.mouseDown) { GUI.color = Color.gray; } rect = GUITools.PaddedContainer.padding.Remove(rect); GUITools.NodeStyle.Draw(rect, GUIContent.none, controlID); GUITools.BigWhiteText.Draw(rect, new GUIContent("+"), controlID); GUI.color = Color.white; break; } return(clicked); }
private bool FramePreviewButton(LZFighterFrame frame, bool selected, int frameID) { Rect rect = GUILayoutUtility.GetRect(GUIContent.none, GUITools.NodeStyle, GUILayout.Height(75), GUILayout.Width(75)); bool clicked = false; Event ev = Event.current; int controlID = GUIUtility.GetControlID(FocusType.Passive); GUITools.ButtonInfo info = GUIUtility.GetStateObject(typeof(GUITools.ButtonInfo), controlID) as GUITools.ButtonInfo; switch (ev.GetTypeForControl(controlID)) { case EventType.MouseUp: info.mouseDown = false; if (rect.Contains(ev.mousePosition)) { clicked = true; } if (GUIUtility.hotControl == controlID) { ev.Use(); GUIUtility.hotControl = 0; } break; case EventType.MouseDown: if (rect.Contains(ev.mousePosition)) { info.mouseDown = true; ev.Use(); GUIUtility.hotControl = controlID; if (ev.clickCount == 2) { EditorGUIUtility.ShowObjectPicker <Sprite>(frame.sprite, false, "", controlID); } } break; case EventType.ExecuteCommand: if (ev.commandName == "ObjectSelectorUpdated" && selectedFrame == frameID) { frame.sprite = (Sprite)EditorGUIUtility.GetObjectPickerObject(); ev.Use(); } break; case EventType.Repaint: Color rectangle = new Color(0.6f, 0.6f, 0.6f); if (selected) { rectangle = GUITools.darkCyan; } else if (info.mouseDown) { rectangle = Color.gray; } rect = GUITools.PaddedContainer.padding.Remove(rect); EditorGUI.DrawRect(rect, rectangle); if (frame.sprite != null) { GUI.DrawTextureWithTexCoords(rect, frame.sprite.texture, frame.sprite.GetSpriteRect()); } break; } return(clicked); }