internal static bool Show(Vector2 position, IBrowsePopupProvider provider) { // If the window is already open, close it instead. UnityEngine.Object[] wins = Resources.FindObjectsOfTypeAll(typeof(BrowsePopup)); if (wins.Length > 0) { try { ((EditorWindow)wins[0]).Close(); return(false); } catch (Exception) { s_FilterWindow = null; } } // We could not use realtimeSinceStartUp since it is set to 0 when entering/exitting playmode, we assume an increasing time when comparing time. long nowMilliSeconds = System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond; bool justClosed = nowMilliSeconds < s_LastClosedTime + 50; if (!justClosed) { Event.current.Use(); if (s_FilterWindow == null) { s_FilterWindow = ScriptableObject.CreateInstance <BrowsePopup>(); } s_FilterWindow.Init(position, provider); return(true); } return(false); }
void Init(Vector2 position, IBrowsePopupProvider provider) { m_Provider = provider; // Has to be done before calling Show / ShowWithMode Vector2 pos = GUIUtility.GUIToScreenPoint(position); Rect buttonRect = new Rect(pos.x - DefaultWidth + 16, pos.y + 16, DefaultWidth, 1); CreateComponentTree(); ShowAsDropDown(buttonRect, new Vector2(buttonRect.width, kWindowHeight)); Focus(); wantsMouseMove = true; }