public static void FixationRecordEvent(Fixation fixation) { if (OnFixationRecord != null) { OnFixationRecord.Invoke(fixation); } }
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; }
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 }
/// <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); }
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; }
public static void RecordFixation(Fixation newFixation) { Fixation f = new Fixation(newFixation); Fixations.Add(f); }