コード例 #1
0
ファイル: Gesture.cs プロジェクト: dreamsxin/engine-1
        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;
        }
コード例 #2
0
ファイル: TouchTracker.cs プロジェクト: gitter-badger/blimey
        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;
        }
コード例 #3
0
ファイル: TouchTracker.cs プロジェクト: gitter-badger/blimey
        public Vector2 GetPosition(TouchPositionSpace space)
        {
            int numSamples = samples.Count;

            var curPos = this.GetPositionOfSampleAtIndex(numSamples - 1, space);

            return curPos;
        }
コード例 #4
0
ファイル: TouchTracker.cs プロジェクト: gitter-badger/blimey
        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;
        }
コード例 #5
0
ファイル: TouchTracker.cs プロジェクト: gitter-badger/blimey
        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;
        }