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);
         }
     }
 }
        private static AssemblyDefinitionImporterInspector.MixedBool ToggleWithMixedValue(GUIContent title, AssemblyDefinitionImporterInspector.MixedBool value)
        {
            EditorGUI.showMixedValue = (value == AssemblyDefinitionImporterInspector.MixedBool.Mixed);
            EditorGUI.BeginChangeCheck();
            bool flag = EditorGUILayout.Toggle(title, value == AssemblyDefinitionImporterInspector.MixedBool.True, new GUILayoutOption[0]);

            AssemblyDefinitionImporterInspector.MixedBool result;
            if (EditorGUI.EndChangeCheck())
            {
                result = ((!flag) ? AssemblyDefinitionImporterInspector.MixedBool.False : AssemblyDefinitionImporterInspector.MixedBool.True);
            }
            else
            {
                EditorGUI.showMixedValue = false;
                result = value;
            }
            return(result);
        }
 private static AssemblyDefinitionImporterInspector.MixedBool InverseCompability(AssemblyDefinitionImporterInspector.MixedBool compatibility)
 {
     AssemblyDefinitionImporterInspector.MixedBool result;
     if (compatibility == AssemblyDefinitionImporterInspector.MixedBool.True)
     {
         result = AssemblyDefinitionImporterInspector.MixedBool.False;
     }
     else if (compatibility == AssemblyDefinitionImporterInspector.MixedBool.False)
     {
         result = AssemblyDefinitionImporterInspector.MixedBool.True;
     }
     else
     {
         result = AssemblyDefinitionImporterInspector.MixedBool.Mixed;
     }
     return(result);
 }
 private static void SetPlatformCompatibility(AssemblyDefinitionImporterInspector.AssemblyDefintionState state, AssemblyDefinitionImporterInspector.MixedBool compatibility)
 {
     AssemblyDefinitionPlatform[] assemblyDefinitionPlatforms = CompilationPipeline.GetAssemblyDefinitionPlatforms();
     for (int i = 0; i < assemblyDefinitionPlatforms.Length; i++)
     {
         state.platformCompatibility[i] = compatibility;
     }
 }
 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();
 }