UnityExplorer/src/UI/Inspectors/InspectorBase.cs

64 lines
1.7 KiB
C#
Raw Normal View History

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; }
2021-04-28 23:58:13 +10:00
public object InspectorTarget { get; internal set; }
public InspectorTab Tab { get; internal set; }
public GameObject UIRoot { get; set; }
public float DefaultHeight => -1f;
public abstract GameObject CreateContent(GameObject parent);
public abstract void Update();
public virtual void OnBorrowedFromPool(object target)
{
Tab = Pool<InspectorTab>.Borrow();
Tab.UIRoot.transform.SetParent(InspectorPanel.Instance.NavbarHolder.transform, false);
Tab.TabButton.OnClick += OnTabButtonClicked;
Tab.CloseButton.OnClick += OnCloseClicked;
}
public virtual void OnReturnToPool()
{
Pool<InspectorTab>.Return(Tab);
Tab.TabButton.OnClick -= OnTabButtonClicked;
Tab.CloseButton.OnClick -= OnCloseClicked;
}
public virtual void OnSetActive()
{
2021-04-28 23:58:13 +10:00
Tab.SetTabColor(true);
UIRoot.SetActive(true);
IsActive = true;
}
public virtual void OnSetInactive()
{
2021-04-28 23:58:13 +10:00
Tab.SetTabColor(false);
UIRoot.SetActive(false);
IsActive = false;
}
private void OnTabButtonClicked()
{
InspectorManager.SetInspectorActive(this);
}
protected abstract void OnCloseClicked();
}
}