/// <summary>
        /// Display the set properties on the settings screen
        /// </summary>
        private static void DisplaySettings()
        {
            m_DimLevel.value      = BehaviorTreeGraphWindow.SettingsData.DataFile.DimLevel;
            m_ColorField.value    = BehaviorTreeGraphWindow.SettingsData.DataFile.BorderHighlightColor;
            m_MiniMap.value       = BehaviorTreeGraphWindow.SettingsData.DataFile.EnableMiniMap;
            m_LastTimestamp.value = BehaviorTreeGraphWindow.SettingsData.DataFile.LastRunTimeStamp;
            m_SuccessIcon.value   = BehaviorTreeGraphWindow.SettingsData.DataFile.SuccessIcon;
            m_FailureIcon.value   = BehaviorTreeGraphWindow.SettingsData.DataFile.FailureIcon;
            m_RunningIcon.value   = BehaviorTreeGraphWindow.SettingsData.DataFile.RunningIcon;

            for (int i = 0; i < BehaviorTreeGraphWindow.SettingsData.DataFile.OverrideStyleProperties.Count; i++)
            {
                SettingNodeRow newRow = new SettingNodeRow(BehaviorTreeGraphWindow.SettingsData.DataFile.OverrideStyleProperties[i], SettingNodeType.Override);

                m_OverrideNodesContainer.Add(newRow);
                newRow.PlaceBehind(m_OverrideNode);
            }

            for (int i = 0; i < BehaviorTreeGraphWindow.SettingsData.DataFile.MainStyleProperties.Count; i++)
            {
                SettingNodeRow newRow = new SettingNodeRow(BehaviorTreeGraphWindow.SettingsData.DataFile.MainStyleProperties[i], SettingNodeType.Main);

                m_MainNodesContainer.Add(newRow);
                newRow.PlaceBehind(m_MainNode);
            }
        }
        private void OnEnable()
        {
            m_RootTemplate = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(BehaviorTreeGraphWindow.c_WindowPath + "Settings.uxml");
            rootVisualElement.Add(m_RootTemplate.CloneTree());

            m_DimLevel               = rootVisualElement.Q <Slider>("Slider_Inactive_Dim");
            m_ColorField             = rootVisualElement.Q <ColorField>("clr_BorderHighlight");
            m_MiniMap                = rootVisualElement.Q <Toggle>("bool_MiniMap");
            m_LastTimestamp          = rootVisualElement.Q <Toggle>("bool_LastEvalTimestamp");
            m_SuccessIcon            = rootVisualElement.Q <ObjectField>("successIcon");
            m_RunningIcon            = rootVisualElement.Q <ObjectField>("runningIcon");
            m_FailureIcon            = rootVisualElement.Q <ObjectField>("failureIcon");
            m_MainNode               = rootVisualElement.Q <ObjectField>("mainNodeSelector");
            m_OverrideNode           = rootVisualElement.Q <ObjectField>("overrideNodeSelector");
            m_BaseNode               = new SettingNodeRow(BehaviorTreeGraphWindow.SettingsData.DataFile.DefaultStyleProperties, SettingNodeType.Base);
            m_MainNodesContainer     = rootVisualElement.Q <VisualElement>("mainNodesContainer");
            m_OverrideNodesContainer = rootVisualElement.Q <VisualElement>("overridesContainer");

            rootVisualElement.Q <VisualElement>("baseNodesContainer").Add(m_BaseNode);

            m_MainNode.objectType     = typeof(MonoScript);
            m_OverrideNode.objectType = typeof(MonoScript);
            m_SuccessIcon.objectType  = typeof(Sprite);
            m_RunningIcon.objectType  = typeof(Sprite);
            m_FailureIcon.objectType  = typeof(Sprite);

            m_MiniMap.RegisterValueChangedCallback((e) => { ToggleMiniMap(e.newValue); });
            m_LastTimestamp.RegisterValueChangedCallback((e) => { BehaviorTreeGraphWindow.SettingsData.SetLastEvalTimeStamp(e.newValue); });
            m_DimLevel.RegisterValueChangedCallback((e) => { BehaviorTreeGraphWindow.SettingsData.SetDimLevel(e.newValue); });
            m_ColorField.RegisterValueChangedCallback((e) => { BehaviorTreeGraphWindow.SettingsData.SetBorderHighlightColor(e.newValue); });
            m_SuccessIcon.RegisterValueChangedCallback((e) => { BehaviorTreeGraphWindow.SettingsData.UpdateGeneralcon(e.newValue as Sprite, IconType.Success); });
            m_RunningIcon.RegisterValueChangedCallback((e) => { BehaviorTreeGraphWindow.SettingsData.UpdateGeneralcon(e.newValue as Sprite, IconType.Running); });
            m_FailureIcon.RegisterValueChangedCallback((e) => { BehaviorTreeGraphWindow.SettingsData.UpdateGeneralcon(e.newValue as Sprite, IconType.Failure); });
            m_OverrideNode.RegisterValueChangedCallback((e) =>
            {
                if (e.newValue != null)
                {
                    SettingNodeRow newRow = new SettingNodeRow(new NodeProperty()
                    {
                        Script = e.newValue as MonoScript
                    }, SettingNodeType.Override);
                    m_OverrideNodesContainer.Add(newRow);
                    newRow.PlaceBehind(m_OverrideNode);

                    m_OverrideNode.value = null;
                }
            });
            m_MainNode.RegisterValueChangedCallback((e) =>
            {
                if (e.newValue != null)
                {
                    SettingNodeRow newRow = new SettingNodeRow(new NodeProperty()
                    {
                        Script = e.newValue as MonoScript
                    }, SettingNodeType.Main);
                    m_MainNodesContainer.Add(newRow);
                    newRow.PlaceBehind(m_MainNode);

                    m_MainNode.value = null;
                }
            });

            DisplaySettings();
        }