예제 #1
0
        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);
        }
예제 #2
0
        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();
        }
예제 #4
0
        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);
        }
예제 #5
0
 public void AddDebugItemState(DebugItemState state)
 {
     m_ItemStateList.Add(state);
 }
 private void AddDebugItemState(DebugItemState state)
 {
     m_ItemStateList.Add(state);
 }