From f855f6d4305afedd446ca9c14fa69d8434925ac4 Mon Sep 17 00:00:00 2001 From: originalnicodr Date: Sun, 28 Jul 2024 21:25:13 -0300 Subject: [PATCH] Added search function in the bones panel. --- src/UI/Panels/BonesPanel.cs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/UI/Panels/BonesPanel.cs b/src/UI/Panels/BonesPanel.cs index d0f8fa1..9a6b57c 100644 --- a/src/UI/Panels/BonesPanel.cs +++ b/src/UI/Panels/BonesPanel.cs @@ -18,6 +18,7 @@ namespace UnityExplorer.UI.Panels private IAnimator animator; private Text skeletonName; private InputFieldRef saveLoadinputField; + private InputFieldRef searchBoneNameInput; private List bones = new List(); private Dictionary bonesOriginalState = new(); @@ -67,6 +68,12 @@ namespace UnityExplorer.UI.Panels boneScrollPool.Refresh(true, false); } + private void SearchBones(){ + ExpandBoneTrees(); + boneTrees = boneTrees.Where(tree => tree.obj.name.IndexOf(searchBoneNameInput.Component.text, 0, StringComparison.OrdinalIgnoreCase) >= 0).ToList(); + boneScrollPool.Refresh(true, true); + } + public override void SetActive(bool active) { base.SetActive(active); @@ -90,7 +97,10 @@ namespace UnityExplorer.UI.Panels skeletonName.fontSize = 16; saveLoadinputField = UIFactory.CreateInputField(bonesPanelHeader, $"FileNameInput", "File name"); - UIFactory.SetLayoutElement(saveLoadinputField.GameObject, minWidth: 400, minHeight: 25); + UIFactory.SetLayoutElement(saveLoadinputField.GameObject, minWidth: 380, minHeight: 25); + + GameObject spacer1 = UIFactory.CreateUIObject("Spacer", bonesPanelHeader); + LayoutElement spaceLayout1 = UIFactory.SetLayoutElement(spacer1, minWidth: 20, flexibleWidth: 0); ButtonRef savePose = UIFactory.CreateButton(bonesPanelHeader, "SavePoseButton", "Save pose"); UIFactory.SetLayoutElement(savePose.GameObject, minWidth: 100, minHeight: 25); @@ -109,6 +119,20 @@ namespace UnityExplorer.UI.Panels turnOffAnimatorToggle.onValueChanged.AddListener(OnTurnOffAnimatorToggle); turnOffAnimatorToggleText.text = "Toggle animator (needs to be off to move bones)"; + searchBoneNameInput = UIFactory.CreateInputField(header, $"SearchBoneInput", "Search bone name"); + UIFactory.SetLayoutElement(searchBoneNameInput.GameObject, minWidth: 225, minHeight: 25); + + ButtonRef searchButton = UIFactory.CreateButton(header, "SearchButton", "Search"); + UIFactory.SetLayoutElement(searchButton.GameObject, minWidth: 75, minHeight: 25); + searchButton.OnClick += SearchBones; + + ButtonRef resetButton = UIFactory.CreateButton(header, "ResetSearchButton", "Reset"); + UIFactory.SetLayoutElement(resetButton.GameObject, minWidth: 75, minHeight: 25); + resetButton.OnClick += () => { CollapseBoneTrees(); searchBoneNameInput.Component.text = ""; }; + + GameObject spacer2 = UIFactory.CreateUIObject("Spacer", header); + LayoutElement spaceLayout2 = UIFactory.SetLayoutElement(spacer2, minWidth: 20, flexibleWidth: 0); + ButtonRef collapseAllButton = UIFactory.CreateButton(header, "CollapseAllButton", "Collapse all"); UIFactory.SetLayoutElement(collapseAllButton.GameObject, minWidth: 100, minHeight: 25); collapseAllButton.OnClick += CollapseBoneTrees;