Ejemplo n.º 1
0
 public static void FixationRecordEvent(Fixation fixation)
 {
     if (OnFixationRecord != null)
     {
         OnFixationRecord.Invoke(fixation);
     }
 }
Ejemplo n.º 2
0
        public Fixation(Fixation src)
        {
            WorldPosition = src.WorldPosition;
            LocalPosition = src.LocalPosition;
            DebugScale    = src.DebugScale;
            DurationMs    = src.DurationMs;
            StartMs       = src.StartMs;

            IsLocal         = src.IsLocal;
            DynamicObjectId = src.DynamicObjectId;
            MaxRadius       = src.MaxRadius;
        }
Ejemplo n.º 3
0
        public void Initialize()
        {
            if (FocusSizeFromCenter == null)
            {
                Reset();
            }
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            VISFixationEnds.Add("discard", new List <Fixation>());
            VISFixationEnds.Add("out of range", new List <Fixation>());
            VISFixationEnds.Add("microsleep", new List <Fixation>());
            VISFixationEnds.Add("off transform", new List <Fixation>());

            var viewer = FindObjectOfType <FixationVisualizer>();
            if (viewer != null)
            {
                viewer.SetTarget(this);
            }
            var saccade = FindObjectOfType <SaccadeDrawer>();
            if (saccade != null)
            {
                saccade.SetTarget(this);
            }
            //gameObject.AddComponent<FixationVisualizer>().SetTarget(this);
            if (DebugMaterial != null)
            {
                lastEyeTrackingPointer = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                lastEyeTrackingPointer.transform.localScale = Vector3.one * 0.2f;
                lastEyeTrackingPointer.GetComponent <MeshRenderer>().material = DebugMaterial;
                Destroy(lastEyeTrackingPointer.GetComponent <SphereCollider>());
            }
#endif

            ActiveFixation = new Fixation();

            for (int i = 0; i < CachedEyeCaptures; i++)
            {
                EyeCaptures[i] = new EyeCapture()
                {
                    Discard = true
                };
            }
#if CVR_FOVE
            fovebase = FindObjectOfType <FoveInterfaceBase>();
#elif CVR_TOBIIVR
            if (EyeTracker == null)
            {
                EyeTracker = FindObjectOfType <Tobii.Research.Unity.VREyeTracker>();
            }
#elif CVR_AH
            ah_calibrator = Calibrator.Instance;
            eyetracker    = EyeTracker.Instance;
#endif
        }
Ejemplo n.º 4
0
        /// <summary>
        /// returns true if the fixation should be ended. copies fixation for visualization
        /// </summary>
        /// <param name="testFixation"></param>
        /// <returns></returns>
        bool CheckEndFixation(Fixation testFixation)
        {
            //check for blinking too long
            if (EyeCaptures[index].Time > testFixation.LastEyesOpen + MaxBlinkMs)
            {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
                VISFixationEnds["microsleep"].Add(new Fixation(testFixation));
#endif
                return(true);
            }

            //check for general discarding
            if (EyeCaptures[index].Time > testFixation.LastNonDiscardedTime + MaxConsecutiveDiscardMs)
            {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
                VISFixationEnds["discard"].Add(new Fixation(testFixation));
#endif
                //HMD issue, just a bunch of null data or some other issue
                return(true);
            }

            //check for out of fixation point range
            if (EyeCaptures[index].Time > testFixation.LastInRange + SaccadeFixationEndMs)
            {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
                VISFixationEnds["out of range"].Add(new Fixation(testFixation));
#endif
                return(true);
            }

            if (ActiveFixation.IsLocal)
            {
                //if not looking at transform for a while, end fixation
                if (EyeCaptures[index].Time > testFixation.LastOnTransform + MaxConsecutiveOffDynamicMs)
                {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
                    VISFixationEnds["off transform"].Add(new Fixation(testFixation));
#endif
                    return(true);
                }

                //check that the transform still exists
                if (ActiveFixation.LocalTransform == null)
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 5
0
        public Fixation(Fixation src)
        {
            WorldPosition        = src.WorldPosition;
            LocalPosition        = src.LocalPosition;
            DurationMs           = src.DurationMs;
            StartMs              = src.StartMs;
            LastNonDiscardedTime = StartMs;
            LastEyesOpen         = StartMs;
            LastInRange          = StartMs;
            LastOnTransform      = StartMs;

            IsLocal         = src.IsLocal;
            LocalTransform  = src.LocalTransform;
            DynamicObjectId = src.DynamicObjectId;
            MaxRadius       = src.MaxRadius;
        }
Ejemplo n.º 6
0
        public static void RecordFixation(Fixation newFixation)
        {
            Fixation f = new Fixation(newFixation);

            Fixations.Add(f);
        }