/// Credit setchi (https://github.com/setchi)
/// Sourced from - https://github.com/setchi/FancyScrollView
namespace UnityEngine.UI.Extensions
{
///
/// のセルを実装するための抽象基底クラス.
/// が不要な場合は
/// 代わりに を使用します.
///
/// アイテムのデータ型.
/// の型.
public abstract class FancyCell : MonoBehaviour where TContext : class, new()
{
///
/// このセルで表示しているデータのインデックス.
///
public int Index { get; set; } = -1;
///
/// このセルの可視状態.
///
public virtual bool IsVisible => gameObject.activeSelf;
///
/// の参照.
/// セルとスクロールビュー間で同じインスタンスが共有されます. 情報の受け渡しや状態の保持に使用します.
///
protected TContext Context { get; private set; }
///
/// をセットします.
///
/// コンテキスト.
public virtual void SetContext(TContext context) => Context = context;
///
/// 初期化を行います.
///
public virtual void Initialize() { }
///
/// このセルの可視状態を設定します.
///
/// 可視状態なら true, 非可視状態なら false.
public virtual void SetVisible(bool visible) => gameObject.SetActive(visible);
///
/// アイテムデータに基づいてこのセルの表示内容を更新します.
///
/// アイテムデータ.
public abstract void UpdateContent(TItemData itemData);
///
/// 0.0f ~ 1.0f の値に基づいてこのセルのスクロール位置を更新します.
///
/// ビューポート範囲の正規化されたスクロール位置.
public abstract void UpdatePosition(float position);
}
///
/// のセルを実装するための抽象基底クラス.
///
/// アイテムのデータ型.
///
public abstract class FancyCell : FancyCell
{
///
public sealed override void SetContext(NullContext context) => base.SetContext(context);
}
}