public override DebugItemState CreateDebugItemState() { DebugItemState newItemState = null; if (m_DebugItem.GetItemType() == typeof(bool)) { newItemState = ScriptableObject.CreateInstance <DebugItemStateBool>(); } else if (m_DebugItem.GetItemType() == typeof(int)) { newItemState = ScriptableObject.CreateInstance <DebugItemStateInt>(); } else if (m_DebugItem.GetItemType() == typeof(uint)) { newItemState = ScriptableObject.CreateInstance <DebugItemStateUInt>(); } else if (m_DebugItem.GetItemType() == typeof(float)) { newItemState = ScriptableObject.CreateInstance <DebugItemStateFloat>(); } else if (m_DebugItem.GetItemType() == typeof(Color)) { newItemState = ScriptableObject.CreateInstance <DebugItemStateColor>(); } else if (m_DebugItem.GetItemType().BaseType == typeof(System.Enum)) { newItemState = ScriptableObject.CreateInstance <DebugItemStateInt>(); // Need to be serialized as int. For some reason serialization of the Enum directly just fails... } return(newItemState); }
public void OnEnable() { #if UNITY_EDITOR UnityEditor.Undo.undoRedoPerformed += OnUndoRedoPerformed; #endif // Populate item states DebugMenuManager dmm = DebugMenuManager.instance; for (int panelIdx = 0; panelIdx < dmm.panelCount; ++panelIdx) { DebugPanel panel = dmm.GetDebugPanel(panelIdx); for (int itemIdx = 0; itemIdx < panel.itemCount; ++itemIdx) { DebugItem item = panel.GetDebugItem(itemIdx); DebugItemState debugItemState = FindDebugItemState(item); if (debugItemState == null) { debugItemState = item.handler.CreateDebugItemState(); debugItemState.hideFlags = HideFlags.DontSave; debugItemState.Initialize(item); debugItemState.SetValue(item.GetValue()); AddDebugItemState(debugItemState); } } } DebugMenuManager.instance.SetDebugMenuState(this); }
public void ReInitializeDebugItemStates() { CleanUp(); // Populate item states DebugMenuManager dmm = DebugMenuManager.instance; for (int panelIdx = 0; panelIdx < dmm.panelCount; ++panelIdx) { DebugPanel panel = dmm.GetDebugPanel(panelIdx); for (int itemIdx = 0; itemIdx < panel.itemCount; ++itemIdx) { DebugItem item = panel.GetDebugItem(itemIdx); DebugItemState debugItemState = FindDebugItemState(item); if (debugItemState == null) { debugItemState = item.handler.CreateDebugItemState(); if (debugItemState != null) { debugItemState.hideFlags = HideFlags.DontSave; debugItemState.Initialize(item); debugItemState.SetValue(item.GetValue()); AddDebugItemState(debugItemState); } else { Debug.LogWarning(String.Format("DebugItemState for item {0} of type {1} is not provided.\nDid you implement CreateDebugItemState in your custom Handler?", item.name, item.type)); } } } } UpdateAllDebugItems(); }
void DebugItem_OnDirty(DebugItem item) { DebugItemState debugItemState = m_DebugMenuState.FindDebugItemState(item); UnityEditor.Undo.RecordObject(debugItemState, "DebugMenu State Update"); debugItemState.SetValue(item.GetValue()); EditorUtility.SetDirty(m_DebugMenuState); }
public void AddDebugItemState(DebugItemState state) { m_ItemStateList.Add(state); }
private void AddDebugItemState(DebugItemState state) { m_ItemStateList.Add(state); }