diff --git a/Assets/extDebug/Scripts/Menu/DMBranch.cs b/Assets/extDebug/Scripts/Menu/DMBranch.cs index 03bc518..0fc8903 100644 --- a/Assets/extDebug/Scripts/Menu/DMBranch.cs +++ b/Assets/extDebug/Scripts/Menu/DMBranch.cs @@ -297,7 +297,7 @@ protected override void OnEvent(EventArgs eventArgs) var currentItem = Current; if (currentItem is DMBranch currentBranch) { - if (Container.IsVisible) + if (Container.IsVisible && IsEnabled()) Container.Open(currentBranch); } else diff --git a/Assets/extDebug/Scripts/Menu/DMDefaultRender.cs b/Assets/extDebug/Scripts/Menu/DMDefaultRender.cs index f9b4ba5..c666032 100644 --- a/Assets/extDebug/Scripts/Menu/DMDefaultRender.cs +++ b/Assets/extDebug/Scripts/Menu/DMDefaultRender.cs @@ -54,7 +54,7 @@ void IDMRender.Repaint(DMBranch branch, IReadOnlyList items) var item = items[i]; var selected = item == branch.Current; var prefix = selected ? kPrefix_Selected : kPrefix; - var alpha = selected ? 1 : 0.75f; + var alpha = item.IsEnabled() ? (selected ? 1 : 0.75f) : 0.50f; // items separator if (order >= 0 && Math.Abs(order - item.Order) > 1) diff --git a/Assets/extDebug/Scripts/Menu/DMEnum.cs b/Assets/extDebug/Scripts/Menu/DMEnum.cs index ab44327..5ed5da8 100644 --- a/Assets/extDebug/Scripts/Menu/DMEnum.cs +++ b/Assets/extDebug/Scripts/Menu/DMEnum.cs @@ -95,7 +95,7 @@ protected override void OnEvent(EventArgs eventArgs) if (eventArgs.Key == EventKey.Right) { - if (Container.IsVisible) + if (Container.IsVisible && IsEnabled()) Container.Open(_flagBranch); return; diff --git a/Assets/extDebug/Scripts/Menu/DMItem.cs b/Assets/extDebug/Scripts/Menu/DMItem.cs index 7f7b063..6731c83 100644 --- a/Assets/extDebug/Scripts/Menu/DMItem.cs +++ b/Assets/extDebug/Scripts/Menu/DMItem.cs @@ -179,10 +179,27 @@ public DMContainer Container internal set => _container = value; } + public bool IsEnabled() + { + // If the parent component is disabled, then the child must be disabled. + if (_parent != null && !_parent.IsEnabled()) + return false; + + return _enabledCallback?.Invoke() ?? _enabled; + } + + public void SetEnabled(bool enabled) => _enabled = enabled; + + public void SetEnabled(Func callback) => _enabledCallback = callback; + #endregion #region Protected Vars + protected bool _enabled; + + protected Func _enabledCallback; + protected DMContainer _container; protected readonly DMBranch _parent; @@ -240,6 +257,7 @@ protected DMItem(DMBranch parent, string path, string value, string description, _valueField = new Field(value, DM.Colors.Value); _descriptionField = new Field(description, DM.Colors.Description); + _enabled = true; _order = order; _parent = parent?.Get(directory, true); diff --git a/Assets/extDebug/Scripts/Menu/DMUnityFloatStruct.cs b/Assets/extDebug/Scripts/Menu/DMUnityFloatStruct.cs index cfeb52c..b6339a9 100644 --- a/Assets/extDebug/Scripts/Menu/DMUnityFloatStruct.cs +++ b/Assets/extDebug/Scripts/Menu/DMUnityFloatStruct.cs @@ -110,7 +110,7 @@ protected override void OnEvent(EventArgs eventArgs) if (eventArgs.Key == EventKey.Right) { - if (Container.IsVisible) + if (Container.IsVisible && IsEnabled()) Container.Open(_fieldsBranch); return; diff --git a/Assets/extDebug/Scripts/Menu/DMUnityIntStruct.cs b/Assets/extDebug/Scripts/Menu/DMUnityIntStruct.cs index 955f5a6..fc006a8 100644 --- a/Assets/extDebug/Scripts/Menu/DMUnityIntStruct.cs +++ b/Assets/extDebug/Scripts/Menu/DMUnityIntStruct.cs @@ -93,7 +93,7 @@ protected override void OnEvent(EventArgs eventArgs) if (eventArgs.Key == EventKey.Right) { - if (Container.IsVisible) + if (Container.IsVisible && IsEnabled()) Container.Open(_fieldsBranch); return; diff --git a/Assets/extDebug/Scripts/Menu/DMValue.cs b/Assets/extDebug/Scripts/Menu/DMValue.cs index 794412e..420893e 100644 --- a/Assets/extDebug/Scripts/Menu/DMValue.cs +++ b/Assets/extDebug/Scripts/Menu/DMValue.cs @@ -60,7 +60,7 @@ protected override void OnEvent(EventArgs eventArgs) _valueField.Color = _defaultValue.Equals(value) ? DM.Colors.Value : DM.Colors.ValueFlash; _valueField.Value = ValueToString(value); } - else if (eventArgs.Tag == EventTag.Input) + else if (eventArgs.Tag == EventTag.Input && IsEnabled()) { if (eventArgs.Key == EventKey.Left && _setter != null) { @@ -78,10 +78,6 @@ protected override void OnEvent(EventArgs eventArgs) { ChangeValue(_defaultValue, true); } - else if (eventArgs.Key == EventKey.Back) - { - Container.Back(); - } } }