public DebugItem(string name, string panelName, Type type, Func <object> getter, Action <object> setter, DebugItemFlag flags = DebugItemFlag.None, DebugItemHandler handler = null) { m_Type = type; m_Setter = setter; m_Getter = getter; m_Name = name; m_PanelName = panelName; m_Handler = handler; m_Flags = flags; }
// Default Implementation: just build all items with provided handler. public virtual void BuildGUIImpl(GameObject parent) { DebugMenuUI.CreateTextElement(string.Format("{0} Title", m_DebugPanel.name), m_DebugPanel.name, 14, TextAnchor.MiddleLeft, parent); m_ItemsUI.Clear(); for (int i = 0; i < m_DebugPanel.itemCount; i++) { DebugItem item = m_DebugPanel.GetDebugItem(i); if (!((item.flags & DebugItemFlag.EditorOnly) != 0)) { DebugItemHandler handler = item.handler; // Should never be null, we have at least the default handler m_ItemsUI.Add(handler.BuildGUI(parent)); } } }
public void AddDebugItem <DebugItemType>(string debugPanelName, string name, Func <object> getter, Action <object> setter = null, DebugItemFlag flags = DebugItemFlag.None, DebugItemHandler handler = null) { DebugPanel debugPanel = GetDebugPanel(debugPanelName); // If the menu does not exist, create a generic one. This way, users don't have to explicitely create a new DebugMenu class if they don't need any particular overriding of default behavior. if (debugPanel == null) { debugPanel = new DebugPanel <DebugPanelUI>(debugPanelName); AddDebugPanel(debugPanel); } if (debugPanel != null) { debugPanel.AddDebugItem <DebugItemType>(name, getter, setter, flags, handler); } m_DebugMenuStateDirty = true; }
public void AddDebugItem <DebugPanelType, DebugItemType>(string name, Func <object> getter, Action <object> setter = null, DebugItemFlag flags = DebugItemFlag.None, DebugItemHandler handler = null) where DebugPanelType : DebugPanel { DebugPanelType debugPanel = GetDebugPanel <DebugPanelType>(); if (debugPanel != null) { debugPanel.AddDebugItem <DebugItemType>(name, getter, setter, flags, handler); } m_DebugMenuStateDirty = true; }
public void AddDebugItem <ItemType>(string itemName, Func <object> getter, Action <object> setter, DebugItemFlag flags = DebugItemFlag.None, DebugItemHandler handler = null) { if (handler == null) { handler = new DefaultDebugItemHandler(); } DebugItem oldItem = GetDebugItem(itemName); if (oldItem != null) { RemoveDebugItem(oldItem); } DebugItem newItem = new DebugItem(itemName, m_Name, typeof(ItemType), getter, setter, flags, handler); handler.SetDebugItem(newItem); m_Items.Add(newItem); }