public Vector2 GetFinishingPosition(TouchPositionSpace space) { Vector2 averageFinishPos = Vector2.Zero ; foreach (String touchID in TouchIDs) { var tracker = inputEventSystem.GetTouchTracker(touchID); var p = tracker.GetPosition(space); averageFinishPos += p; } averageFinishPos /= TouchIDs.Length; return averageFinishPos; }
Vector2 GetPositionOfSampleAtIndex(int index, TouchPositionSpace space) { var pos = this.samples[index].Position; var multiplier = Vector2.One; var pps = panelSpec.PanelPhysicalSize.GetValueOrDefault (new Vector2 (0.16f, 0.09f)); switch (space) { case TouchPositionSpace.RealWorld: if(platform.Host.CurrentOrientation == DeviceOrientation.Default || platform.Host.CurrentOrientation == DeviceOrientation.Upsidedown) { multiplier = new Vector2(pps.X, pps.Y); } else { multiplier = new Vector2(pps.Y, pps.X); } break; case TouchPositionSpace.Screen: if (this.platform.Host.CurrentOrientation == DeviceOrientation.Upsidedown ) { pos.Y = - pos.Y; pos.X = - pos.X; } else if (this.platform.Host.CurrentOrientation == DeviceOrientation.Leftside ) { Single temp = pos.X; pos.X = -pos.Y; pos.Y = temp; } else if(this.platform.Host.CurrentOrientation == DeviceOrientation.Rightside ) { Single temp = pos.X; pos.X = pos.Y; pos.Y = -temp; } Int32 w = this.platform.Status.Width; Int32 h = this.platform.Status.Height; //this.platform.System.GetEffectiveDisplaySize(ref w, ref h); multiplier = new Vector2(w, h); break; } pos *= multiplier; return pos; }
public Vector2 GetPosition(TouchPositionSpace space) { int numSamples = samples.Count; var curPos = this.GetPositionOfSampleAtIndex(numSamples - 1, space); return curPos; }
public Vector2 GetVelocity(TouchPositionSpace space) { int numSamples = samples.Count; if (numSamples > 1) { var currentTouch = this.samples[numSamples - 1]; var previousTouch = this.samples[numSamples - 2]; var currentPos = this.GetPositionOfSampleAtIndex(numSamples - 1, space); var previousPos = this.GetPositionOfSampleAtIndex(numSamples - 2, space); Single dt = currentTouch.Timestamp - previousTouch.Timestamp; return (currentPos - previousPos) / dt; } return Vector2.Zero; }
public Single GetDistanceTraveled(TouchPositionSpace posType) { Single distance = 0f; for (Int32 i = 0; i < samples.Count; ++i) { if (i > 0) { var currentPosition = this.GetPositionOfSampleAtIndex(i, posType); var previousPosition = this.GetPositionOfSampleAtIndex(i - 1, posType); Single mag = (currentPosition - previousPosition).Length(); distance += mag; } } return distance; }