public FreeCarrier(IScrollController <TData> controller) { var delta = controller.PointerEventData.delta.ProjectTo(controller.GrowDirection); //! temporal - item height limit speed _delta = delta.magnitude > ScrollerExtensions.SCROLL_SPEED_LIMIT_F ? delta.normalized * ScrollerExtensions.SCROLL_SPEED_LIMIT_F : delta; var cutting = new Straight { Direction = _delta.normalized, }; _isAtTarget = !controller.RectTransform.GetIntersectionInLocalSpace(cutting, out _target); var item = controller.FirstOrDefault(_ => _.RectTransform.IsInsideParentSpace(_target.Origin)) ?? (Vector2.Dot(_delta, controller.GrowDirection) > 0 ? controller.First() : controller.Last()); VectorGeneric2 @internal; item.RectTransform.GetIntersectionInParentSpace(cutting, out @internal); _necessaryDist = (_target.Origin - @internal.Origin).magnitude; _acceleration = -_delta.normalized * (_necessaryDist / (STOP_TIME_F * STOP_TIME_F) + _delta.magnitude / STOP_TIME_F); //ScrollerExtensions.MultiLine(controller.RectTransform.GetSidesInLocalSpace(), Color.yellow * .5f, true, 1f); //ScrollerExtensions.Cross(_target.Origin, Color.yellow, 30f, 1f); //ScrollerExtensions.Cross(@internal.Origin, Color.yellow, 30f, 1f); //Debug.Log(string.Format("speed: {0}, acceleration: {1}, distance is: {2}", _delta, _acceleration, _necessuaryDist)); }
protected void Shift(IScrollController <TData> controller, Vector2 delta) { ////! temporal - item height limit speed //delta = delta.magnitude > ScrollerExtensions.SCROLL_SPEED_LIMIT_F ? delta.normalized * ScrollerExtensions.SCROLL_SPEED_LIMIT_F : delta; var direction = new Straight { Direction = controller.GrowDirection }; VectorGeneric2 intersection; if (!controller.RectTransform.GetIntersectionInLocalSpace(direction, out intersection)) { return; } if (Vector2.Dot(delta, controller.GrowDirection) > 0) { var first = controller.FirstOrDefault(); if (first != null && !first.RectTransform.IsInsideParentSpace(intersection.Origin) && controller.RectTransform.IsOverlapsChild(controller.First().RectTransform)) { controller.ShiftWindowUp(); } } if (Vector2.Dot(delta, controller.GrowDirection) < 0) { var last = controller.LastOrDefault(); if (last != null && !last.RectTransform.IsInsideParentSpace(intersection.Target) && controller.RectTransform.IsOverlapsChild(controller.Last().RectTransform)) { controller.ShiftWindowDown(); } } }
// ICarrierFactory public void SetCarrierCounterDirection(IScrollController <TData> controller) { if (_current is SuspendedCarrier <TData> ) { return; } _current = new OneItemHopCounterDirectionCarrier <TData>(controller); controller.OnCarrierChange(_current); }
// ICarrierFactory public void SetDefaultCarrier(IScrollController <TData> controller) { if (_current is SuspendedCarrier <TData> ) { return; } _current = new DefaultCarrier <TData>(); controller.OnCarrierChange(_current); }
protected void MoveAll(IScrollController <TData> controller, Vector2 delta) { ////! temporal - item height limit speed //delta = delta.magnitude > ScrollerExtensions.SCROLL_SPEED_LIMIT_F ? delta.normalized * ScrollerExtensions.SCROLL_SPEED_LIMIT_F : delta; foreach (var item in controller) { item.RectTransform.anchoredPosition += delta; } }
// ICarrierFactory public void SetBumperCounterDirection(IScrollController <TData> controller) { if (_current is SuspendedCarrier <TData> ) { return; } _current = new BouncingCounterDirectionCarrier <TData>(); controller.OnCarrierChange(_current); }
private void OnControllerChanged(IScrollController newController, IScrollController oldController) { if (oldController != null) { oldController.ScrollRequested -= Controller_ScrollRequested; } if (newController != null) { newController.ScrollRequested += Controller_ScrollRequested; } }
public OneItemHopCoDirectionCarrier(IScrollController <TData> controller) { var first = controller.FirstOrDefault(); if (first == null) { return; } first.RectTransform.GetIntersectionInParentSpace(new Straight { Direction = -controller.GrowDirection }, out _path); }
public OneItemHopCarrierFactory(IScrollController <TData> controller) { //_carriers = new Dictionary<Type, ICarrier<TData>>(5) //{ // { typeof(OneItemHopCoDirectionCarrier<TData>), new OneItemHopCoDirectionCarrier<TData>(controller) }, // { typeof(OneItemHopCounterDirectionCarrier<TData>), new OneItemHopCounterDirectionCarrier<TData>(controller) }, // { typeof(BouncingCoDirectionCarrier<TData>), new BouncingCoDirectionCarrier<TData>() }, // { typeof(BouncingCounterDirectionCarrier<TData>), new BouncingCounterDirectionCarrier<TData>() }, // { typeof(DefaultCarrier<TData>), new DefaultCarrier<TData>() }, //}; SetDefaultCarrier(controller); }
protected override void Update(IScrollController <TData> controller) { var time = _time - Time.deltaTime; var normalized = 1f - Mathf.Clamp01(time / TIME_MAX_F); var offset = (1f - Mathf.Cos(Mathf.PI * normalized)) * .5f * _path.Direction; MoveAll(controller, offset - _distance); // Debug.Log(string.Format("<color=magenta>moving DOWN : [ time: {0}, distance: {1}, offset: {2}]</color>", _time, _distance, offset)); if (_time < 0f) { controller.CarrierFactory.SetDefaultCarrier(controller); } _time = time; Shift(controller, offset - _distance); _distance = offset; }
protected override void Update(IScrollController <TData> controller) { var delta = controller.PointerEventData == null ? Vector2.zero : controller.PointerEventData.delta.ProjectTo(controller.GrowDirection); MoveAll(controller, delta); Shift(controller, delta); #if DEBUG //ScrollerExtensions.MultiLine(controller.RectTransform.GetSidesInLocalSpace(), Color.yellow * .5f, true, .5f); //ScrollerExtensions.MultiLine(controller.First().RectTransform, Color.yellow, true, .5f); //ScrollerExtensions.MultiLine(controller.Last().RectTransform, Color.yellow, true, .5f); //ScrollerExtensions.Cross(intersection.Origin, Color.yellow, 30f, 0f); //ScrollerExtensions.Cross(intersection.Target, Color.yellow, 30f, 0f); #endif }
protected override void Update(IScrollController <TData> controller) { if (_isAtTarget) { controller.CarrierFactory.SetDefaultCarrier(controller); return; } var direction = new Straight { Direction = controller.GrowDirection }; VectorGeneric2 intersection; if (!controller.RectTransform.GetIntersectionInLocalSpace(direction, out intersection)) { return; } if (Vector2.Dot(_delta, controller.GrowDirection) > 0) { if (!controller.First().RectTransform.IsInsideParentSpace(intersection.Origin) && controller.RectTransform.IsOverlapsChild(controller.First().RectTransform)) { controller.ShiftWindowUp(); } } else { if (!controller.Last().RectTransform.IsInsideParentSpace(intersection.Target) && controller.RectTransform.IsOverlapsChild(controller.Last().RectTransform)) { controller.ShiftWindowDown(); } } var delta = _passedDist + _delta.magnitude < _necessaryDist ? _delta : _delta.normalized * (_necessaryDist - _passedDist); foreach (var item in controller) { item.RectTransform.anchoredPosition += delta; } _passedDist += delta.magnitude; _delta = delta + Time.deltaTime * _acceleration; _isAtTarget = _necessaryDist - _passedDist <= 0f; //Debug.Log(string.Format("speed: {0} nDis: {1} pDis: {2} delta: {3}", _delta.magnitude, _necessuaryDist, _passedDist, delta.magnitude)); }
protected override void Update(IScrollController <TData> controller) { var cutting = new Straight { Direction = controller.GrowDirection, }; VectorGeneric2 intersection; controller.RectTransform.GetIntersectionInLocalSpace(cutting, out intersection); var isFirst = true; foreach (var item in controller) { item.RectTransform.anchoredPosition = isFirst ? intersection.Origin : intersection.Target; item.RectTransform.GetIntersectionInParentSpace(cutting, out intersection); isFirst = false; } }
public ExtendedListBox() { Loader = new TweetLoader(); viewportItems = new Dictionary <ITweetable, ContentPresenter>(); ActivatePullToRefresh = true; AutoManageNavigation = true; AutoManageErrors = true; selectionChangeFired = false; lastAutoReload = DateTime.MinValue; if (lastErrorFired == null) { lastErrorFired = DateTime.MinValue; } this.Loaded += OnLoad; this.SelectionChanged += ManageNavigation; #if WP7 this.Link += ExtendedListBox_Link; this.Unlink += ExtendedListBox_Unlink; this.IsFlatList = true; #elif WP8 this.ItemRealized += OnItemRealized; this.ItemUnrealized += OnItemUnrealized; #endif ExtendedListBox.SaveViewports += this.SaveInstanceViewport; Loader.Error += new TweetLoader.OnError(Loader_Error); Loader.CacheLoad += new EventHandler(Loader_CacheLoad); Loader.LoadFinished += Loader_LoadFinished; SetupCollectionViewSource(); this.Background = new SolidColorBrush(Colors.Transparent); scrollController = Dependency.Resolve <IScrollController>(); readingPosManager = Dependency.Resolve <IReadingPositionManager>(); pullDetector = Dependency.Resolve <IListboxCompressionDetector>(); }
public void SetBumperCounterDirection(IScrollController <TData> controller) { throw new NotImplementedException(); }
/// <summary> /// Creates a new Player Tracking Parallax Layer /// </summary> /// <param name="game">The game the layer belongs to</param> /// <param name="player">The player to track</param> /// <param name="ratio">The ratio of the layer</param> public ParallaxLayer(Game game, Player player, float ratio) : base(game) { spriteBatch = new SpriteBatch(game.GraphicsDevice); ScrollController = new PlayerTrackingScrollController(player, ratio); }
public DefaultItemFactory(IScrollController <TData> container) { _container = container; }
/// <summary> /// Creates a new Auto Scrolling Parallax Layer /// </summary> /// <param name="speed">The speed of the layer</param> /// <param name="game">The game the layer belongs to</param> public ParallaxLayer(Game game, float speed) : base(game) { spriteBatch = new SpriteBatch(game.GraphicsDevice); ScrollController = new AutoScrollController(speed); }
void ICarrier <TData> .Update(IScrollController <TData> controller) { Update(controller); }
public void SetCarrierCoDirection(IScrollController <TData> controller) { throw new NotImplementedException(); }
public DefaultCarrierFactory(IScrollController <TData> controller) { }
// ICarrierFactory public void UpdateController(IScrollController <TData> controller) { _current.Update(controller); }
public void SetDefaultCarrier(IScrollController <TData> controller) { throw new NotImplementedException(); }
public void UpdateController(IScrollController <TData> controller) { throw new NotImplementedException(); }
protected abstract void Update(IScrollController <TData> controller);
protected override void Update(IScrollController <TData> controller) { }