コード例 #1
0
        private void PlaceholderInteractionGrid_OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
        {
            if (isLocked)
            {
                return;
            }
            var cumulativeTranslationX = e.Cumulative.Translation.X;

            switch (currentGestureActionType)
            {
            case GestureActionType.Null:
                break;

            case GestureActionType.Volume:
                GestureTextBlockDescription.Text = Strings.Volume + " " + computeVolumeFromGesture(e.Cumulative) + "%";
                break;

            case GestureActionType.Brightness:
                break;

            case GestureActionType.Seek:
                var seekInSeconds = Math.Floor(cumulativeTranslationX / 10);
                GestureTextBlockDescription.Text = StringsHelper.SecondsToString(seekInSeconds) + " (" + StringsHelper.MillisecondsToString(Locator.MediaPlaybackViewModel.Time) + ")";
                break;

            case GestureActionType.Exlore3D:
                var scale = Math.Abs(e.Cumulative.Scale);
                if (scale > 1 || scale < 1)
                {
                    _playbackService.UpdateViewpoint(new VideoViewpoint(0, 0, 0, scale < 1 ? 0.5f : -0.5f), false);
                }
                else
                {
                    var yaw       = (float)(DEFAULT_FOV * -e.Cumulative.Translation.X / App.RootPage.SwapChainPanel.ActualWidth) / DIVIDER;
                    var pitch     = (float)(DEFAULT_FOV * -e.Cumulative.Translation.Y / App.RootPage.SwapChainPanel.ActualHeight) / DIVIDER;
                    var viewpoint = new VideoViewpoint(yaw, pitch, 0, 0);
                    _playbackService.UpdateViewpoint(viewpoint, false);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #2
0
 public void UpdateViewpoint(VideoViewpoint viewpoint, bool absolute)
 {
     _mediaPlayer.updateViewpoint(viewpoint, absolute);
 }
コード例 #3
0
        void KeyboardListenerService_KeyDown(CoreWindow sender, KeyEventArgs args)
        {
            if (!CanListen)
            {
                return;
            }

            KeyDownPressed?.Invoke(sender, args);
            // Guidelines:
            // If first VirtualKey is Ctrl, Alt, or Shift, then we're waiting for another key
            var i = 0;

            while (i < MaxVirtualKeys && _virtualKeys[i] != VirtualKey.None)
            {
                i++;
            }

            if (i == MaxVirtualKeys)
            {
                _virtualKeys = new VirtualKey[3];
            }
            else
            {
                _virtualKeys[i] = args.VirtualKey;
            }

            switch (args.VirtualKey)
            {
            case VirtualKey.Control:
                Debug.WriteLine("Ctrl key was pressed, waiting another key ...");
                break;

            case VirtualKey.Shift:
                Debug.WriteLine("Shift key was pressed, waiting another key ...");
                break;

            default:
                Debug.WriteLine($"{args.VirtualKey} key was pressed");

                var action = Shortcuts.FirstOrDefault(x =>
                                                      (x.MainKey == _virtualKeys[0] || x.KeyCode == (int)_virtualKeys[0]) &&
                                                      (x.SecondKey == _virtualKeys[1] || x.KeyCode == (int)_virtualKeys[1]));

                if (action != null)
                {
                    // if there's a match, get the ActionId
                    DoKeyboardAction(action);
                }
                else
                {
                    if (Locator.NavigationService.CurrentPage == VLCPage.VideoPlayerPage)
                    {
                        switch (args.VirtualKey)
                        {
                        case VirtualKey.GamepadLeftThumbstickButton:
                        case VirtualKey.GamepadRightThumbstickButton:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            var vp = new VideoViewpoint(0f, 0f, 0f,
                                                        args.VirtualKey == VirtualKey.GamepadRightThumbstickButton ? -0.5f : 0.5f);
                            Locator.PlaybackService.UpdateViewpoint(vp, false);
                            break;

                        case VirtualKey.GamepadA:
                        case VirtualKey.GamepadDPadDown:
                        case VirtualKey.GamepadDPadLeft:
                        case VirtualKey.GamepadDPadUp:
                        case VirtualKey.GamepadDPadRight:
                        case VirtualKey.GamepadLeftThumbstickUp:
                        case VirtualKey.GamepadLeftThumbstickDown:
                        case VirtualKey.GamepadLeftThumbstickRight:
                        case VirtualKey.GamepadLeftThumbstickLeft:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            break;

                        case VirtualKey.GamepadY:
                            Locator.MediaPlaybackViewModel.PlayOrPauseCommand.Execute(null);
                            break;

                        case VirtualKey.GamepadLeftShoulder:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(-5000);
                            break;

                        case VirtualKey.GamepadLeftTrigger:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(-30000);
                            break;

                        case VirtualKey.GamepadRightShoulder:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(5000);
                            break;

                        case VirtualKey.GamepadRightTrigger:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(30000);
                            break;

                        case VirtualKey.GamepadRightThumbstickDown:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(0f, 5f, 0f, 0f), false);
                            break;

                        case VirtualKey.GamepadRightThumbstickUp:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(0f, -5f, 0f, 0f), false);
                            break;

                        case VirtualKey.GamepadRightThumbstickLeft:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(-5f, 0f, 0f, 0f), false);
                            break;

                        case VirtualKey.GamepadRightThumbstickRight:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(5f, 0f, 0f, 0f), false);
                            break;

                        default:
                            break;
                        }
                    }
                }
                break;
            }
        }