using System; using UniRx; using UnityEngine; public interface ISDUIPresentView { Transform BodyTransform { get; } RectTransform ViewRect { get; } void Init (ISDUIPresentModel model); IObservable<ISDUIElement> Show (ISDUIElement element); IObservable<Unit> Hide (); IObservable<ISDUIElement> Navigate (ISDUIElement element, ISDUIElement previous); IObservable<ISDUIElement> Back (ISDUIElement element, ISDUIElement previous); } public class SDUIPresentView : MonoBehaviour, ISDUIPresentView { [SerializeField] protected Transform m_BodyTransform; public Transform BodyTransform { get { return m_BodyTransform; } } protected RectTransform m_ViewRect; public RectTransform ViewRect { get { return m_ViewRect; } } ISDUIPresentModel m_Model; protected virtual void Awake () { m_ViewRect = this.gameObject.GetComponent<RectTransform> (); } protected virtual void Start () { var safeAreaInset = SDEnvironment.Default.SafeAreaInset; m_ViewRect.offsetMin = new Vector2 (m_ViewRect.offsetMin.x, safeAreaInset.Bottom); m_ViewRect.offsetMax = new Vector2 (m_ViewRect.offsetMax.x, -safeAreaInset.Top); } public void Init (ISDUIPresentModel model) { m_Model = model; } public virtual IObservable<ISDUIElement> Show (ISDUIElement element) { return Observable.Return (element); } public virtual IObservable<Unit> Hide () { return Observable.Return (Unit.Default); } public virtual IObservable<ISDUIElement> Navigate (ISDUIElement element, ISDUIElement previous) { return Observable.Return (element); } public virtual IObservable<ISDUIElement> Back (ISDUIElement element, ISDUIElement previous) { return Observable.Return (element); } }