public static SettingsProvider CreateHumanoidSettingsProvider()
        {
            var provider = new SettingsProvider("Preferences/HumanoidControlSettings", SettingsScope.User)
            {
                label      = "Humanoid Control",
                guiHandler = (searchContext) => {
                    HumanoidSettings settings   = HumanoidSettings.GetOrCreateSettings();
                    bool             anyChanged = false;

                    Configuration oldConfiguration = settings.configuration;
                    settings.configuration = (Configuration)EditorGUILayout.ObjectField("Configuration", settings.configuration, typeof(Configuration), false);
                    SerializedObject serializedConfiguration = new SerializedObject(settings.configuration);
                    anyChanged |= (settings.configuration != oldConfiguration);
                    anyChanged |= Configuration_Editor.ConfigurationGUI(settings.configuration, serializedConfiguration);
                    serializedConfiguration.ApplyModifiedProperties();

                    if (anyChanged)
                    {
                        Configuration_Editor.CheckExtensions(settings.configuration);
                    }
                },
                keywords = new HashSet <string>(
                    new[] { "Humanoid", "Oculus", "SteamVR" }
                    )
            };

            return(provider);
        }
示例#2
0
        public static void PreferencesGUI()
        {
            if (!prefsLoaded)
            {
                configurationString = EditorPrefs.GetString("HumanoidConfigurationKey", "DefaultConfiguration");

                LoadConfiguration(configurationString);
                if (configuration == null)
                {
                    configurationString = "DefaultConfiguration";
                    LoadConfiguration(configurationString);
                }
                prefsLoaded = true;
            }

            if (configuration == null)
            {
                Debug.Log("Created new Default Configuration");

                string humanoidPath = Configuration_Editor.FindHumanoidFolder();
                // Create new Default Configuration
                configuration = ScriptableObject.CreateInstance <Configuration>();
                humanoidPath  = humanoidPath.Substring(0, humanoidPath.Length - 1);           // strip last /
                humanoidPath  = humanoidPath.Substring(0, humanoidPath.LastIndexOf('/') + 1); // strip Scripts;
                string path = "Assets" + humanoidPath + configurationString + ".asset";
                AssetDatabase.CreateAsset(configuration, path);
            }

            configuration = (Configuration)EditorGUILayout.ObjectField("Configuration", configuration, typeof(Configuration), false);
            SerializedObject serializedConfiguration = new SerializedObject(configuration);

            bool anyChanged = Configuration_Editor.ConfigurationGUI(configuration, serializedConfiguration);

            serializedConfiguration.ApplyModifiedProperties();
            if (configuration != null)
            {
                if (GUI.changed)
                {
                    configurationString = configuration.name;
                    EditorPrefs.SetString("HumanoidConfigurationKey", configurationString);
                }

                if (GUI.changed || anyChanged)
                {
                    EditorUtility.SetDirty(configuration);
                    Configuration_Editor.CheckExtensions(configuration);
                }
            }
        }