Tanoda
FancyScrollRectCell.cs
Go to the documentation of this file.
1
3
5{
13 public abstract class FancyScrollRectCell<TItemData, TContext> : FancyCell<TItemData, TContext>
14 where TContext : class, IFancyScrollRectContext, new()
15 {
17 public override void UpdatePosition(float position)
18 {
19 var (scrollSize, reuseMargin) = Context.CalculateScrollSize();
20
21 var normalizedPosition = (Mathf.Lerp(0f, scrollSize, position) - reuseMargin) / (scrollSize - reuseMargin * 2f);
22
23 var start = 0.5f * scrollSize;
24 var end = -start;
25
26 UpdatePosition(normalizedPosition, Mathf.Lerp(start, end, position));
27 }
28
38 protected virtual void UpdatePosition(float normalizedPosition, float localPosition)
39 {
40 transform.localPosition = Context.ScrollDirection == ScrollDirection.Horizontal
41 ? new Vector2(-localPosition, 0)
42 : new Vector2(0, localPosition);
43 }
44 }
45
51 public abstract class FancyScrollRectCell<TItemData> : FancyScrollRectCell<TItemData, FancyScrollRectContext>
52 {
54 public sealed override void SetContext(FancyScrollRectContext context) => base.SetContext(context);
55 }
56}
TContext Context
FancyScrollView<TItemData, TContext>.Context の参照. セルとスクロールビュー間で同じインスタンスが共有されます. 情報の受け渡しや状態の保持に使用します.
Definition: FancyCell.cs:30
FancyScrollRect<TItemData, TContext> のセルを実装するための抽象基底クラス. FancyCell<TItemData, TContext>....
override void UpdatePosition(float position)
0.0f ~ 1.0f の値に基づいてこのセルのスクロール位置を更新します.
sealed override void SetContext(FancyScrollRectContext context)
virtual void UpdatePosition(float normalizedPosition, float localPosition)
このセルの位置を更新します.
FancyScrollRect<TItemData, TContext> のコンテキスト基底クラス.
Credit Erdener Gonenc - @PixelEnvision.