EndPlatformGrouping() static private method

static private EndPlatformGrouping ( ) : void
return void
示例#1
0
        private void ShowPlatformSettings()
        {
            BuildPlatform[] validPlatforms = GetBuildPlayerValidPlatforms();
            if (validPlatforms.Length > 0)
            {
                GUILayout.Label("Platform settings", EditorStyles.boldLabel);
                int platformIndex = EditorGUILayout.BeginPlatformGrouping(validPlatforms, null);

                if (validPlatforms[platformIndex].name == BuildPipeline.GetEditorTargetName())
                {
                    ShowEditorSettings();
                }
                else
                {
                    BuildTargetGroup targetGroup = validPlatforms[platformIndex].targetGroup;
                    if (targetGroup == BuildTargetGroup.Standalone)
                    {
                        desktopExtension.OnPlatformSettingsGUI(this);
                    }
                    else
                    {
                        IPluginImporterExtension extension = ModuleManager.GetPluginImporterExtension(targetGroup);
                        if (extension != null)
                        {
                            extension.OnPlatformSettingsGUI(this);
                        }
                    }
                }
                EditorGUILayout.EndPlatformGrouping();
            }
        }
示例#2
0
 private void ShowPlatformSettings()
 {
     BuildPlayerWindow.BuildPlatform[] buildPlayerValidPlatforms = this.GetBuildPlayerValidPlatforms();
     if (buildPlayerValidPlatforms.Length > 0)
     {
         GUILayout.Label("Platform settings", EditorStyles.boldLabel, new GUILayoutOption[0]);
         int num = EditorGUILayout.BeginPlatformGrouping(buildPlayerValidPlatforms, null);
         if (buildPlayerValidPlatforms[num].name == BuildPipeline.GetEditorTargetName())
         {
             this.ShowEditorSettings();
         }
         else
         {
             BuildTargetGroup targetGroup = buildPlayerValidPlatforms[num].targetGroup;
             if (targetGroup == BuildTargetGroup.Standalone)
             {
                 this.desktopExtension.OnPlatformSettingsGUI(this);
             }
             else
             {
                 IPluginImporterExtension pluginImporterExtension = ModuleManager.GetPluginImporterExtension(targetGroup);
                 if (pluginImporterExtension != null)
                 {
                     pluginImporterExtension.OnPlatformSettingsGUI(this);
                 }
             }
         }
         EditorGUILayout.EndPlatformGrouping();
     }
 }
示例#3
0
        private void ShowPlatformSettings()
        {
            BuildPlayerWindow.BuildPlatform[] playerValidPlatforms = this.GetBuildPlayerValidPlatforms();
            if (playerValidPlatforms.Length <= 0)
            {
                return;
            }
            GUILayout.Label("Platform settings", EditorStyles.boldLabel, new GUILayoutOption[0]);
            int index = EditorGUILayout.BeginPlatformGrouping(playerValidPlatforms, (GUIContent)null);

            if (playerValidPlatforms[index].name == BuildPipeline.GetEditorTargetName())
            {
                this.ShowEditorSettings();
            }
            else
            {
                BuildTargetGroup targetGroup = playerValidPlatforms[index].targetGroup;
                if (targetGroup == BuildTargetGroup.Standalone)
                {
                    this.m_DesktopExtension.OnPlatformSettingsGUI(this);
                }
                else
                {
                    IPluginImporterExtension importerExtension = ModuleManager.GetPluginImporterExtension(targetGroup);
                    if (importerExtension != null)
                    {
                        importerExtension.OnPlatformSettingsGUI(this);
                    }
                }
            }
            EditorGUILayout.EndPlatformGrouping();
        }
示例#4
0
        internal static void ShowPlatformSpecificSettings(List <BaseTextureImportPlatformSettings> platformSettings, int selected)
        {
            BaseTextureImportPlatformSettings realPS = platformSettings[selected + 1];

            if (!realPS.model.isDefault)
            {
                EditorGUI.BeginChangeCheck();
                EditorGUI.showMixedValue = realPS.model.overriddenIsDifferent;

                BuildPlatform[] validPlatforms = GetBuildPlayerValidPlatforms();
                string          title          = string.Format(Styles.overrideFor.text, validPlatforms[selected].title.text);
                bool            newOverride    = EditorGUILayout.ToggleLeft(title, realPS.model.platformTextureSettings.overridden);
                EditorGUI.showMixedValue = false;
                if (EditorGUI.EndChangeCheck())
                {
                    realPS.model.SetOverriddenForAll(newOverride);
                    SyncPlatformSettings(platformSettings);
                }
            }

            // Disable size and format GUI if not overwritten for all objects
            bool notAllOverriddenForThisPlatform = (!realPS.model.isDefault && !realPS.model.allAreOverridden);

            using (new EditorGUI.DisabledScope(notAllOverriddenForThisPlatform))
            {
                // acquire the platform support module for this platform, and present the appropriate UI
                ITextureImportSettingsExtension textureSettingsExtension = ModuleManager.GetTextureImportSettingsExtension(realPS.model.buildTarget);
                textureSettingsExtension.ShowImportSettings(realPS);

                //just do this once, regardless of whether things changed
                SyncPlatformSettings(platformSettings);
            }

            EditorGUILayout.EndPlatformGrouping();
        }
示例#5
0
        private void OnAudioImporterGUI(bool selectionContainsTrackerFile)
        {
            if (!selectionContainsTrackerFile)
            {
                EditorGUILayout.PropertyField(m_ForceToMono);
                EditorGUI.indentLevel++;
                using (new EditorGUI.DisabledScope(!m_ForceToMono.boolValue))
                {
                    EditorGUILayout.PropertyField(m_Normalize);
                }
                EditorGUI.indentLevel--;
                EditorGUILayout.PropertyField(m_LoadInBackground);
                EditorGUILayout.PropertyField(m_Ambisonic);
            }

            // We need to sort them so every extraDataTarget have them ordered correctly and we can use serializedProperties.
            BuildPlatform[] validPlatforms = BuildPlatforms.instance.GetValidPlatforms().OrderBy(platform => platform.namedBuildTarget.TargetName).ToArray();
            GUILayout.Space(10);
            int shownSettingsPage = EditorGUILayout.BeginPlatformGrouping(validPlatforms, Style.DefaultPlatform);

            if (shownSettingsPage == -1)
            {
                OnSampleSettingGUI(new BuildPlatform("", "", NamedBuildTarget.Unknown, BuildTarget.NoTarget, true), m_DefaultSampleSettings, selectionContainsTrackerFile);
            }
            else
            {
                BuildPlatform      platform         = validPlatforms[shownSettingsPage];
                SerializedProperty platformProperty = extraDataSerializedObject.FindProperty($"sampleSettingOverrides.Array.data[{shownSettingsPage}]");
                var isOverriddenProperty            = platformProperty.FindPropertyRelative("isOverridden");

                // Define the UI state of the override here.
                using (var horizontal = new EditorGUILayout.HorizontalScope())
                {
                    var label = EditorGUIUtility.TrTempContent("Override for " + validPlatforms[shownSettingsPage].title.text);
                    using (var propertyScope = new EditorGUI.PropertyScope(horizontal.rect, label, isOverriddenProperty))
                    {
                        EditorGUI.showMixedValue = isOverriddenProperty.hasMultipleDifferentValues;
                        using (var changed = new EditorGUI.ChangeCheckScope())
                        {
                            var newValue = EditorGUILayout.ToggleLeft(propertyScope.content, isOverriddenProperty.boolValue);
                            if (changed.changed)
                            {
                                isOverriddenProperty.boolValue = newValue;
                            }
                        }

                        EditorGUI.showMixedValue = false;
                    }
                }

                using (new EditorGUI.DisabledScope(isOverriddenProperty.hasMultipleDifferentValues || !isOverriddenProperty.boolValue))
                {
                    OnSampleSettingGUI(platform, platformProperty.FindPropertyRelative("settings"), selectionContainsTrackerFile);
                }
            }

            EditorGUILayout.EndPlatformGrouping();
        }
        private void OnTargetsInspectorGUI()
        {
            BuildPlatform[] array        = BuildPlatforms.instance.GetValidPlatforms().ToArray();
            int             num          = EditorGUILayout.BeginPlatformGrouping(array, GUIContent.Temp("Default"));
            string          platformName = (num != -1) ? array[num].name : "Default";

            this.OnTargetInspectorGUI(num + 1, platformName);
            EditorGUILayout.EndPlatformGrouping();
        }
        private void OnTargetsInspectorGUI()
        {
            BuildPlatform[] validPlatforms    = BuildPlatforms.instance.GetValidPlatforms().ToArray();
            int             shownSettingsPage = EditorGUILayout.BeginPlatformGrouping(validPlatforms, GUIContent.Temp("Default"));

            string platformName = (shownSettingsPage == -1) ? "Default" : validPlatforms[shownSettingsPage].name;

            OnTargetInspectorGUI(shownSettingsPage + 1, platformName);

            EditorGUILayout.EndPlatformGrouping();
        }
示例#8
0
            public override void OnInspectorGUI()
            {
                BuildPlatform[]  array       = BuildPlatforms.instance.GetValidPlatforms().ToArray();
                BuildTargetGroup targetGroup = array[EditorGUILayout.BeginPlatformGrouping(array, null, GUIStyle.none)].targetGroup;

                if (this.verticalLayout)
                {
                    this.OnGuiVertical(targetGroup);
                }
                else
                {
                    this.OnGuiHorizontal(targetGroup);
                }
                EditorGUILayout.EndPlatformGrouping();
            }
示例#9
0
            public override void OnInspectorGUI()
            {
                BuildPlayerWindow.BuildPlatform[] platforms = BuildPlayerWindow.GetValidPlatforms().ToArray();
                BuildTargetGroup targetGroup = platforms[EditorGUILayout.BeginPlatformGrouping(platforms, null, GUIStyle.none)].targetGroup;

                if (this.verticalLayout)
                {
                    this.OnGuiVertical(targetGroup);
                }
                else
                {
                    this.OnGuiHorizontal(targetGroup);
                }
                EditorGUILayout.EndPlatformGrouping();
            }
示例#10
0
            public override void OnInspectorGUI()
            {
                BuildPlatform[]  validPlatforms = BuildPlatforms.instance.GetValidPlatforms().ToArray();
                BuildTargetGroup platform       = validPlatforms[EditorGUILayout.BeginPlatformGrouping(validPlatforms, null, GUIStyle.none)].targetGroup;

                if (verticalLayout)
                {
                    OnGuiVertical(platform);
                }
                else
                {
                    OnGuiHorizontal(platform);
                }

                EditorGUILayout.EndPlatformGrouping();
            }
            public override void OnInspectorGUI()
            {
                BuildPlatform[] validPlatforms = BuildPlatforms.instance.GetValidPlatforms().ToArray();
                BuildPlatform   platform       = validPlatforms[EditorGUILayout.BeginPlatformGrouping(validPlatforms, null, EditorStyles.frameBox)];

                if (verticalLayout)
                {
                    OnGuiVertical(platform);
                }
                else
                {
                    OnGuiHorizontal(platform);
                }

                EditorGUILayout.EndPlatformGrouping();
            }
        private void OnAudioImporterGUI(bool selectionContainsTrackerFile)
        {
            if (!selectionContainsTrackerFile)
            {
                EditorGUILayout.PropertyField(this.m_ForceToMono);
                ++EditorGUI.indentLevel;
                EditorGUI.BeginDisabledGroup(!this.m_ForceToMono.boolValue);
                EditorGUILayout.PropertyField(this.m_Normalize);
                EditorGUI.EndDisabledGroup();
                --EditorGUI.indentLevel;
                EditorGUILayout.PropertyField(this.m_LoadInBackground);
            }
            BuildPlayerWindow.BuildPlatform[] array = BuildPlayerWindow.GetValidPlatforms().ToArray();
            GUILayout.Space(10f);
            int index = EditorGUILayout.BeginPlatformGrouping(array, GUIContent.Temp("Default"));

            if (index == -1)
            {
                bool disablePreloadAudioDataOption = this.m_DefaultSampleSettings.settings.loadType == AudioClipLoadType.Streaming;
                this.OnSampleSettingGUI(BuildTargetGroup.Unknown, this.GetMultiValueStatus(BuildTargetGroup.Unknown), selectionContainsTrackerFile, ref this.m_DefaultSampleSettings, disablePreloadAudioDataOption);
            }
            else
            {
                BuildTargetGroup targetGroup = array[index].targetGroup;
                AudioImporterInspector.SampleSettingProperties sampleSettingOverride = this.m_SampleSettingOverrides[targetGroup];
                AudioImporterInspector.OverrideStatus          overrideStatus        = this.GetOverrideStatus(targetGroup);
                EditorGUI.BeginChangeCheck();
                EditorGUI.showMixedValue = overrideStatus == AudioImporterInspector.OverrideStatus.MixedOverrides && !sampleSettingOverride.overrideIsForced;
                bool flag1 = sampleSettingOverride.overrideIsForced && sampleSettingOverride.forcedOverrideState || !sampleSettingOverride.overrideIsForced && overrideStatus != AudioImporterInspector.OverrideStatus.NoOverrides;
                bool flag2 = EditorGUILayout.Toggle("Override for " + array[index].name, flag1, new GUILayoutOption[0]);
                EditorGUI.showMixedValue = false;
                if (EditorGUI.EndChangeCheck())
                {
                    sampleSettingOverride.forcedOverrideState = flag2;
                    sampleSettingOverride.overrideIsForced    = true;
                }
                bool disablePreloadAudioDataOption = (sampleSettingOverride.overrideIsForced && sampleSettingOverride.forcedOverrideState || this.GetOverrideStatus(targetGroup) == AudioImporterInspector.OverrideStatus.AllOverrides) && sampleSettingOverride.settings.loadType == AudioClipLoadType.Streaming;
                AudioImporterInspector.MultiValueStatus multiValueStatus = this.GetMultiValueStatus(targetGroup);
                EditorGUI.BeginDisabledGroup((!sampleSettingOverride.overrideIsForced || !sampleSettingOverride.forcedOverrideState ? (overrideStatus == AudioImporterInspector.OverrideStatus.AllOverrides ? 1 : 0) : 1) == 0);
                this.OnSampleSettingGUI(targetGroup, multiValueStatus, selectionContainsTrackerFile, ref sampleSettingOverride, disablePreloadAudioDataOption);
                EditorGUI.EndDisabledGroup();
                this.m_SampleSettingOverrides[targetGroup] = sampleSettingOverride;
            }
            EditorGUILayout.EndPlatformGrouping();
        }
示例#13
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUI.BeginChangeCheck();
            EditorGUILayout.HelpBox(Content.kGeneralSettingsWarning.text, MessageType.Warning, true);

            Rect     r           = EditorGUILayout.BeginVertical(Styles.settingsFramebox);
            GUIStyle buttonStyle = null;

            Rect buttonRect = GetTabRect(r, 0, 2, out buttonStyle);

            if (GUI.Toggle(buttonRect, m_EditorSelected, Content.kEditorLabel, buttonStyle))
            {
                m_EditorSelected = true;
            }

            buttonRect = GetTabRect(r, 1, 2, out buttonStyle);
            if (GUI.Toggle(buttonRect, !m_EditorSelected, Content.kPlayerLabel, buttonStyle))
            {
                m_EditorSelected = false;
            }

            GUILayoutUtility.GetRect(10, EditorGUI.kTabButtonHeight);

            EditorGUI.EndChangeCheck();

            SerializedProperty currentSettings;

            if (m_EditorSelected)
            {
                EditorGUI.BeginChangeCheck();
                GUILayout.Label("Settings for Editor");
                EditorGUILayout.HelpBox(Content.kEditorSettingsWarning.text, MessageType.Warning, true);
                EditorGUILayout.Space();
                currentSettings = m_EditorMemorySettingsProperty;
                MemorySettingsUtils.InitializeDefaultsForPlatform(-1);
            }
            else
            {
                GUILayout.Label("Settings for Players");
                m_SelectedPlatform = EditorGUILayout.BeginPlatformGrouping(m_ValidPlatforms, null, Styles.settingsFramebox);
                GUILayout.Label(string.Format(L10n.Tr("Settings for {0}"), m_ValidPlatforms[m_SelectedPlatform].title.text));
                if (!m_MemorySettingsDictionary.TryGetValue(m_ValidPlatforms[m_SelectedPlatform].targetGroup, out currentSettings))
                {
                    MemorySettingsUtils.SetPlatformDefaultValues((int)m_ValidPlatforms[m_SelectedPlatform].targetGroup);
                    serializedObject.Update();
                    OnEnable();
                    m_MemorySettingsDictionary.TryGetValue(m_ValidPlatforms[m_SelectedPlatform].targetGroup, out currentSettings);
                }
                MemorySettingsUtils.InitializeDefaultsForPlatform((int)m_ValidPlatforms[m_SelectedPlatform].targetGroup);
            }

            if (BeginGroup(0, Content.kMainAllocatorsTitle))
            {
                if (BeginGroup(1, Content.kMainAllocatorTitle))
                {
                    OptionalVariableField(currentSettings, "m_MainAllocatorBlockSize", Content.kMainAllocatorBlockSize);
                    OptionalVariableField(currentSettings, "m_ThreadAllocatorBlockSize", Content.kThreadAllocatorBlockSize);
                }
                EndGroup();
                if (BeginGroup(2, Content.kGfxAllocatorTitle))
                {
                    OptionalVariableField(currentSettings, "m_MainGfxBlockSize", Content.kMainGfxBlockSize);
                    OptionalVariableField(currentSettings, "m_ThreadGfxBlockSize", Content.kThreadGfxBlockSize);
                }
                EndGroup();
                if (BeginGroup(3, Content.kExtraAllocatorTitle))
                {
                    OptionalVariableField(currentSettings, "m_CacheBlockSize", Content.kCacheBlockSize);
                    OptionalVariableField(currentSettings, "m_TypetreeBlockSize", Content.kTypetreeBlockSize);
                }
                EndGroup();
                if (BeginGroup(4, Content.kBucketAllocatorTitle))
                {
                    OptionalVariableField(currentSettings, "m_BucketAllocatorGranularity", Content.kBucketAllocatorGranularity);
                    OptionalVariableField(currentSettings, "m_BucketAllocatorBucketsCount", Content.kBucketAllocatorBucketsCount, false);
                    OptionalVariableField(currentSettings, "m_BucketAllocatorBlockSize", Content.kBucketAllocatorBlockSize);
                    OptionalVariableField(currentSettings, "m_BucketAllocatorBlockCount", Content.kBucketAllocatorBlockCount, false);
                }
                EndGroup();
            }
            EndGroup();

            if (BeginGroup(5, m_EditorSelected ? Content.kTempAllocatorTitle_Editor : Content.kTempAllocatorTitle_Player))
            {
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeMain", Content.kTempAllocatorSizeMain);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeJobWorker", Content.kTempAllocatorSizeJobWorker);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeBackgroundWorker", Content.kTempAllocatorSizeBackgroundWorker);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizePreloadManager", Content.kTempAllocatorSizePreloadManager);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeAudioWorker", Content.kTempAllocatorSizeAudioWorker);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeCloudWorker", Content.kTempAllocatorSizeCloudWorker);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeGfx", Content.kTempAllocatorSizeGfx);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeGIBakingWorker", Content.kTempAllocatorSizeGIBakingWorker);
                OptionalVariableField(currentSettings, "m_TempAllocatorSizeNavMeshWorker", Content.kTempAllocatorSizeNavMeshWorker);
            }
            EndGroup();
            if (BeginGroup(6, Content.kJobTempAllocatorTitle))
            {
                OptionalVariableField(currentSettings, "m_JobTempAllocatorBlockSize", Content.kJobTempAllocatorBlockSize);
                OptionalVariableField(currentSettings, "m_BackgroundJobTempAllocatorBlockSize", Content.kBackgroundJobTempAllocatorBlockSize);
                OptionalVariableField(currentSettings, "m_JobTempAllocatorReducedBlockSize", Content.kJobTempAllocatorReducedBlockSize);
            }
            EndGroup();

            if (BeginGroup(7, Content.kProfilerAllocatorTitle))
            {
                OptionalVariableField(currentSettings, "m_ProfilerBlockSize", Content.kProfilerBlockSize);
                if (m_EditorSelected)
                {
                    OptionalVariableField(currentSettings, "m_ProfilerEditorBlockSize", Content.kProfilerEditorBlockSize);
                }

                if (BeginGroup(8, Content.kProfilerBucketAllocatorTitle))
                {
                    OptionalVariableField(currentSettings, "m_ProfilerBucketAllocatorGranularity", Content.kProfilerBucketAllocatorGranularity);
                    OptionalVariableField(currentSettings, "m_ProfilerBucketAllocatorBucketsCount", Content.kProfilerBucketAllocatorBucketsCount, false);
                    OptionalVariableField(currentSettings, "m_ProfilerBucketAllocatorBlockSize", Content.kProfilerBucketAllocatorBlockSize);
                    OptionalVariableField(currentSettings, "m_ProfilerBucketAllocatorBlockCount", Content.kProfilerBucketAllocatorBlockCount, false);
                }
                EndGroup();
            }
            EndGroup();

            if (m_EditorSelected)
            {
                if (EditorGUI.EndChangeCheck())
                {
                    serializedObject.ApplyModifiedProperties();
                    MemorySettingsUtils.WriteEditorMemorySettings();
                }
            }
            else
            {
                EditorGUILayout.EndPlatformGrouping();
                serializedObject.ApplyModifiedProperties();
            }

            EditorGUILayout.EndVertical();
        }
示例#14
0
 public override void OnInspectorGUI()
 {
     EditorGUI.BeginDisabledGroup(false);
     BuildPlayerWindow.BuildPlatform[] buildPlayerValidPlatforms = this.GetBuildPlayerValidPlatforms();
     GUILayout.Label("Select platforms for plugin", EditorStyles.boldLabel, new GUILayoutOption[0]);
     EditorGUILayout.BeginVertical(GUI.skin.box, new GUILayoutOption[0]);
     this.ShowGeneralOptions();
     EditorGUILayout.EndVertical();
     EditorGUI.BeginChangeCheck();
     if (EditorGUI.EndChangeCheck())
     {
         this.hasModified = true;
     }
     GUILayout.Space(10f);
     if (buildPlayerValidPlatforms.Length > 0)
     {
         GUILayout.Label("Platform settings", EditorStyles.boldLabel, new GUILayoutOption[0]);
         int num = EditorGUILayout.BeginPlatformGrouping(buildPlayerValidPlatforms, null);
         if (buildPlayerValidPlatforms[num].name == BuildPipeline.GetEditorTargetName())
         {
             this.ShowEditorSettings();
         }
         else
         {
             BuildTargetGroup targetGroup = buildPlayerValidPlatforms[num].targetGroup;
             if (targetGroup == BuildTargetGroup.Standalone)
             {
                 this.desktopExtension.OnPlatformSettingsGUI(this);
             }
             else
             {
                 IPluginImporterExtension pluginImporterExtension = ModuleManager.GetPluginImporterExtension(targetGroup);
                 if (pluginImporterExtension != null)
                 {
                     pluginImporterExtension.OnPlatformSettingsGUI(this);
                 }
             }
         }
         EditorGUILayout.EndPlatformGrouping();
     }
     EditorGUI.EndDisabledGroup();
     base.ApplyRevertGUI();
     GUILayout.Label("Information", EditorStyles.boldLabel, new GUILayoutOption[0]);
     this.informationScrollPosition = EditorGUILayout.BeginVerticalScrollView(this.informationScrollPosition, new GUILayoutOption[0]);
     foreach (KeyValuePair <string, string> current in this.pluginInformation)
     {
         GUILayout.BeginHorizontal(new GUILayoutOption[0]);
         GUILayout.Label(current.Key, new GUILayoutOption[]
         {
             GUILayout.Width(50f)
         });
         GUILayout.TextField(current.Value, new GUILayoutOption[0]);
         GUILayout.EndHorizontal();
     }
     EditorGUILayout.EndScrollView();
     GUILayout.FlexibleSpace();
     if (this.importer.isNativePlugin)
     {
         EditorGUILayout.HelpBox("Once a native plugin is loaded from script, it's never unloaded. If you deselect a native plugin and it's already loaded, please restart Unity.", MessageType.Warning);
     }
 }
        private void OnAudioImporterGUI(bool selectionContainsTrackerFile)
        {
            if (!selectionContainsTrackerFile)
            {
                EditorGUILayout.PropertyField(m_ForceToMono);
                EditorGUI.indentLevel++;
                using (new EditorGUI.DisabledScope(!m_ForceToMono.boolValue))
                {
                    EditorGUILayout.PropertyField(m_Normalize);
                }
                EditorGUI.indentLevel--;
                EditorGUILayout.PropertyField(m_LoadInBackground);
                EditorGUILayout.PropertyField(m_Ambisonic);
            }

            BuildPlatform[] validPlatforms = BuildPlatforms.instance.GetValidPlatforms().ToArray();
            GUILayout.Space(10);
            int shownSettingsPage = EditorGUILayout.BeginPlatformGrouping(validPlatforms, GUIContent.Temp("Default"));

            if (shownSettingsPage == -1)
            {
                // If the loadtype is streaming on the selected platform, gray out the "Preload Audio Data" option and show the checkbox as unchecked.
                bool disablePreloadAudioDataOption = (m_DefaultSampleSettings.settings.loadType == AudioClipLoadType.Streaming);

                MultiValueStatus multiStatus = GetMultiValueStatus(BuildTargetGroup.Unknown);
                OnSampleSettingGUI(BuildTargetGroup.Unknown, multiStatus, selectionContainsTrackerFile, ref m_DefaultSampleSettings, disablePreloadAudioDataOption);
            }
            else
            {
                BuildTargetGroup        platform   = validPlatforms[shownSettingsPage].targetGroup;
                SampleSettingProperties properties = m_SampleSettingOverrides[platform];
                OverrideStatus          status     = GetOverrideStatus(platform);

                // Define the UI state of the override here.
                EditorGUI.BeginChangeCheck();
                EditorGUI.showMixedValue = (status == OverrideStatus.MixedOverrides) && !properties.overrideIsForced;
                bool overrideState = (properties.overrideIsForced && properties.forcedOverrideState) ||
                                     (!properties.overrideIsForced && status != OverrideStatus.NoOverrides);
                overrideState            = EditorGUILayout.ToggleLeft("Override for " + validPlatforms[shownSettingsPage].title.text, overrideState);
                EditorGUI.showMixedValue = false;
                if (EditorGUI.EndChangeCheck())
                {
                    properties.forcedOverrideState = overrideState;
                    properties.overrideIsForced    = true;
                }

                // If the loadtype is streaming on the selected platform, gray out the "Preload Audio Data" option and show the checkbox as unchecked.
                bool disablePreloadAudioDataOption = ((properties.overrideIsForced && properties.forcedOverrideState) || GetOverrideStatus(platform) == OverrideStatus.AllOverrides) && properties.settings.loadType == AudioClipLoadType.Streaming;

                MultiValueStatus multiStatus = GetMultiValueStatus(platform);
                bool             platformSettingsDisabled = !((properties.overrideIsForced && properties.forcedOverrideState) || status == OverrideStatus.AllOverrides);

                using (new EditorGUI.DisabledScope(platformSettingsDisabled))
                {
                    OnSampleSettingGUI(platform, multiStatus, selectionContainsTrackerFile, ref properties, disablePreloadAudioDataOption);
                }

                m_SampleSettingOverrides[platform] = properties;
            }

            EditorGUILayout.EndPlatformGrouping();
        }