Skip to content
This repository was archived by the owner on May 9, 2023. It is now read-only.

Commit b57e5be

Browse files
committed
Add GameObject.activeSelf toggle to TransformTree, adjust UI Toggle design
1 parent 2d8ae45 commit b57e5be

File tree

3 files changed

+80
-60
lines changed

3 files changed

+80
-60
lines changed

src/UI/UIFactory.cs

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -409,56 +409,49 @@ public static GameObject CreateScrollbar(GameObject parent, string name, out Scr
409409
/// <summary>
410410
/// Create a Toggle control.
411411
/// </summary>
412-
public static GameObject CreateToggle(GameObject parent, string name, out Toggle toggle, out Text text, Color bgColor = default)
412+
public static GameObject CreateToggle(GameObject parent, string name, out Toggle toggle, out Text text, Color bgColor = default,
413+
int checkWidth = 20, int checkHeight = 20)
413414
{
415+
// Main obj
414416
GameObject toggleObj = CreateUIObject(name, parent, _smallElementSize);
415-
416-
GameObject bgObj = CreateUIObject("Background", toggleObj);
417-
GameObject checkObj = CreateUIObject("Checkmark", bgObj);
418-
GameObject labelObj = CreateUIObject("Label", toggleObj);
419-
417+
SetLayoutGroup<HorizontalLayoutGroup>(toggleObj, false, false, true, true, 5, 0,0,0,0, childAlignment: TextAnchor.MiddleLeft);
420418
toggle = toggleObj.AddComponent<Toggle>();
421419
toggle.isOn = true;
420+
SetDefaultSelectableColors(toggle);
421+
// need a second reference so we can use it inside the lambda, since 'toggle' is an out var.
422+
Toggle t2 = toggle;
423+
toggle.onValueChanged.AddListener((bool _) => { t2.OnDeselect(null); });
422424

423-
// second reference so we can use it inside the lambda, 'toggle' is an out var.
424-
Toggle toggleComp = toggle;
425-
toggle.onValueChanged.AddListener(Deselect);
426-
void Deselect(bool _)
427-
{
428-
toggleComp.OnDeselect(null);
429-
}
425+
// Check mark background
430426

431-
Image bgImage = bgObj.AddComponent<Image>();
427+
GameObject checkBgObj = CreateUIObject("Background", toggleObj);
428+
Image bgImage = checkBgObj.AddComponent<Image>();
432429
bgImage.color = bgColor == default ? new Color(0.04f, 0.04f, 0.04f, 0.75f) : bgColor;
433430

434-
Image checkImage = checkObj.AddComponent<Image>();
431+
SetLayoutGroup<HorizontalLayoutGroup>(checkBgObj, true, true, true, true, 0, 2, 2, 2, 2);
432+
SetLayoutElement(checkBgObj, minWidth: checkWidth, flexibleWidth: 0, minHeight: checkHeight, flexibleHeight: 0);
433+
434+
// Check mark image
435+
436+
GameObject checkMarkObj = CreateUIObject("Checkmark", checkBgObj);
437+
Image checkImage = checkMarkObj.AddComponent<Image>();
435438
checkImage.color = new Color(0.8f, 1, 0.8f, 0.3f);
436439

440+
// Label
441+
442+
GameObject labelObj = CreateUIObject("Label", toggleObj);
437443
text = labelObj.AddComponent<Text>();
438-
text.text = "Toggle";
444+
text.text = "";
445+
text.alignment = TextAnchor.MiddleLeft;
439446
SetDefaultTextValues(text);
440447

441-
toggle.graphic = checkImage;
442-
toggle.targetGraphic = bgImage;
443-
SetDefaultSelectableColors(toggle);
448+
SetLayoutElement(labelObj, minWidth: 0, flexibleWidth: 0, minHeight: checkHeight, flexibleHeight: 0);
444449

445-
RectTransform bgRect = bgObj.GetComponent<RectTransform>();
446-
bgRect.anchorMin = new Vector2(0f, 1f);
447-
bgRect.anchorMax = new Vector2(0f, 1f);
448-
bgRect.anchoredPosition = new Vector2(13f, -13f);
449-
bgRect.sizeDelta = new Vector2(20f, 20f);
450+
// References
450451

451-
RectTransform checkRect = checkObj.GetComponent<RectTransform>();
452-
checkRect.anchorMin = new Vector2(0.5f, 0.5f);
453-
checkRect.anchorMax = new Vector2(0.5f, 0.5f);
454-
checkRect.anchoredPosition = Vector2.zero;
455-
checkRect.sizeDelta = new Vector2(14f, 14f);
452+
toggle.graphic = checkImage;
453+
toggle.targetGraphic = bgImage;
456454

457-
RectTransform labelRect = labelObj.GetComponent<RectTransform>();
458-
labelRect.anchorMin = new Vector2(0f, 0f);
459-
labelRect.anchorMax = new Vector2(1f, 1f);
460-
labelRect.offsetMin = new Vector2(28f, 2f);
461-
labelRect.offsetMax = new Vector2(-5f, -5f);
462455
return toggleObj;
463456
}
464457

src/UI/Widgets/TransformTree/TransformCell.cs

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class TransformCell : ICell
1717
private bool m_enabled;
1818

1919
public Action<CachedTransform> OnExpandToggled;
20+
public Action<CachedTransform> OnEnableToggled;
2021
public Action<GameObject> OnGameObjectClicked;
2122

2223
public CachedTransform cachedTransform;
@@ -27,15 +28,20 @@ public class TransformCell : ICell
2728

2829
public ButtonRef ExpandButton;
2930
public ButtonRef NameButton;
31+
public Toggle EnabledToggle;
3032

3133
public LayoutElement spacer;
3234

33-
public void OnMainButtonClicked()
35+
public void Enable()
3436
{
35-
if (cachedTransform.Value)
36-
OnGameObjectClicked?.Invoke(cachedTransform.Value.gameObject);
37-
else
38-
ExplorerCore.LogWarning("The object was destroyed!");
37+
m_enabled = true;
38+
UIRoot.SetActive(true);
39+
}
40+
41+
public void Disable()
42+
{
43+
m_enabled = false;
44+
UIRoot.SetActive(false);
3945
}
4046

4147
public void ConfigureCell(CachedTransform cached, int cellIndex)
@@ -59,6 +65,8 @@ public void ConfigureCell(CachedTransform cached, int cellIndex)
5965
NameButton.ButtonText.text = cached.Value.name;
6066
NameButton.ButtonText.color = cached.Value.gameObject.activeSelf ? Color.white : Color.grey;
6167

68+
EnabledToggle.Set(cached.Value.gameObject.activeSelf, false);
69+
6270
int childCount = cached.Value.childCount;
6371
if (childCount > 0)
6472
{
@@ -82,27 +90,28 @@ public void ConfigureCell(CachedTransform cached, int cellIndex)
8290
}
8391
}
8492

85-
public void Disable()
93+
public void OnMainButtonClicked()
8694
{
87-
m_enabled = false;
88-
UIRoot.SetActive(false);
95+
if (cachedTransform.Value)
96+
OnGameObjectClicked?.Invoke(cachedTransform.Value.gameObject);
97+
else
98+
ExplorerCore.LogWarning("The object was destroyed!");
8999
}
90100

91-
public void Enable()
101+
public void OnExpandClicked()
92102
{
93-
m_enabled = true;
94-
UIRoot.SetActive(true);
103+
OnExpandToggled?.Invoke(cachedTransform);
95104
}
96105

97-
public void OnExpandClicked()
106+
private void OnEnableClicked(bool value)
98107
{
99-
OnExpandToggled?.Invoke(cachedTransform);
108+
OnEnableToggled?.Invoke(cachedTransform);
100109
}
101110

102111
public GameObject CreateContent(GameObject parent)
103112
{
104113
UIRoot = UIFactory.CreateUIObject("TransformCell", parent);
105-
UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(UIRoot, true, true, true, true, 2, childAlignment: TextAnchor.MiddleCenter);
114+
UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(UIRoot, false, false, true, true, 2, childAlignment: TextAnchor.MiddleCenter);
106115
Rect = UIRoot.GetComponent<RectTransform>();
107116
Rect.anchorMin = new Vector2(0, 1);
108117
Rect.anchorMax = new Vector2(0, 1);
@@ -114,9 +123,19 @@ public GameObject CreateContent(GameObject parent)
114123
UIFactory.SetLayoutElement(spacerObj, minWidth: 0, flexibleWidth: 0, minHeight: 0, flexibleHeight: 0);
115124
this.spacer = spacerObj.GetComponent<LayoutElement>();
116125

126+
// Expand arrow
127+
117128
ExpandButton = UIFactory.CreateButton(this.UIRoot, "ExpandButton", "►");
118129
UIFactory.SetLayoutElement(ExpandButton.Component.gameObject, minWidth: 15, flexibleWidth: 0, minHeight: 25, flexibleHeight: 0);
119130

131+
// Enabled toggle
132+
133+
var toggleObj = UIFactory.CreateToggle(UIRoot, "BehaviourToggle", out EnabledToggle, out var behavText, default, 17, 17);
134+
UIFactory.SetLayoutElement(toggleObj, minHeight: 17, flexibleHeight: 0, minWidth: 17);
135+
EnabledToggle.onValueChanged.AddListener(OnEnableClicked);
136+
137+
// Name button
138+
120139
NameButton = UIFactory.CreateButton(this.UIRoot, "NameButton", "Name", null);
121140
UIFactory.SetLayoutElement(NameButton.Component.gameObject, flexibleWidth: 9999, minHeight: 25, flexibleHeight: 0);
122141
var nameLabel = NameButton.Component.GetComponentInChildren<Text>();

src/UI/Widgets/TransformTree/TransformTree.cs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ public TransformTree(ScrollPool<TransformCell> scrollPool, Func<IEnumerable<Game
6060

6161
public void OnCellBorrowed(TransformCell cell)
6262
{
63-
cell.OnExpandToggled += ToggleExpandCell;
63+
cell.OnExpandToggled += OnCellExpandToggled;
6464
cell.OnGameObjectClicked += OnGameObjectClicked;
65+
cell.OnEnableToggled += OnCellEnableToggled;
6566
}
6667

6768
private void OnGameObjectClicked(GameObject obj)
@@ -72,6 +73,24 @@ private void OnGameObjectClicked(GameObject obj)
7273
InspectorManager.Inspect(obj);
7374
}
7475

76+
public void OnCellExpandToggled(CachedTransform cache)
77+
{
78+
var instanceID = cache.InstanceID;
79+
if (expandedInstanceIDs.Contains(instanceID))
80+
expandedInstanceIDs.Remove(instanceID);
81+
else
82+
expandedInstanceIDs.Add(instanceID);
83+
84+
RefreshData(true);
85+
}
86+
87+
public void OnCellEnableToggled(CachedTransform cache)
88+
{
89+
cache.Value.gameObject.SetActive(!cache.Value.gameObject.activeSelf);
90+
91+
RefreshData(true);
92+
}
93+
7594
public void Init()
7695
{
7796
ScrollPool.Initialize(this);
@@ -261,16 +280,5 @@ public void SetCell(TransformCell cell, int index)
261280
else
262281
cell.Disable();
263282
}
264-
265-
public void ToggleExpandCell(CachedTransform cache)
266-
{
267-
var instanceID = cache.InstanceID;
268-
if (expandedInstanceIDs.Contains(instanceID))
269-
expandedInstanceIDs.Remove(instanceID);
270-
else
271-
expandedInstanceIDs.Add(instanceID);
272-
273-
RefreshData(true);
274-
}
275283
}
276284
}

0 commit comments

Comments
 (0)