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;
        }
Exemplo n.º 3
0
        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);
        }