示例#1
0
        public static MagicLeapManifestSettings GetOrCreateSettings(string path = kDefaultSettingsPath)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentException("path");
            }
            var dir = Path.GetDirectoryName(path);

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            var settings = AssetDatabase.LoadAssetAtPath <MagicLeapManifestSettings>(path);

            if (settings == null)
            {
                settings = ScriptableObject.CreateInstance <MagicLeapManifestSettings>();
                settings.m_MinimumAPILevel             = 4;
                settings.m_AllowBackgroundMusicService = false;
                if (SDKUtility.sdkAvailable)
                {
                    settings.RebuildPrivilegeGroups(PrivilegeParser.ParsePrivilegesFromHeader(Path.Combine(SDKUtility.sdkPath, PrivilegeParser.kPrivilegeHeaderPath)));
                }
                else
                {
                    Debug.LogWarning(ManifestEditorGUI.Messages.kCannotLocateSDK);
                }

                //settings.m_Privileges = new Privilege[1] { new Privilege { Name = "LowLatencyLightwear", Enabled = true } };
                AssetDatabase.CreateAsset(settings, path);
                AssetDatabase.SaveAssets();
            }
            return(settings);
        }
示例#2
0
        public static void RenderManifest(MagicLeapManifestSettings settings)
        {
            var serializedObject = settings.ToSerializedObject();

            serializedObject.UpdateIfRequiredOrScript();
            var id         = GUIUtility.GetControlID(FocusType.Passive);
            var state      = (RenderState)GUIUtility.GetStateObject(typeof(RenderState), id);
            var missingSdk = !SDKUtility.sdkAvailable;

            if (missingSdk)
            {
                EditorGUILayout.HelpBox(Messages.kCannotLocateSDK, MessageType.Error, true);
            }
            using (new EditorGUI.DisabledScope(missingSdk))
            {
                var apiLevel = serializedObject.FindProperty("m_MinimumAPILevel");
                apiLevel.intValue = PlatformLevelSelector.SelectorGUI(apiLevel.intValue);
                EditorGUILayout.LabelField("Privileges", EditorStyles.boldLabel);
                var priv_groups = serializedObject.FindProperty("m_PrivilegeGroups");
                for (int i = 0; i < priv_groups.arraySize; i++)
                {
                    var group      = priv_groups.GetArrayElementAtIndex(i);
                    var group_name = group.FindPropertyRelative("m_Name").stringValue;
                    if (!state.GroupFoldoutExpanded.TryGetValue(group_name, out var _))
                    {
                        state.GroupFoldoutExpanded[group_name] = false;
                    }
                    state.GroupFoldoutExpanded[group_name] = EditorGUILayout.BeginFoldoutHeaderGroup(state.GroupFoldoutExpanded[group_name], group_name);
                    if (state.GroupFoldoutExpanded[group_name])
                    {
                        var privs = group.FindPropertyRelative("m_Privileges");
                        for (int j = 0; j < privs.arraySize; j++)
                        {
                            var priv    = privs.GetArrayElementAtIndex(j);
                            var enabled = priv.FindPropertyRelative("m_Enabled");
                            var name    = priv.FindPropertyRelative("m_Name").stringValue;

                            var disabled = ShouldDisable(apiLevel.intValue, priv);
                            var value    = UpdateValue(name, enabled.boolValue, disabled);
                            using (new EditorGUI.DisabledScope(disabled))
                                using (new EditorGUI.IndentLevelScope())
                                    enabled.boolValue = EditorGUILayout.ToggleLeft(name, value);
                        }
                    }
                    EditorGUILayout.EndFoldoutHeaderGroup();
                }
                serializedObject.ApplyModifiedProperties();
                GUILayout.FlexibleSpace();
                EditorGUILayout.HelpBox(Messages.kShouldSynchronize, MessageType.Info, true);
                var sdkUpdateRequested = GUILayout.Button("Synchronize");
                if (sdkUpdateRequested)
                {
                    state.IsPerformingSDKUpdate  = true;
                    EditorApplication.delayCall += () => {
                        settings.RebuildPrivilegeGroups(PrivilegeParser.ParsePrivilegesFromHeader(Path.Combine(SDKUtility.sdkPath, PrivilegeParser.kPrivilegeHeaderPath)));
                        state.IsPerformingSDKUpdate = false;
                    };
                }
            }
        }
 static PrivilegeSection()
 {
     s_PrivilegeList = PrivilegeParser.ParsePrivilegesFromHeader(Path.Combine(SDKUtility.sdkPath, PrivilegeParser.kPrivilegeHeaderPath)).ToList();
 }