public static void DisposeRuntimePanel(ScriptableObject ownerObject) { Panel panel; if (UIElementsUtility.TryGetPanel(ownerObject.GetInstanceID(), out panel)) { panel.Dispose(); RemoveCachedPanelInternal(ownerObject.GetInstanceID()); } }
public static IPanel FindOrCreateRuntimePanel(ScriptableObject ownerObject) { Panel panel; if (!UIElementsUtility.TryGetPanel(ownerObject.GetInstanceID(), out panel)) { panel = new RuntimePanel(ownerObject, s_RuntimeDispatcher) { IMGUIEventInterests = new EventInterests { wantsMouseMove = true, wantsMouseEnterLeaveWindow = true } }; RegisterCachedPanelInternal(ownerObject.GetInstanceID(), panel); } else { Debug.Assert(ContextType.Player == panel.contextType, "Panel is not a runtime panel."); } return panel; }
public static BaseRuntimePanel FindOrCreateRuntimePanel(ScriptableObject ownerObject, CreateRuntimePanelDelegate createDelegate) { if (UIElementsUtility.TryGetPanel(ownerObject.GetInstanceID(), out Panel cachedPanel)) { if (cachedPanel is BaseRuntimePanel runtimePanel) { return(runtimePanel); } RemoveCachedPanelInternal(ownerObject.GetInstanceID()); // Maybe throw exception instead? } var panel = createDelegate(ownerObject); panel.IMGUIEventInterests = new EventInterests { wantsMouseMove = true, wantsMouseEnterLeaveWindow = true }; RegisterCachedPanelInternal(ownerObject.GetInstanceID(), panel); onCreatePanel?.Invoke(panel); return(panel); }