private void BindToggle(VisualElement e, int i) { var t = (Toggle)e; if (m_PrivilegeList == null) { return; } t.label = m_PrivilegeList[i].name; t.tooltip = m_PrivilegeList[i].description; if (m_Settings != null) { SerializedProperty prop; bool forced = ShouldForce(t, m_PrivilegeList[i]); if (TryGetPropertyValue(t.label, out prop)) { t.BindProperty(prop); if (ShouldFilter(t, m_PrivilegeList[i])) { m_QueuedUpdates.Enqueue(() => { t.SetEnabled(false); t.value = false; }); } else if (forced) { m_QueuedUpdates.Enqueue(() => { t.SetEnabled(false); t.value = true; }); } } else { // create a new serialized value. var so = m_Settings.ToSerializedObject(); so.UpdateIfRequiredOrScript(); var privs = so.FindProperty("m_Privileges"); privs.InsertArrayElementAtIndex(privs.arraySize); var el = privs.GetArrayElementAtIndex(privs.arraySize - 1); el.FindPropertyRelative("name").stringValue = t.label; var enabledProp = el.FindPropertyRelative("enabled"); enabledProp.boolValue = false; t.BindProperty(enabledProp); so.ApplyModifiedProperties(); } } }
private void UpdateSettings() { if (m_SettingsAsset == null) { this.Unbind(); m_SerializedSettings = null; return; } else { m_SerializedSettings = m_SettingsAsset.ToSerializedObject(); } { m_SerializedSettings.UpdateIfRequiredOrScript(); // automatically bump the platform API the lowest possible version. var prop = m_SerializedSettings.FindProperty("m_MinimumAPILevel"); prop.intValue = PlatformLevelSelector.EnsureValidValue(prop.intValue); m_SerializedSettings.ApplyModifiedProperties(); } this.Bind(serializedSettings); this.Query <PrivilegeSection>().ForEach(ps => { ps.filterCallback = FilterPrivilege; ps.forceCallback = ForcePrivilege; ps.settings = m_SettingsAsset; }); }
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; }; } } }