public static void Stop()
        {
            if (_eyeTrackingProvider == null)
            {
                return;
            }

            Internal.G2OM.Destroy();
            _eyeTrackingProvider.Destroy();

            if (_updaterGameObject != null)
            {
#if UNITY_EDITOR
                if (Application.isPlaying)
                {
                    Object.Destroy(_updaterGameObject.gameObject);
                }
                else
                {
                    Object.DestroyImmediate(_updaterGameObject.gameObject);
                }
#else
                Object.Destroy(_updaterGameObject.gameObject);
#endif
            }


            _updaterGameObject   = null;
            Internal.G2OM        = null;
            _eyeTrackingProvider = null;
        }
    public TobiiHTCProvider()
    {
#if TOBIIXR_HTCPROVIDER
        if (ViveSR.anipal.Eye.SRanipal_Eye.IsViveProEye())
        {
            _selectedProvider = new HTCProvider();
            return;
        }
#endif

        var model = UnityEngine.XR.XRDevice.model.Replace(".", "").ToLower();
        if (model.Contains("vive"))
        {
            if (model.Equals("vive mv")) // Old HTC Vive only has retrofitted eye tracking
            {
                _selectedProvider = new TobiiProvider();
            }
            else // All other Vive models use HTC eye tracking
            {
                _selectedProvider = new HTCProvider();
            }
        }
        else // Fall back to Tobii Provider for unknown models
        {
            _selectedProvider = new TobiiProvider();
        }
    }
示例#3
0
        public static bool Start(TobiiXR_Settings settings = null)
        {
            if (_eyeTrackingProvider != null)
            {
                Debug.LogWarning(string.Format("TobiiXR already started with provider ({0})", _eyeTrackingProvider));
                VerifyInstanceIntegrity();
                return(false);
            }

            if (settings == null)
            {
                settings = TobiiXR_Settings.CreateDefaultSettings();
            }

            _eyeTrackingProvider = settings.EyeTrackingProvider;

            if (_eyeTrackingProvider == null)
            {
                _eyeTrackingProvider = new NoseDirectionProvider();
                Debug.LogWarning(string.Format("Creating ({0}) failed. Using ({1}) as fallback", settings.GetProviderType(), _eyeTrackingProvider.GetType().Name));
            }

            Debug.Log(string.Format("Starting TobiiXR with ({0}) as provider for eye tracking", _eyeTrackingProvider));

            _g2om = settings.G2OM;

            VerifyInstanceIntegrity();

            return(true);
        }
        public void Destroy()
        {
            if (_provider == null)
            {
                return;
            }

            _provider.Destroy();
            _provider = null;
        }
        public static string GetProviderCompilerFlag(IEyeTrackingProvider provider)
        {
            var attribute = Attribute.GetCustomAttribute(provider.GetType(), typeof(CompilerFlagAttribute)) as CompilerFlagAttribute;

            if (attribute == null)
            {
                return(null);
            }

            return(attribute.Flag);
        }
        public GazeModifierProvider(IEyeTrackingProvider provider, IModifierSettings settings, ICameraHelper camera, IEnumerable <IGazeModifier> modifiers = null)
        {
            var repo = new PercentileRepository();

            _provider          = provider;
            _settings          = settings;
            _camera            = camera ?? new CameraHelper();
            _accuracyModifier  = new AccuracyModifier(repo, _settings);
            _precisionModifier = new PrecisionModifier(repo, _settings);
            _modifiers         = modifiers ?? new List <IGazeModifier>()
            {
                _accuracyModifier, _precisionModifier, new TrackabilityModifier(repo, _settings)
            };
        }
示例#7
0
        public static bool Start(TobiiXR_Settings settings = null)
        {
            if (!TobiiEulaFile.IsEulaAccepted())
            {
                Debug.LogError("You need to accept Tobii Software Development License Agreement to be able to use Tobii XR Unity SDK.");
                return(false);
            }

            if (_eyeTrackingProvider != null)
            {
                Debug.LogWarning(string.Format("TobiiXR already started with provider ({0})", _eyeTrackingProvider));
                VerifyInstanceIntegrity();
                return(false);
            }

            if (settings == null)
            {
                settings = TobiiXR_Settings.CreateDefaultSettings();
            }

            if (settings.FieldOfUse == FieldOfUse.NotSelected)
            {
                //For more info, see https://developer.tobii.com/vr/develop/unity/documentation/configure-tobii-xr/
                Debug.LogError("Field of use has not been selected. Please specify intended field of use in TobiiXR_Settings (can also be edited in Window->Tobii->Tobii Settings)");
            }

            _eyeTrackingProvider = settings.EyeTrackingProvider;

            if (_eyeTrackingProvider == null)
            {
                _eyeTrackingProvider = new NoseDirectionProvider();
                Debug.LogWarning(string.Format("Creating ({0}) failed. Using ({1}) as fallback", settings.GetProviderType(), _eyeTrackingProvider.GetType().Name));
            }

            Debug.Log(string.Format("Starting TobiiXR with ({0}) as provider for eye tracking", _eyeTrackingProvider));

            Internal.Settings = settings;
            Internal.G2OM     = settings.G2OM;

            VerifyInstanceIntegrity();

            return(true);
        }
 public GazeModifierProvider(IEyeTrackingProvider provider, ICameraHelper camera = null) : this(provider, GazeModifierSettings.CreateDefaultSettings(), camera, null)
 {
 }