Log("Pressed", args); base.OnPointerPressed(args); } protected override void OnPointerReleased(PointerRoutedEventArgs args) { Log("Released", args); base.OnPointerReleased(args); } protected override void OnPointerWheelChanged(PointerRoutedEventArgs args) { Log("WheelChanged", args); base.OnPointerWheelChanged(args); } void Log(string eventName, PointerRoutedEventArgs args) { uint id = args.Pointer.PointerId; PointerInfo pointerInfo; string event_string = ""; string header_string = ""; DateTime eventTime = DateTime.Now;
/// <summary> /// Ghost follows pointer /// </summary> void OnMouseMoved(PointerInfo pointer) { // We only respond to mouse info var mouseInfo = pointer as MouseCursorInfo; }
void Log(string eventName, PointerRoutedEventArgs args) { uint id = args.Pointer.PointerId; PointerInfo pointerInfo; if (pointerDictionary.ContainsKey(id)) { pointerInfo = pointerDictionary[id]; } else { // New ID, so new StackPanel and header TextBlock header = new TextBlock { Text = args.Pointer.PointerId + " - " + args.Pointer.PointerDeviceType, FontWeight = FontWeights.Bold }; StackPanel stackPanel = new StackPanel(); stackPanel.Children.Add(header); // New PointerInfo for dictionary pointerInfo = new PointerInfo { stackPanel = stackPanel }; pointerDictionary.Add(id, pointerInfo); // New column in the Grid for the StackPanel ColumnDefinition coldef = new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }; contentGrid.ColumnDefinitions.Add(coldef); Grid.SetColumn(stackPanel, contentGrid.ColumnDefinitions.Count - 1); contentGrid.Children.Add(stackPanel); } // Don't repeat PointerMoved and PointerWheelChanged events TextBlock txtblk = null; if (eventName == pointerInfo.repeatEvent) { txtblk = pointerInfo.repeatTextBlock; } else { txtblk = new TextBlock(); pointerInfo.stackPanel.Children.Add(txtblk); } txtblk.Text = eventName + " "; if (eventName == "WheelChanged") { txtblk.Text += args.GetCurrentPoint(this).Properties.MouseWheelDelta; } else { txtblk.Text += args.GetCurrentPoint(this).Position; } txtblk.Text += args.Pointer.IsInContact ? " C" : ""; txtblk.Text += args.Pointer.IsInRange ? " R" : ""; if (eventName == "Moved" || eventName == "WheelChanged") { pointerInfo.repeatEvent = eventName; pointerInfo.repeatTextBlock = txtblk; } else { pointerInfo.repeatEvent = null; pointerInfo.repeatTextBlock = null; } }
/// <summary> /// Calculates the ray for a specified pointer in 3d space /// </summary> /// <param name="pointer">The pointer info</param> /// <returns>The ray representing a screen-space pointer in 3D space</returns> public Ray GetRayForPointer(PointerInfo pointer) { return(cachedCamera.ScreenPointToRay(pointer.currentPosition)); }