/// <summary>
        /// Stops input handling.
        /// </summary>
        public void Stop()
        {
            if (m_painter == null)
            {
                return;
            }
            if (m_dispatcher == null)
            {
                return;
            }

            // Deregister all events on UI thread
            SeeingSharpCoreWindowPainter painter = m_painter;
            CoreWindow coreWindow = m_coreWindow;

            m_dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                // Deregister all events
                painter.TargetWindow.PointerExited       -= OnTargetPanel_PointerExited;
                painter.TargetWindow.PointerEntered      -= OnTargetPanel_PointerEntered;
                painter.TargetWindow.PointerWheelChanged -= OnTargetPanel_PointerWheelChanged;
                painter.TargetWindow.PointerPressed      -= OnTargetPanel_PointerPressed;
                painter.TargetWindow.PointerReleased     -= OnTargetPanel_PointerReleased;
                painter.TargetWindow.PointerMoved        -= OnTargetPanel_PointerMoved;

                // Deregister events from CoreWindow
                coreWindow.KeyDown -= OnCoreWindow_KeyDown;
                coreWindow.KeyUp   -= OnCoreWindow_KeyUp;
            }).FireAndForget();

            // set all references to zero
            m_painter    = null;
            m_coreWindow = null;
            m_dispatcher = null;
        }
Exemple #2
0
        public void SetWindow(CoreWindow window)
        {
            m_mainWindow = window;

            m_mainWindowPainter            = new SeeingSharpCoreWindowPainter(window);
            m_mainWindowPainter.ClearColor = Windows.UI.Colors.CornflowerBlue;
        }
        /// <summary>
        /// Starts input handling.
        /// </summary>
        /// <param name="viewObject">The view object (e. g. Direct3D11Canvas).</param>
        public void Start(IInputEnabledView viewObject)
        {
            m_painter = viewObject as SeeingSharpCoreWindowPainter;
            if (m_painter == null)
            {
                throw new ArgumentException("Unable to handle given view object!");
            }

            m_viewInterface = m_painter as IInputEnabledView;
            if (m_viewInterface == null)
            {
                throw new ArgumentException("Unable to handle given view object!");
            }

            m_renderLoop = m_viewInterface.RenderLoop;
            if (m_renderLoop == null)
            {
                throw new ArgumentException("Unable to handle given view object!");
            }

            m_dispatcher = m_painter.Disptacher;
            if (m_dispatcher == null)
            {
                throw new ArgumentException("Unable to get CoreDisptacher from target panel!");
            }

            // Deligate start logic to UI thread
            m_dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                // Register all events
                m_painter.TargetWindow.PointerExited       += OnTargetPanel_PointerExited;
                m_painter.TargetWindow.PointerEntered      += OnTargetPanel_PointerEntered;
                m_painter.TargetWindow.PointerWheelChanged += OnTargetPanel_PointerWheelChanged;
                m_painter.TargetWindow.PointerPressed      += OnTargetPanel_PointerPressed;
                m_painter.TargetWindow.PointerReleased     += OnTargetPanel_PointerReleased;
                m_painter.TargetWindow.PointerMoved        += OnTargetPanel_PointerMoved;

                m_coreWindow          = CoreWindow.GetForCurrentThread();
                m_coreWindow.KeyDown += OnCoreWindow_KeyDown;
                m_coreWindow.KeyUp   += OnCoreWindow_KeyUp;
            }).FireAndForget();
        }