private static void EyeCallback(ref EyeData_v2 eye_data) { _eyeData = eye_data; EmteqEyeData data = new EmteqEyeData(_eyeData); _formatter.Serialize(_fileStream, data); _trackedObjectInfo = new TrackedObjectInfo(); }
private void Update() { if (SRanipal_Eye_Framework.Status != SRanipal_Eye_Framework.FrameworkStatus.WORKING) { return; } if (SRanipal_Eye_Framework.Instance.EnableEyeDataCallback == true && _eyeCallbackRegistered == false) { SRanipal_Eye_v2.WrapperRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye_v2.CallbackBasic)EyeCallback)); _eyeCallbackRegistered = true; } else if (SRanipal_Eye_Framework.Instance.EnableEyeDataCallback == false && _eyeCallbackRegistered == true) { SRanipal_Eye_v2.WrapperUnRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye_v2.CallbackBasic)EyeCallback)); _eyeCallbackRegistered = false; } bool eyeFocus = false; foreach (GazeIndex index in _gazePriority) { Ray gazeRay; if (_eyeCallbackRegistered) { eyeFocus = SRanipal_Eye_v2.Focus(index, out gazeRay, out _focusInfo, 0, _maxDistance, trackedObjectLayers, _eyeData); } else { eyeFocus = SRanipal_Eye_v2.Focus(index, out gazeRay, out _focusInfo, 0, _maxDistance, trackedObjectLayers); } if (eyeFocus) { _previousObjectInFocus = _objectInFocus; _objectInFocus = _focusInfo.collider; var previousTrackedObject = _trackedObject; _trackedObject = _focusInfo.transform.GetComponent <TrackedObject>(); if (_trackedObject != null) { _trackedObjectInfo = new TrackedObjectInfo(_trackedObject.ObjectId, _focusInfo.distance); } if (_objectInFocus == _previousObjectInFocus) { //do nothing } else { if (previousTrackedObject != null) { ExitGaze(previousTrackedObject); } if (_trackedObject != null) { EnterGaze(_trackedObject); } } break; } } if (!eyeFocus) { _previousObjectInFocus = null; _objectInFocus = null; if (_trackedObject != null) { ExitGaze(_trackedObject); } _trackedObject = null; } }