コード例 #1
0
        private static void EyeCallback(ref EyeData_v2 eye_data)
        {
            _eyeData = eye_data;

            EmteqEyeData data = new EmteqEyeData(_eyeData);

            _formatter.Serialize(_fileStream, data);

            _trackedObjectInfo = new TrackedObjectInfo();
        }
コード例 #2
0
        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;
            }
        }