Ejemplo n.º 1
0
        private void UpdateLayoutBounds(UpdateDeviceContainerAnimMode mode)
        {
            int containersInLayout = 0;

            _layoutHeight = 0;
            for (int i = 0; i < _containers.Count; i++)
            {
                if (_containers[i].State != ContainerState.Exited && _containers[i].State != ContainerState.Exiting)
                {
                    containersInLayout++;
                    _layoutHeight = Math.Max(_layoutHeight, _containers[i].DeviceElement.LayoutSize.Y);
                }
            }
            if (_layoutHeight == 0)
            {
                _layoutHeight = _defaultDeviceHeight;
            }

            _layoutWidth = containersInLayout * _deviceWidth;
            if (containersInLayout > 1)
            {
                _layoutWidth += (containersInLayout - 1) * _deviceSpacing;
            }

            _layoutOrigin = new Vector2(-_layoutWidth / 2f, -_layoutHeight / 2f);

            UpdateCamera(mode);
        }
Ejemplo n.º 2
0
        private void UpdateDeviceContainers(UpdateDeviceContainerAnimMode mode)
        {
            int index = 0;

            for (int i = 0; i < _containers.Count; i++)
            {
                if (_containers[i].State != ContainerState.Exited && _containers[i].State != ContainerState.Exiting)
                {
                    float containerOffsetY = _layoutHeight - _containers[i].DeviceElement.LayoutSize.Y + _layoutOrigin.Y;
                    _containers[i].OffsetDestination = new Vector3(_layoutOrigin.X + index * (_deviceSpacing + _deviceWidth), containerOffsetY, 0f);
                    index++;
                    if (_disableAnimations || mode == UpdateDeviceContainerAnimMode.None || SnapOffsets(_containers[i].OffsetDestination, _containers[i].DeviceVisual.Offset))
                    {
                        _containers[i].DeviceVisual.Offset = _containers[i].OffsetDestination;
                    }
                    else
                    {
                        var offsetAnim = Window.Current.Compositor.CreateVector3KeyFrameAnimation();
                        switch (mode)
                        {
                        case UpdateDeviceContainerAnimMode.Enter:
                            offsetAnim.InsertKeyFrame(1f, _containers[i].OffsetDestination, _introAnimEasing);
                            offsetAnim.Duration = _introAnimDuration;
                            break;

                        case UpdateDeviceContainerAnimMode.Exit:
                            offsetAnim.InsertKeyFrame(1f, _containers[i].OffsetDestination, _outroAnimEasing);
                            offsetAnim.Duration = _outroAnimOffsetDuration;
                            break;

                        default:
                            offsetAnim.InsertKeyFrame(1f, _containers[i].OffsetDestination, _offsetEasing);
                            offsetAnim.Duration = _offsetAnimDuration;
                            break;
                        }
                        _containers[i].DeviceVisual.StartAnimation("Offset", offsetAnim);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void UpdateCamera(UpdateDeviceContainerAnimMode mode)
        {
            if (_disableAnimations)
            {
                _camera.AnimPosition = false;
            }
            else
            {
                switch (mode)
                {
                case UpdateDeviceContainerAnimMode.None:
                    _camera.AnimPosition = false;
                    break;

                case UpdateDeviceContainerAnimMode.Enter:
                    _camera.AnimPosition         = true;
                    _camera.PositionAnimEasing   = _introAnimEasing;
                    _camera.PositionAnimDuration = _introAnimDuration;
                    break;

                case UpdateDeviceContainerAnimMode.Exit:
                    _camera.AnimPosition         = true;
                    _camera.PositionAnimEasing   = _outroAnimEasing;
                    _camera.PositionAnimDuration = _outroAnimOffsetDuration;
                    break;

                default:
                    _camera.AnimPosition         = true;
                    _camera.PositionAnimEasing   = _offsetEasing;
                    _camera.PositionAnimDuration = _offsetAnimDuration;
                    break;
                }
            }

            var ratio = Math.Max(_layoutWidth / _viewWidth, _layoutHeight / _viewHeight);

            _camera.Position     = new Vector3(0f, 0f, ratio * _perspectiveDistance);
            _camera.ViewportSize = new Vector2(_viewWidth, _viewHeight);
        }