A game about forced loneliness, made by TACStudios
1using UnityEditor.SceneManagement;
2using UnityEngine;
3using UnityEngine.UI;
4
5namespace UnityEditor.UI
6{
7 [CustomEditor(typeof(Toggle), true)]
8 [CanEditMultipleObjects]
9 /// <summary>
10 /// Custom Editor for the Toggle Component.
11 /// Extend this class to write a custom editor for a component derived from Toggle.
12 /// </summary>
13 public class ToggleEditor : SelectableEditor
14 {
15 SerializedProperty m_OnValueChangedProperty;
16 SerializedProperty m_TransitionProperty;
17 SerializedProperty m_GraphicProperty;
18 SerializedProperty m_GroupProperty;
19 SerializedProperty m_IsOnProperty;
20
21 protected override void OnEnable()
22 {
23 base.OnEnable();
24
25 m_TransitionProperty = serializedObject.FindProperty("toggleTransition");
26 m_GraphicProperty = serializedObject.FindProperty("graphic");
27 m_GroupProperty = serializedObject.FindProperty("m_Group");
28 m_IsOnProperty = serializedObject.FindProperty("m_IsOn");
29 m_OnValueChangedProperty = serializedObject.FindProperty("onValueChanged");
30 }
31
32 public override void OnInspectorGUI()
33 {
34 base.OnInspectorGUI();
35 EditorGUILayout.Space();
36
37 serializedObject.Update();
38 Toggle toggle = serializedObject.targetObject as Toggle;
39 EditorGUI.BeginChangeCheck();
40 EditorGUILayout.PropertyField(m_IsOnProperty);
41 if (EditorGUI.EndChangeCheck())
42 {
43 if (!Application.isPlaying)
44 EditorSceneManager.MarkSceneDirty(toggle.gameObject.scene);
45
46 ToggleGroup group = m_GroupProperty.objectReferenceValue as ToggleGroup;
47
48 toggle.isOn = m_IsOnProperty.boolValue;
49
50 if (group != null && group.isActiveAndEnabled && toggle.IsActive())
51 {
52 if (toggle.isOn || (!group.AnyTogglesOn() && !group.allowSwitchOff))
53 {
54 toggle.isOn = true;
55 group.NotifyToggleOn(toggle);
56 }
57 }
58 }
59 EditorGUILayout.PropertyField(m_TransitionProperty);
60 EditorGUILayout.PropertyField(m_GraphicProperty);
61 EditorGUI.BeginChangeCheck();
62 EditorGUILayout.PropertyField(m_GroupProperty);
63 if (EditorGUI.EndChangeCheck())
64 {
65 if (!Application.isPlaying)
66 EditorSceneManager.MarkSceneDirty(toggle.gameObject.scene);
67
68 ToggleGroup group = m_GroupProperty.objectReferenceValue as ToggleGroup;
69 toggle.group = group;
70 }
71
72 EditorGUILayout.Space();
73
74 // Draw the event notification options
75 EditorGUILayout.PropertyField(m_OnValueChangedProperty);
76
77 serializedObject.ApplyModifiedProperties();
78 }
79 }
80}