Beispiel #1
0
        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();
                }
            }
        }
Beispiel #3
0
 // ICarrierFactory
 public void SetCarrierCounterDirection(IScrollController <TData> controller)
 {
     if (_current is SuspendedCarrier <TData> )
     {
         return;
     }
     _current = new OneItemHopCounterDirectionCarrier <TData>(controller);
     controller.OnCarrierChange(_current);
 }
Beispiel #4
0
 // 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;
     }
 }
Beispiel #6
0
 // ICarrierFactory
 public void SetBumperCounterDirection(IScrollController <TData> controller)
 {
     if (_current is SuspendedCarrier <TData> )
     {
         return;
     }
     _current = new BouncingCounterDirectionCarrier <TData>();
     controller.OnCarrierChange(_current);
 }
Beispiel #7
0
        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);
        }
Beispiel #9
0
        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
        }
Beispiel #12
0
        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));
        }
Beispiel #13
0
        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;
            }
        }
Beispiel #14
0
        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)
 {
 }
Beispiel #22
0
 // 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)
 {
 }