Beispiel #1
0
        private static GazeFocusSettings GetSettingsFromObject(JSONNode json)
        {
            var gfs = new GazeFocusSettings();

            gfs.LayerMask       = json["LayerMask"].AsInt;
            gfs.MaximumDistance = json["MaximumDistance"].AsFloat;
            return(gfs);
        }
Beispiel #2
0
        /// <summary>
        /// Overwrites the currently stored settings with the supplied
        /// gazeFocusSettings. This call will only affect the stored settings,
        /// it will not update the settings loaded by the gaze focus system.
        /// </summary>
        /// <remarks>Will only store settings if called in Unity Editor.</remarks>
        /// <param name="gazeFocusSettings"></param>
        public static void Set(GazeFocusSettings gazeFocusSettings)
        {
#if UNITY_EDITOR
            var json = new JSONClass();
            json["LayerMask"].AsInt         = gazeFocusSettings.LayerMask;
            json["MaximumDistance"].AsFloat = gazeFocusSettings.MaximumDistance;
            string settingsAsJson = json.ToString();
            File.WriteAllText(FilePath, settingsAsJson);
#endif
        }
        void OnGUI()
        {
            if (!_isInitialized)
            {
                _gazeFocusSettings = RetrieveSettings();
                CacheAsLastSavedSettings(_gazeFocusSettings);
                _isInitialized = true;
            }

            EditorGUILayout.Space();

            var headerStyle = new GUIStyle(GUI.skin.label);

            headerStyle.fontStyle           = FontStyle.Bold;
            headerStyle.font.material.color = Color.white;
            EditorGUILayout.LabelField(
                new GUIContent("Gaze Focus Settings"), headerStyle);

            EditorGUILayout.Space();

            _gazeFocusSettings.MaximumDistance =
                EditorGUILayout.FloatField(
                    new GUIContent("Maximum Distance", "The maximum depth of the gaze focus detection"),
                    _gazeFocusSettings.MaximumDistance);

            _gazeFocusSettings.LayerMask =
                DrawLayerMaskField(
                    new GUIContent("Gaze Focus Layers", "Layers that should be used for the gaze focus detection."),
                    _gazeFocusSettings.LayerMask);

            EditorGUILayout.Space();

            GUILayout.BeginHorizontal();
            GUI.enabled = !IsDefault();
            if (GUILayout.Button("Default Values", GUILayout.MaxWidth(105)))
            {
                UseDefaultValues();
            }
            GUI.enabled = HasUnsavedChanges();
            if (GUILayout.Button("Revert", GUILayout.MaxWidth(100)))
            {
                RestoreToLastSavedSettings();
            }
            if (GUILayout.Button("Apply", GUILayout.MaxWidth(100)))
            {
                SaveSettings();
            }
            GUI.enabled = true;
            GUILayout.EndHorizontal();
        }
Beispiel #4
0
        private static void ReloadSettings()
        {
            var gazeFocusSettings = GazeFocusSettings.Get();

            LayerMask       = gazeFocusSettings.LayerMask;
            MaximumDistance = gazeFocusSettings.MaximumDistance;
            if (Scorer != null)
            {
                Scorer.Reconfigure(MaximumDistance, LayerMask.value);
            }
            if (_multiScorer != null)
            {
                _multiScorer.Reconfigure(MaximumDistance, LayerMask.value);
            }
        }
 private void CacheAsLastSavedSettings(GazeFocusSettings gazeFocusSettings)
 {
     _lastSavedSettings.LayerMask       = gazeFocusSettings.LayerMask;
     _lastSavedSettings.MaximumDistance = gazeFocusSettings.MaximumDistance;
 }
 private static GazeFocusSettings RetrieveSettings()
 {
     return(GazeFocusSettings.Get());
 }
 private void SaveSettings()
 {
     GazeFocusSettings.Set(_gazeFocusSettings);
     CacheAsLastSavedSettings(_gazeFocusSettings);
     NotifySettingsChanged();
 }
Beispiel #8
0
 public bool Equals(GazeFocusSettings otherSettings)
 {
     return(this.LayerMask == otherSettings.LayerMask &&
            (float.IsInfinity(this.MaximumDistance) && float.IsInfinity(otherSettings.MaximumDistance) ||
             Math.Abs(this.MaximumDistance - otherSettings.MaximumDistance) < float.Epsilon));
 }