/// <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; }
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(); }