public override void Calibrate(CalibrationResultHandler callback) { IsCalibrated = false; DebugLog.Info("EyeTribe: Start calibration"); UnityCalibrationRunner.StartCalibration( CalibrationPointSampleDuration, CalibrationPoints, (object sender, TETControls.Calibration.CalibrationRunnerEventArgs e) => { IsCalibrated = e.CalibrationResult.Result; if (IsCalibrated) { GazeManager.Instance.AddGazeListener(this); } Dictionary <string, object> calibrationProperties = new Dictionary <string, object>(); calibrationProperties["Result"] = e.Result.ToString(); calibrationProperties["Rating"] = e.Rating; calibrationProperties["AverageErrorDegree"] = e.CalibrationResult.AverageErrorDegree; calibrationProperties["AverageErrorDegreeLeft"] = e.CalibrationResult.AverageErrorDegreeLeft; calibrationProperties["AverageErrorDegreeRight"] = e.CalibrationResult.AverageErrorDegreeRight; callback(IsCalibrated, e.Message, calibrationProperties); }); }
public override void Disconnect() { UnityCalibrationRunner.Abort(); GazeManager.Instance.RemoveGazeListener(this); GazeManager.Instance.RemoveConnectionStateListener(this); DebugLog.Info("Eye Tracker: Disconnect..."); GazeManager.Instance.Deactivate(); DebugLog.Info("Disconnnected from EyeTracker: {0}:{1}", ServerRecvAddress, ServerRecvPort); IsConnected = false; }
public static UnityCalibrationRunner StartCalibration(float calibrationSampleDuration, int calibrationPoints, EventHandler <CalibrationRunnerEventArgs> resultHandler) { try { if (instance != null) { throw new Exception("Calibration already in progress. Abort to retry."); } CheckTrackerState(GazeManager.Instance.Trackerstate); GameObject gameObject = null; UnityEngine.Object prefab = Resources.Load(CalibrationRunnerPrefabName); if (prefab) { gameObject = Instantiate(prefab) as GameObject; } else { throw new Exception(string.Format("Unable to load {0} prefab from Resources", CalibrationRunnerPrefabName)); } instance = (gameObject != null ? gameObject.GetComponent <UnityCalibrationRunner>() : null); if (instance != null) { instance.OnResult += resultHandler; instance.CalibrationSampleDuration = calibrationSampleDuration; instance.PointCount = calibrationPoints; } else { throw new Exception(string.Format("Unable to find {0} component on {1} prefab", typeof(UnityCalibrationRunner).Name, CalibrationRunnerPrefabName)); } } catch (Exception e) { resultHandler(null, new CalibrationRunnerEventArgs( CalibrationRunnerResult.Error, e.Message)); } return(instance); }
public void OnDestroy() { GazeManager.Instance.RemoveTrackerStateListener(this); GazeManager.Instance.CalibrationAbort(); instance = null; }