using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using UnityExplorer.UI.ObjectPool; using UnityExplorer.UI.Panels; namespace UnityExplorer.UI.Inspectors { public abstract class InspectorBase : IPooledObject { public bool IsActive { get; internal set; } public object InspectorTarget { get; internal set; } public InspectorTab Tab { get; internal set; } public abstract GameObject UIRoot { get; } public float DefaultHeight => -1f; public abstract GameObject CreateContent(GameObject parent); public abstract void Update(); public virtual void OnBorrowedFromPool(object target) { Tab = Pool.Borrow(); Tab.UIRoot.transform.SetParent(InspectorPanel.Instance.NavbarHolder.transform, false); Tab.TabButton.OnClick += OnTabButtonClicked; Tab.CloseButton.OnClick += OnCloseClicked; } public virtual void OnReturnToPool() { Pool.Return(Tab); Tab.TabButton.OnClick -= OnTabButtonClicked; Tab.CloseButton.OnClick -= OnCloseClicked; } public virtual void OnSetActive() { Tab.SetTabColor(true); UIRoot.SetActive(true); IsActive = true; } public virtual void OnSetInactive() { Tab.SetTabColor(false); UIRoot.SetActive(false); IsActive = false; } private void OnTabButtonClicked() { InspectorManager.SetInspectorActive(this); } protected abstract void OnCloseClicked(); } }