public void SetItemEnabled(RecorderControllerSettings prefs, bool value) { m_Disabled = !value; settings.enabled = value; prefs.Save(); m_EditableLabel.SetLabelEnabled(value); if (m_Toggle != null) { UIElementHelper.SetToggleValue(m_Toggle, value); } if (value) { RemoveFromClassList("disabled"); } else { AddToClassList("disabled"); } if (OnEnableStateChanged != null) { OnEnableStateChanged.Invoke(value); } }
public RecorderItem(RecorderControllerSettings prefs, RecorderSettings recorderSettings, string iconName) { settings = recorderSettings; if (settings != null) { editor = Editor.CreateEditor(settings); } UIElementHelper.SetFlex(this, 1.0f); style.flexDirection = FlexDirection.Row; m_Toggle = new Toggle(); #if UNITY_2019_1_OR_NEWER m_Toggle.RegisterValueChangedCallback(evt => #elif UNITY_2018_3_OR_NEWER m_Toggle.OnValueChanged(evt => #else m_Toggle.OnToggle(() => #endif { SetItemEnabled(prefs, UIElementHelper.GetToggleValue(m_Toggle)); }); Add(m_Toggle); m_RecorderIcon = LoadIcon(iconName); if (m_RecorderIcon == null) { m_RecorderIcon = LoadIcon("customrecorder_16"); } UpdateState(false); var iconContainer = new IMGUIContainer(() => // UIElement Image doesn't support tint yet. Use IMGUI instead. { var r = EditorGUILayout.GetControlRect(); r.width = r.height = Mathf.Max(r.width, r.height); var c = GUI.color; var newColor = Color.white; if (m_Disabled) { newColor.a = 0.5f; } else { if (!m_Selected) { newColor.a = 0.8f; } } GUI.color = newColor; GUI.DrawTexture(r, m_Icon); GUI.color = c; }); iconContainer.AddToClassList("RecorderItemIcon"); iconContainer.SetEnabled(false); Add(iconContainer); m_EditableLabel = new EditableLabel { text = settings.name }; m_EditableLabel.OnValueChanged(newValue => { settings.name = newValue; prefs.Save(); }); Add(m_EditableLabel); var recorderEnabled = settings.enabled; UIElementHelper.SetToggleValue(m_Toggle, recorderEnabled); SetItemEnabled(prefs, recorderEnabled); }