private static void UpdatePlatformCompatibility(AssemblyDefinitionImporterInspector.MixedBool compatibleWithAnyPlatform, AssemblyDefinitionImporterInspector.AssemblyDefintionState[] states) { if (compatibleWithAnyPlatform == AssemblyDefinitionImporterInspector.MixedBool.Mixed) { throw new ArgumentOutOfRangeException("compatibleWithAnyPlatform"); } for (int i = 0; i < states.Length; i++) { AssemblyDefinitionImporterInspector.AssemblyDefintionState assemblyDefintionState = states[i]; if (assemblyDefintionState.compatibleWithAnyPlatform != compatibleWithAnyPlatform) { assemblyDefintionState.compatibleWithAnyPlatform = compatibleWithAnyPlatform; AssemblyDefinitionImporterInspector.InversePlatformCompatibility(assemblyDefintionState); } } }
public override void OnInspectorGUI() { if (this.m_State == null) { try { this.LoadAssemblyDefinitionFiles(); } catch (Exception e) { this.m_State = null; this.ShowLoadErrorExceptionGUI(e); return; } } AssemblyDefinitionPlatform[] assemblyDefinitionPlatforms = CompilationPipeline.GetAssemblyDefinitionPlatforms(); CustomScriptOptinalUnityAssembly[] optinalUnityAssemblies = CustomScriptAssembly.OptinalUnityAssemblies; using (new EditorGUI.DisabledScope(false)) { EditorGUI.BeginChangeCheck(); if (base.targets.Length > 1) { using (new EditorGUI.DisabledScope(true)) { string text = string.Join(", ", (from t in this.m_TargetStates select t.name).ToArray <string>()); EditorGUILayout.TextField(AssemblyDefinitionImporterInspector.Styles.name, text, EditorStyles.textField, new GUILayoutOption[0]); } } else { this.m_State.name = EditorGUILayout.TextField(AssemblyDefinitionImporterInspector.Styles.name, this.m_State.name, EditorStyles.textField, new GUILayoutOption[0]); } GUILayout.Label(AssemblyDefinitionImporterInspector.Styles.references, EditorStyles.boldLabel, new GUILayoutOption[0]); this.m_ReferencesList.DoLayoutList(); GUILayout.Label(AssemblyDefinitionImporterInspector.Styles.unityReferences, EditorStyles.boldLabel, new GUILayoutOption[0]); EditorGUILayout.BeginVertical(GUI.skin.box, new GUILayoutOption[0]); for (int i = 0; i < optinalUnityAssemblies.Length; i++) { this.m_State.optionalUnityReferences[i] = AssemblyDefinitionImporterInspector.ToggleWithMixedValue(new GUIContent(optinalUnityAssemblies[i].DisplayName), this.m_State.optionalUnityReferences[i]); if (this.m_State.optionalUnityReferences[i] == AssemblyDefinitionImporterInspector.MixedBool.True) { EditorGUILayout.HelpBox(optinalUnityAssemblies[i].AdditinalInformationWhenEnabled, MessageType.Info); } } EditorGUILayout.EndVertical(); GUILayout.Space(10f); GUILayout.Label(AssemblyDefinitionImporterInspector.Styles.platforms, EditorStyles.boldLabel, new GUILayoutOption[0]); EditorGUILayout.BeginVertical(GUI.skin.box, new GUILayoutOption[0]); AssemblyDefinitionImporterInspector.MixedBool compatibleWithAnyPlatform = this.m_State.compatibleWithAnyPlatform; this.m_State.compatibleWithAnyPlatform = AssemblyDefinitionImporterInspector.ToggleWithMixedValue(AssemblyDefinitionImporterInspector.Styles.anyPlatform, this.m_State.compatibleWithAnyPlatform); if (compatibleWithAnyPlatform == AssemblyDefinitionImporterInspector.MixedBool.Mixed && this.m_State.compatibleWithAnyPlatform != AssemblyDefinitionImporterInspector.MixedBool.Mixed) { AssemblyDefinitionImporterInspector.UpdatePlatformCompatibility(this.m_State.compatibleWithAnyPlatform, this.m_TargetStates); this.UpdateCombinedCompatibility(); } else if (this.m_State.compatibleWithAnyPlatform != compatibleWithAnyPlatform) { AssemblyDefinitionImporterInspector.InversePlatformCompatibility(this.m_State); } if (this.m_State.compatibleWithAnyPlatform != AssemblyDefinitionImporterInspector.MixedBool.Mixed) { GUILayout.Label((this.m_State.compatibleWithAnyPlatform != AssemblyDefinitionImporterInspector.MixedBool.True) ? AssemblyDefinitionImporterInspector.Styles.includePlatforms : AssemblyDefinitionImporterInspector.Styles.excludePlatforms, EditorStyles.boldLabel, new GUILayoutOption[0]); for (int j = 0; j < assemblyDefinitionPlatforms.Length; j++) { this.m_State.platformCompatibility[j] = AssemblyDefinitionImporterInspector.ToggleWithMixedValue(new GUIContent(assemblyDefinitionPlatforms[j].DisplayName), this.m_State.platformCompatibility[j]); } EditorGUILayout.Space(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); if (GUILayout.Button(AssemblyDefinitionImporterInspector.Styles.selectAll, new GUILayoutOption[0])) { AssemblyDefinitionImporterInspector.SetPlatformCompatibility(this.m_State, AssemblyDefinitionImporterInspector.MixedBool.True); } if (GUILayout.Button(AssemblyDefinitionImporterInspector.Styles.deselectAll, new GUILayoutOption[0])) { AssemblyDefinitionImporterInspector.SetPlatformCompatibility(this.m_State, AssemblyDefinitionImporterInspector.MixedBool.False); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); GUILayout.Space(10f); if (EditorGUI.EndChangeCheck()) { this.m_State.modified = true; } } EditorGUILayout.Space(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayout.FlexibleSpace(); using (new EditorGUI.DisabledScope(!this.m_State.modified)) { if (GUILayout.Button(AssemblyDefinitionImporterInspector.Styles.revert, new GUILayoutOption[0])) { this.LoadAssemblyDefinitionFiles(); } if (GUILayout.Button(AssemblyDefinitionImporterInspector.Styles.apply, new GUILayoutOption[0])) { AssemblyDefinitionImporterInspector.SaveAndUpdateAssemblyDefinitionStates(this.m_State, this.m_TargetStates); } } GUILayout.EndHorizontal(); }