2using System.Collections.Generic;
9 [AddComponentMenu(
"UI/Extensions/Extensions Toggle Group")]
10 [DisallowMultipleComponent]
14 private bool m_AllowSwitchOff =
false;
15 public bool AllowSwitchOff {
get {
return m_AllowSwitchOff; }
set { m_AllowSwitchOff = value; } }
17 private List<ExtensionsToggle> m_Toggles =
new List<ExtensionsToggle>();
34 if (toggle ==
null || !m_Toggles.Contains(toggle))
35 throw new ArgumentException(
string.Format(
"Toggle {0} is not part of ToggleGroup {1}",
new object[] { toggle,
this }));
40 ValidateToggleIsInGroup(toggle);
43 for (var i = 0; i < m_Toggles.Count; i++)
45 if (m_Toggles[i] == toggle)
51 m_Toggles[i].
IsOn =
false;
58 if (m_Toggles.Contains(toggle))
60 m_Toggles.Remove(toggle);
65 private void NotifyToggleChanged(
bool isOn)
72 if (!m_Toggles.Contains(toggle))
74 m_Toggles.Add(toggle);
81 return m_Toggles.Find(x => x.IsOn) !=
null;
86 return m_Toggles.Where(x => x.IsOn);
91 bool oldAllowSwitchOff = m_AllowSwitchOff;
92 m_AllowSwitchOff =
true;
94 for (var i = 0; i < m_Toggles.Count; i++)
95 m_Toggles[i].IsOn =
false;
97 m_AllowSwitchOff = oldAllowSwitchOff;
102 Debug.Log(
"Testing, the group has toggled [" + value +
"]");
107 Debug.Log(
"Testing, a toggle has toggled [" + value +
"]");
ToggleGroupEvent onToggleGroupChanged
void NotifyToggleOn(ExtensionsToggle toggle)
ExtensionsToggle SelectedToggle
void HasTheGroupToggle(bool value)
void HasAToggleFlipped(bool value)
void UnregisterToggle(ExtensionsToggle toggle)
ToggleGroupEvent onToggleGroupToggleChanged
IEnumerable< ExtensionsToggle > ActiveToggles()
void RegisterToggle(ExtensionsToggle toggle)
Simple toggle – something that has an 'on' and 'off' states: checkbox, toggle button,...
bool IsOn
Whether the toggle is currently active.
ToggleEvent onValueChanged
Allow for delegate-based subscriptions for faster events than 'eventReceiver', and allowing for multi...