コード例 #1
0
        void tracker_GazeDataReceived(object sender, GazeEventArgs e)
        {
            TranslateTransform transform = (TranslateTransform)CrossHair.RenderTransform;
            transform.X = e.GazePoint.X - gazeRadius;
            transform.Y = e.GazePoint.Y - gazeRadius;

            //if (knotPoints.Count < 2)
            //    return;

            if (e.GazePoint.X < 0 || e.GazePoint.X > 1920 || e.GazePoint.Y < 0 || e.GazePoint.Y > 1080)
            {
                LogEvent.Engine.Write(string.Format("Rejected GP({0:f2},{1:f2} -> Outside screen bounds", e.GazePoint.X, e.GazePoint.Y));
                return;
            }

            if (knotPoints.Count < 2)
            {
                TrackerEvent.Gaze.Log(Test.BezierIndex, e.GazePoint.X, e.GazePoint.Y, e.LeftValid, e.RightValid, "GazeNotEngaged");
                return;
            }
            else
                TrackerEvent.Gaze.Log(Test.BezierIndex, e.GazePoint.X, e.GazePoint.Y, e.LeftValid, e.RightValid, "GazeEngaged");

            //int eyeIndex = GetEyeIndex(knotPoints.Values);
            //int[] condition = conditions[Test.BezierIndex % conditions.Count];
            //int cpIndex = condition[1];
            //int[] cpCondition = cpConditions[cpIndex];
            //int eyeIndex = cpCondition.ToList().IndexOf(1);

            Point newLocation = new Point(e.GazePoint.X, e.GazePoint.Y);

            LogEvent.Engine.Write(string.Format("GP({0:f2},{1:f2}", e.GazePoint.X, e.GazePoint.Y));
            userDots[eyeIndex - 1].Center = newLocation;
            UserCurve.SetPoint(newLocation, eyeIndex);
        }
コード例 #2
0
ファイル: TouchRayPanel.cs プロジェクト: yong-ja/starodyssey
        void tracker_GazeDataReceived(object sender, GazeEventArgs e)
        {
            crosshair.Position = e.GazePoint;

            string gazeEvent;

            if (!gazeOn || yLock || completed)
                return;

            if (arrows.Count < 2)
                return;

            if (eyeArrow == null)
            {
                IRenderable tempArrow= sWidget.FindIntersection2D(e.GazePoint);
                if (tempArrow == null)
                {
                    // Session Id, gpX, gpY, valL, valR, GazeOn
                    gazeEvent = "GazeScreen";
                }
                else
                {
                    Arrow gazeArrow = (Arrow)tempArrow;

                    if (gazeArrow.Snapped)
                    {
                        return;
                    }
                    if (!gazeArrow.IsTouched)
                    {
                        gazeEvent = "GazeDwelling" + gazeArrow.Name;
                        TrackerEvent.ArrowDwell.Log(gazeArrow.Name);
                        sWidget.Select(gazeArrow.Name, Color.Orange);
                        gazeArrow.IsDwelling = true;
                        dwellStart = DateTime.Now;
                        eyeArrow = gazeArrow;

                    }
                    else
                        gazeEvent = "GazeDwellSelected" + gazeArrow.Name;
                }
            }
            else {
                TimeSpan delta = DateTime.Now.Subtract(dwellStart);
                IRenderable dwellCheckArrow = sWidget.FindIntersection2D(e.GazePoint);
                Arrow tempArrow = ((Arrow)dwellCheckArrow);
                if (delta.TotalMilliseconds < dwellInterval)
                {
                    gazeEvent = "GazeDwelling" + ((dwellCheckArrow == null) ? "Screen" : dwellCheckArrow.Name);
                }
                else if (tempArrow == eyeArrow && !tempArrow.IsTouched)
                {
                    gazeEvent = "GazeMove" + eyeArrow.Name;

                    if (!tempArrow.Snapped)
                    {
                        sWidget.SetColor(tempArrow, Color.Red);
                        EyeMoveArrow(e.GazePoint);

                        if (!tempArrow.GazeLock)
                        {
                            TrackerEvent.ArrowMoveStart.Log(tempArrow.Name);
                            tempArrow.GazeLock = true;
                            gazeLock = true;
                        }
                    }
                    else sWidget.SetColor(tempArrow, Color.Green);
                }
                else
                {
                    //sWidget.ResetColors();
                    gazeEvent = "GazeLost";
                    DisableArrow(eyeArrow);
                    eyeArrow = null;
                }
            }

            prevEyeLocation = e.GazePoint;

            TrackerEvent.Gaze.Log(Test.BoxIndex % BoxRenderer.ConditionsCount, e.GazePoint.X, e.GazePoint.Y, e.LeftValid, e.RightValid, gazeEvent);
        }
コード例 #3
0
        void tracker_GazeDataReceived(object sender, GazeEventArgs e)
        {
            TranslateTransform transform = (TranslateTransform)CrossHair.RenderTransform;
            transform.X = e.GazePoint.X - gazeRadius;
            transform.Y = e.GazePoint.Y - gazeRadius;

            //if (knotPoints.Count < 2)
            //    return;

            if (e.GazePoint.X < 0 || e.GazePoint.X > 1920 || e.GazePoint.Y < 0 || e.GazePoint.Y > 1080)
            {
                LogEvent.Engine.Write(string.Format("Rejected GP({0:f2},{1:f2} -> Outside screen bounds", e.GazePoint.X, e.GazePoint.Y));
                return;
            }

            if (knotPoints.Count < 2)
                return;

            int eyeIndex = GetEyeIndex(knotPoints.Values);

            Point newLocation = new Point(e.GazePoint.X, e.GazePoint.Y);

            Vector delta = Point.Subtract(newLocation, prevEyeLocation);
            if (delta.LengthSquared < 16 * 16)
            {
                prevEyeLocation = newLocation;
                //LogEvent.Engine.Write(string.Format("Rejected GP({0:f2},{1:f2} -> Too close", e.GazePoint.X, e.GazePoint.Y));
                return;
            }
            prevEyeLocation = newLocation;
            LogEvent.Engine.Write(string.Format("GP({0:f2},{1:f2}", e.GazePoint.X, e.GazePoint.Y));
            dots[eyeIndex - 1].Center = newLocation;

            UserCurve.Points[eyeIndex] = newLocation;
        }
コード例 #4
0
ファイル: GameTask.xaml.cs プロジェクト: yong-ja/starodyssey
        void tracker_GazeDataReceived(object sender, GazeEventArgs e)
        {
            TranslateTransform transform = (TranslateTransform)CrossHair.RenderTransform;
            transform.X = e.GazePoint.X - gazeRadius;
            transform.Y = e.GazePoint.Y - gazeRadius;

            lastGaze = new Point(transform.X, transform.Y);

            //if (knotPoints.Count < 2)
            //    return;

            if (e.GazePoint.X < 0 || e.GazePoint.X > 1920 || e.GazePoint.Y < 0 || e.GazePoint.Y > 1080)
            {
                return;
            }

            if (!gazeOn)
                return;

            if (touchPoints.Count < 2)
            {
                TrackerEvent.Gaze.Log(Test.SelectionIndex % conditions.Count, e.GazePoint.X, e.GazePoint.Y, e.LeftValid, e.RightValid, "GazeNotEngaged");
                return;
            }
            else
                TrackerEvent.Gaze.Log(Test.SelectionIndex % conditions.Count, e.GazePoint.X, e.GazePoint.Y, e.LeftValid, e.RightValid, "GazeEngaged");

            Point gazeLocation = new Point(e.GazePoint.X, e.GazePoint.Y);

            bool result = false;
            foreach (IDot d in targets)
            {
                Point[] pointArray = touchPoints.Values.ToArray();

                bool intersect1= d.IntersectsWith(pointArray[0]);
                bool intersect2= d.IntersectsWith(pointArray[1]);
                bool intersect3= d.IntersectsWith(gazeLocation);
                result = intersect1 || intersect2 || intersect3;
                if (!result)
                    return;
            }

            Indicator.Fill = Brushes.Green;
            CompleteSession();
        }
コード例 #5
0
ファイル: TrackerWrapper.cs プロジェクト: yong-ja/starodyssey
 protected void OnGazeDataReceived(object sender, GazeEventArgs e)
 {
     if (GazeDataReceived != null)
         GazeDataReceived(sender, e);
 }
コード例 #6
0
        void tracker_GazeDataReceived(object sender, GazeEventArgs e)
        {
            TranslateTransform transform = (TranslateTransform)CrossHair.RenderTransform;
            transform.X = e.GazePoint.X - gazeRadius;
            transform.Y = e.GazePoint.Y - gazeRadius;

            bool leftValid = e.LeftValid == 0;
            bool rightValid = e.RightValid == 0;
            if (leftValid && rightValid)
                eyeBrush = Brushes.Green;
            else if (leftValid && !rightValid)
                eyeBrush = Brushes.Yellow;
            else if (rightValid && !leftValid)
                eyeBrush = Brushes.Orange;
            else
            {
                eyeBrush = Brushes.Red;
                //return;
            }

            if (!gazeOnly)
                return;

            HitTestResult result = VisualTreeHelper.HitTest(Canvas, new Point(e.GazePoint.X, e.GazePoint.Y));

            if (result != null)
                return;

            Ellipse gazePoint = new Ellipse()
            {
                Width = gazeRadius,
                Height = gazeRadius,
                Fill = eyeBrush
            };
            lastGazePoint = new Point(e.GazePoint.X, e.GazePoint.Y);
            TrackerEvent.Gaze.Log(sessionId,e.GazePoint.X, e.GazePoint.Y, e.LeftValid, e.RightValid);
            gazePoint.RenderTransform = new TranslateTransform(transform.X, transform.Y);
            Canvas.Children.Add(gazePoint);
        }