Example #1
0
        /// <summary>
        /// Draws the settings area
        /// </summary>
        private void DisplayEditionSettingsArea()
        {
            EditorGUILayout.BeginVertical(GuiStyles.Background);
            GUILayout.Label(new GUIContent(" Edition Settings", Aura.ResourcesCollection.settingsIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            AuraEditorPrefs.DisplayCameraSlicesInEdition = GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayCameraSlicesInEdition, " Show slices on Cameras when selected");
            if (EditorGUI.EndChangeCheck())
            {
                SceneView.RepaintAll();
            }
            EditorGUILayout.Separator();
            //EditorGUI.BeginChangeCheck();
            EditorGUI.BeginDisabledGroup(true);
            GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayAuraGuiInParentComponents, " Display Aura buttons in Camera/Light components");
            EditorGUI.EndDisabledGroup();
            //if (EditorGUI.EndChangeCheck())
            //{
            //    AuraEditorPrefs.DisplayAuraGuiInParentComponents = !AuraEditorPrefs.DisplayAuraGuiInParentComponents;
            //}
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayGizmosOnCameras, " Display gizmos on Cameras");
            if (EditorGUI.EndChangeCheck())
            {
                AuraEditorPrefs.DisplayGizmosOnCameras = !AuraEditorPrefs.DisplayGizmosOnCameras;
            }
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayGizmosOnLights, " Display gizmos on Lights");
            if (EditorGUI.EndChangeCheck())
            {
                AuraEditorPrefs.DisplayGizmosOnLights = !AuraEditorPrefs.DisplayGizmosOnLights;
            }
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayGizmosOnVolumes, " Display gizmos on Volumes");
            if (EditorGUI.EndChangeCheck())
            {
                AuraEditorPrefs.DisplayGizmosOnVolumes = !AuraEditorPrefs.DisplayGizmosOnVolumes;
            }
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayGizmosWhenSelected, " Display gizmos when objects are selected");
            if (EditorGUI.EndChangeCheck())
            {
                AuraEditorPrefs.DisplayGizmosWhenSelected = !AuraEditorPrefs.DisplayGizmosWhenSelected;
            }
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayGizmosWhenUnselected, " Display gizmos when objects are unselected");
            if (EditorGUI.EndChangeCheck())
            {
                AuraEditorPrefs.DisplayGizmosWhenUnselected = !AuraEditorPrefs.DisplayGizmosWhenUnselected;
            }
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayButtonsInHierarchy, " Display buttons in the hierarchy");
            if (EditorGUI.EndChangeCheck())
            {
                AuraEditorPrefs.DisplayButtonsInHierarchy = !AuraEditorPrefs.DisplayButtonsInHierarchy;
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical(GuiStyles.Background);
            GUILayout.Label(new GUIContent(" Toolbox Settings", Aura.ResourcesCollection.debugIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(SceneViewToolbox.IsVisible, " Display Toolbox");
            if (EditorGUI.EndChangeCheck())
            {
                SceneViewToolbox.Display(!SceneViewToolbox.IsVisible);
            }
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(SceneViewToolbox.IsExpanded, " Expand Toolbox");
            if (EditorGUI.EndChangeCheck())
            {
                SceneViewToolbox.Expand(!SceneViewToolbox.IsExpanded);
            }
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Display Toolbox on Left", AuraEditorPrefs.ToolboxPosition == 0 ? GuiStyles.ButtonPressed : GuiStyles.Button))
            {
                AuraEditorPrefs.ToolboxPosition = 0;
            }
            if (GUILayout.Button("Display Toolbox on Right", AuraEditorPrefs.ToolboxPosition == 1 ? GuiStyles.ButtonPressed : GuiStyles.Button))
            {
                AuraEditorPrefs.ToolboxPosition = 1;
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            AuraEditorPrefs.DisplayDebugPanelInToolbox = GuiHelpers.DrawToggleChecker(AuraEditorPrefs.DisplayDebugPanelInToolbox, " Show DEBUG panel");
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(SceneViewToolbox.DisplayNotifications, " Display Notifications");
            if (EditorGUI.EndChangeCheck())
            {
                SceneViewToolbox.DisplayNotifications = !SceneViewToolbox.DisplayNotifications;
            }
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            GuiHelpers.DrawToggleChecker(SceneViewToolbox.EnableAnimations, " Enable Animations");
            if (EditorGUI.EndChangeCheck())
            {
                SceneViewToolbox.EnableAnimations = !SceneViewToolbox.EnableAnimations;
            }
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.BeginVertical(GUILayout.MaxWidth(160));
            GUILayout.Space(6);
            GUILayout.Label("Presets Previews Layout", GuiStyles.Label);
            EditorGUILayout.EndVertical();
            if (GUILayout.Button(new GUIContent("List", Aura.ResourcesCollection.listIconTexture), SceneViewToolbox.PresetsPreviewsPerRow == 1 ? GuiStyles.ButtonPressedNoBorder : GuiStyles.ButtonNoBorder))
            {
                SceneViewToolbox.PresetsPreviewsPerRow = 1;
            }
            if (GUILayout.Button(new GUIContent("Grid", Aura.ResourcesCollection.gridIconTexture), SceneViewToolbox.PresetsPreviewsPerRow == 2 ? GuiStyles.ButtonPressedNoBorder : GuiStyles.ButtonNoBorder))
            {
                SceneViewToolbox.PresetsPreviewsPerRow = 2;
            }
            EditorGUILayout.EndHorizontal();
            if (EditorGUI.EndChangeCheck())
            {
                SceneView.RepaintAll();
            }
            EditorGUILayout.Separator();
            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical(GuiStyles.Background);
            GUILayout.Label(new GUIContent(" SceneView Visualization", Aura.ResourcesCollection.cameraIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();

            AuraEditorPrefs.EnableAuraInSceneView = GuiHelpers.DrawToggleChecker(AuraEditorPrefs.EnableAuraInSceneView, "Enable visualization in SceneView");

            EditorGUILayout.Separator();
            GuiHelpers.DrawHelpBox("Enabling Aura in the SceneView may break the SceneView rendering when loading a scene or building player.\n\nTo get the SceneView rendering back, <b>disable then re-enable back</b> post-effects rendering in the toggle dropdown located in the top border of the SceneView.", HelpBoxType.Experimental);
            EditorGUILayout.Separator();

            if (EditorGUI.EndChangeCheck())
            {
                if (AuraEditorPrefs.EnableAuraInSceneView)
                {
                    SceneViewVisualization.EnableAuraInSceneView();
                }
                else
                {
                    SceneViewVisualization.DisableAuraInSceneView();
                }
            }

            EditorGUI.BeginDisabledGroup(!AuraEditorPrefs.EnableAuraInSceneView);
            AuraQualitySettingsEditor.DrawCustomEditor(EditionCameraQualitySettingsObject, null, false, true);
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical(GuiStyles.Background);
            GUILayout.Label(new GUIContent(" Introduction Screens", Aura.ResourcesCollection.questionIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();
            if (GUILayout.Button("Show Main Introduction Screen", GuiStyles.Button))
            {
                AuraEditorPrefs.DisplayMainIntroductionScreen = true;
                SceneView.RepaintAll();
            }
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            if (GUILayout.Button("Show Camera Introduction Screen", GuiStyles.Button))
            {
                AuraEditorPrefs.DisplayCameraIntroductionScreen = true;
                SceneView.RepaintAll();
            }
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            if (GUILayout.Button("Show Light Introduction Screen", GuiStyles.Button))
            {
                AuraEditorPrefs.DisplayLightIntroductionScreen = true;
                SceneView.RepaintAll();
            }
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            if (GUILayout.Button("Show Volume Introduction Screen", GuiStyles.Button))
            {
                AuraEditorPrefs.DisplayVolumeIntroductionScreen = true;
                SceneView.RepaintAll();
            }
            EditorGUILayout.Separator();
            EditorGUILayout.EndVertical();
        }
        /// <summary>
        /// Draws the quality settings area
        /// </summary>
        private void DisplayQualitySettingsArea()
        {
            AuraQualitySettings currentQualitySettings = (AuraQualitySettings)_qualitySettingsProperty.objectReferenceValue;

            if (!ReferenceEquals(_previousQualitySettings, currentQualitySettings))
            {
                _currentAuraComponent.frustumSettings.RaiseOnQualityChanged();
                PopulateExistingQualitySettingsPresetsList();
            }
            _previousQualitySettings = currentQualitySettings;

            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.BeginVertical(GuiStyles.Background);

            EditorGUILayout.Separator();
            GUILayout.Label(new GUIContent("Aura <b>Quality Settings</b>", Aura.ResourcesCollection.qualitySettingsPresetIconTexture), new GUIStyle(GuiStyles.LabelCenteredBig)
            {
                fontSize = 15
            });
            EditorGUILayout.Separator();
            GuiHelpers.DrawContextualHelpBox("The \"Quality Settings Preset\" is the asset that holds the quality settings for the data computation.");

            //if (_foundQualitySettingsPresets.Count != AssetDatabase.FindAssets("t:AuraQualitySettings").Length)
            //{
            //    PopulateExistingQualitySettingsPresetsList();
            //}

            if (_foundQualitySettingsPresets.Count > 0)
            {
                EditorGUI.BeginChangeCheck();
                EditorGUILayout.BeginHorizontal();
                GUILayout.Label("Select Existing", GuiStyles.Label, GUILayout.MaxWidth(96));
                _selectedQualitySettingsPresetId = EditorGUILayout.Popup(_selectedQualitySettingsPresetId, _foundQualitySettingsPresetsName);
                EditorGUILayout.EndHorizontal();
                if (EditorGUI.EndChangeCheck())
                {
                    _currentAuraComponent.frustumSettings.LoadQualitySettings(AssetDatabase.LoadAssetAtPath <AuraQualitySettings>(_foundQualitySettingsPresets[_selectedQualitySettingsPresetId]));
                    PopulateExistingQualitySettingsPresetsList();
                }

                EditorGUILayout.Separator();
                EditorGUILayout.Separator();
            }

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Preset File", GuiStyles.Label, GUILayout.MaxWidth(80));
            EditorGUILayout.PropertyField(_qualitySettingsProperty, new GUIContent(""));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginHorizontal();
            //if (GUILayout.Button(new GUIContent("Load Existing", Aura.AuraResourcesCollection.loadIconTexture, "Loads an existing preset file"), GuiStyles.ButtonBigNoBorder))
            //{
            //    _currentAuraComponent.frustumSettings.LoadQualitySettings();
            //}
            //GUILayout.Space(8);
            if (GUILayout.Button(new GUIContent("Save As New Preset", Aura.ResourcesCollection.saveIconTexture, "Saves the current settings in a new file"), GuiStyles.ButtonBigNoBorder))
            {
                _currentAuraComponent.frustumSettings.SaveQualitySettings();
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            SerializedObject qualitySettingsObject = new SerializedObject(_currentAuraComponent.frustumSettings.QualitySettings);

            AuraQualitySettingsEditor.DrawCustomEditor(qualitySettingsObject, _currentAuraComponent, false, true);

            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
        }