using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using UnityEngine.UI; using UnityExplorer.Core.Config; using UnityExplorer.Core.Runtime; using UnityExplorer.UI.Inspectors; using UnityExplorer.UI.Models; using UnityExplorer.UI.Utility; using UnityExplorer.UI.Widgets; namespace UnityExplorer.UI.Panels { public class InspectorPanel : UIPanel { public static InspectorPanel Instance { get; private set; } public InspectorPanel() { Instance = this; } public override string Name => "Inspector"; public override UIManager.Panels PanelType => UIManager.Panels.Inspector; public override bool ShouldSaveActiveState => false; public GameObject NavbarHolder; public GameObject ContentHolder; public static float CurrentPanelWidth => Instance.mainPanelRect.rect.width; public override void Update() { InspectorManager.Update(); } public override void OnFinishResize(RectTransform panel) { base.OnFinishResize(panel); InspectorManager.OnPanelResized(); } public override void LoadSaveData() { ApplySaveData(ConfigManager.GameObjectInspectorData.Value); } public override void SaveToConfigManager() { ConfigManager.GameObjectInspectorData.Value = this.ToSaveData(); } public override void SetDefaultPosAndAnchors() { mainPanelRect.localPosition = Vector2.zero; mainPanelRect.pivot = new Vector2(0.5f, 0.5f); mainPanelRect.anchorMin = new Vector2(0.5f, 0); mainPanelRect.anchorMax = new Vector2(0.5f, 1); mainPanelRect.offsetMin = new Vector2(mainPanelRect.offsetMin.x, 100); // bottom mainPanelRect.offsetMax = new Vector2(mainPanelRect.offsetMax.x, -50); // top mainPanelRect.sizeDelta = new Vector2(700f, mainPanelRect.sizeDelta.y); mainPanelRect.anchoredPosition = new Vector2(-150, 0); } public override void ConstructPanelContent() { // this.UIRoot.GetComponent().enabled = false; UIFactory.SetLayoutGroup(this.content, forceHeight: true, spacing: 10, padLeft: 5, padRight: 5); this.NavbarHolder = UIFactory.CreateGridGroup(this.content, "Navbar", new Vector2(200, 22), new Vector2(4, 2), new Color(0.18f, 0.18f, 0.18f)); //UIFactory.SetLayoutElement(NavbarHolder, flexibleWidth: 9999, minHeight: 0, preferredHeight: 0, flexibleHeight: 9999); NavbarHolder.AddComponent().verticalFit = ContentSizeFitter.FitMode.PreferredSize; this.ContentHolder = UIFactory.CreateVerticalGroup(this.content, "ContentHolder", true, true, true, true, 0, default, new Color(0.1f, 0.1f, 0.1f)); UIFactory.SetLayoutElement(ContentHolder, flexibleHeight: 9999); UIManager.SetPanelActive(PanelType, false); } } } //using System; //using System.Collections; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using UnityEngine; //using UnityEngine.UI; //using UnityExplorer.Core.Config; //using UnityExplorer.Core.Runtime; //using UnityExplorer.UI.Models; //using UnityExplorer.UI.Utility; //using UnityExplorer.UI.Widgets; //namespace UnityExplorer.UI.Panels //{ // public class InspectorPanel : UIPanel // { // public static InspectorPanel Instance { get; private set; } // public GameObject NavbarHolder; // public GameObject ContentHolder; // public override string Name => "Inspector"; // public override UIManager.Panels PanelType => UIManager.Panels.Inspector; // public override bool ShouldSaveActiveState => false; // public InspectorPanel() { Instance = this; } // public override void Update() // { // } // public override void LoadSaveData() // { // ApplySaveData(ConfigManager.GameObjectInspectorData.Value); // } // public override void SaveToConfigManager() // { // ConfigManager.GameObjectInspectorData.Value = this.ToSaveData(); // } // public override void SetDefaultPosAndAnchors() // { // mainPanelRect.localPosition = Vector2.zero; // mainPanelRect.pivot = new Vector2(0.5f, 0.5f); // mainPanelRect.anchorMin = new Vector2(0.5f, 0); // mainPanelRect.anchorMax = new Vector2(0.5f, 1); // mainPanelRect.offsetMin = new Vector2(mainPanelRect.offsetMin.x, 100); // bottom // mainPanelRect.offsetMax = new Vector2(mainPanelRect.offsetMax.x, -50); // top // mainPanelRect.sizeDelta = new Vector2(700f, mainPanelRect.sizeDelta.y); // mainPanelRect.anchoredPosition = new Vector2(-150, 0); // } // internal static DynamicListTest listInstance; // private ScrollPool scrollPool; // public override void ConstructPanelContent() // { // // temp test // scrollPool = UIFactory.CreateScrollPool(content, "Test", out GameObject scrollObj, // out GameObject scrollContent, new Color(0.15f, 0.15f, 0.15f)); // UIFactory.SetLayoutElement(scrollObj, flexibleHeight: 9999); // UIFactory.SetLayoutElement(scrollContent, flexibleHeight: 9999); // // disable masks for debug // UIRoot.GetComponent().enabled = false; // scrollPool.Viewport.GetComponent().enabled = false; // scrollPool.Content.gameObject.AddComponent().color = new Color(1f, 0f, 1f, 0.3f); // listInstance = new DynamicListTest(scrollPool, this); // listInstance.Init(); // //var prototype = DynamicCell.CreatePrototypeCell(scrollContent); // //scrollPool.PrototypeCell = prototype.GetComponent(); // contentHolder = new GameObject("DummyHolder"); // contentHolder.SetActive(false); // contentHolder.transform.SetParent(this.content.transform, false); // ExplorerCore.Log("Creating dummy objects"); // for (int i = 0; i < 150; i++) // { // dummyContents.Add(CreateDummyContent()); // } // ExplorerCore.Log("Done"); // //previousRectHeight = mainPanelRect.rect.height; // UIManager.SetPanelActive(PanelType, false); // } // internal GameObject contentHolder; // internal readonly List dummyContents = new List(); // private GameObject CreateDummyContent() // { // var obj = UIFactory.CreateVerticalGroup(contentHolder, "Content", true, true, true, true, 2, new Vector4(2, 2, 2, 2)); // obj.AddComponent().verticalFit = ContentSizeFitter.FitMode.PreferredSize; // var horiGroup = UIFactory.CreateHorizontalGroup(obj, "topGroup", true, true, true, true); // UIFactory.SetLayoutElement(horiGroup, minHeight: 25, flexibleHeight: 0); // var mainLabel = UIFactory.CreateLabel(horiGroup, "label", "Dummy " + dummyContents.Count, TextAnchor.MiddleCenter); // UIFactory.SetLayoutElement(mainLabel.gameObject, minHeight: 25, flexibleHeight: 0); // var expandButton = UIFactory.CreateButton(horiGroup, "Expand", "V"); // UIFactory.SetLayoutElement(expandButton.gameObject, minWidth: 25, flexibleWidth: 0); // var subContent = UIFactory.CreateVerticalGroup(obj, "SubContent", true, true, true, true); // var inputObj = UIFactory.CreateInputField(subContent, "input", "...", out var inputField); // UIFactory.SetLayoutElement(inputObj, minHeight: 25, flexibleHeight: 9999); // inputObj.AddComponent().verticalFit = ContentSizeFitter.FitMode.PreferredSize; // inputField.lineType = InputField.LineType.MultiLineNewline; // int numLines = UnityEngine.Random.Range(0, 10); // inputField.text = "This field has " + numLines + " lines"; // for (int i = 0; i < numLines; i++) // inputField.text += "\r\n"; // //subContent.SetActive(false); // var btnLabel = expandButton.GetComponentInChildren(); // expandButton.onClick.AddListener(OnExpand); // void OnExpand() // { // bool active = !subContent.activeSelf; // if (active) // { // subContent.SetActive(true); // btnLabel.text = "^"; // } // else // { // subContent.SetActive(false); // btnLabel.text = "V"; // } // } // return obj; // } // } // public class DynamicListTest : IPoolDataSource // { // internal ScrollPool ScrollPool; // internal InspectorPanel Inspector; // public DynamicListTest(ScrollPool scroller, InspectorPanel inspector) // { // ScrollPool = scroller; // Inspector = inspector; // } // public int ItemCount => filtering ? filteredIndices.Count : Inspector.dummyContents.Count; // private bool filtering; // private readonly List filteredIndices = new List(); // public int GetRealIndexOfTempIndex(int index) // { // if (index < 0 || index >= filteredIndices.Count) // return -1; // return filteredIndices[index]; // } // public void ToggleFilter() // { // if (filtering) // { // DisableFilter(); // ScrollPool.DisableTempCache(); // } // else // { // EnableRandomFilter(); // ScrollPool.EnableTempCache(); // } // ExplorerCore.Log("Filter toggled, new count: " + ItemCount); // ScrollPool.Rebuild(); // } // public void EnableRandomFilter() // { // filteredIndices.Clear(); // filtering = true; // int counter = UnityEngine.Random.Range(0, Inspector.dummyContents.Count); // while (filteredIndices.Count < counter) // { // var i = UnityEngine.Random.Range(0, Inspector.dummyContents.Count); // if (!filteredIndices.Contains(i)) // filteredIndices.Add(i); // } // filteredIndices.Sort(); // } // public void DisableFilter() // { // filtering = false; // } // public void OnDisableCell(CellViewHolder cell, int dataIndex) // { // if (cell.UIRoot.transform.Find("Content") is Transform existing) // existing.transform.SetParent(Inspector.contentHolder.transform, false); // } // public void Init() // { // var prototype = CellViewHolder.CreatePrototypeCell(ScrollPool.UIRoot); // ScrollPool.DataSource = this; // ScrollPool.Initialize(this, prototype); // } // public ICell CreateCell(RectTransform cellTransform) => new CellViewHolder(cellTransform.gameObject); // public void DisableCell(ICell icell, int index) // { // var root = (icell as CellViewHolder).UIRoot; // DisableContent(root); // icell.Disable(); // } // public void SetCell(ICell icell, int index) // { // var root = (icell as CellViewHolder).UIRoot; // if (index < 0 || index >= ItemCount) // { // DisableContent(root); // icell.Disable(); // return; // } // if (filtering) // index = GetRealIndexOfTempIndex(index); // var content = Inspector.dummyContents[index]; // if (content.transform.parent.ReferenceEqual(root.transform)) // return; // ExplorerCore.Log("Setting index " + index + " to cell " + root.transform.name); // DisableContent(root); // content.transform.SetParent(root.transform, false); // } // private void DisableContent(GameObject cellRoot) // { // if (cellRoot.transform.Find("Content") is Transform existing) // existing.transform.SetParent(Inspector.contentHolder.transform, false); // } // } //}