using R3; using UnityEngine; namespace FlowScope.UI { internal interface IUIPanel { GameObject gameObject { get; } Transform transform { get; } void Unbind(); } public abstract class UIPanelBase : MonoBehaviour, IUIPanel { protected TViewModel ViewModel { get; private set; } protected CompositeDisposable Disposables { get; } = new(); public void Bind(TViewModel viewModel) { ViewModel = viewModel; OnBind(viewModel); } public virtual void Unbind() { Disposables.Clear(); } protected abstract void OnBind(TViewModel viewModel); } }