Example #1
0
        private void DrawCutscenesStage()
        {
            if (DialogueManager.Instance.displaySettings.cameraSettings == null)
            {
                DialogueManager.Instance.displaySettings.cameraSettings = new DisplaySettings.CameraSettings();
            }
            EditorGUILayout.LabelField("Cutscene Sequences", EditorStyles.boldLabel);
            EditorWindowTools.StartIndentedSection();
            EditorGUILayout.HelpBox("The Dialogue System uses an integrated cutscene sequencer. Every line of dialogue can have a cutscene sequence -- for example to move the camera, play animations on the speaker, or play a lip-synced voiceover.", MessageType.Info);
            EditorWindowTools.DrawHorizontalLine();
            EditorGUILayout.HelpBox("You can set up a camera object or prefab specifically for sequences. This can be useful to apply depth of field effects or other filters that you wouldn't normally apply to your gameplay camera. If you've set up a sequencer camera, assign it below. Otherwise the sequencer will just use the current main camera.", MessageType.None);
            DialogueManager.Instance.displaySettings.cameraSettings.sequencerCamera = EditorGUILayout.ObjectField("Sequencer Camera", DialogueManager.Instance.displaySettings.cameraSettings.sequencerCamera, typeof(UnityEngine.Camera), true) as UnityEngine.Camera;
            EditorWindowTools.DrawHorizontalLine();
            EditorGUILayout.HelpBox("Cutscene sequence commands can reference camera angles defined on a camera angle prefab. If you've set up a camera angle prefab, assign it below. Otherwise the sequencer will use a default camera angle prefab with basic angles such as Closeup, Medium, and Wide.", MessageType.None);
            DialogueManager.Instance.displaySettings.cameraSettings.cameraAngles = EditorGUILayout.ObjectField("Camera Angles", DialogueManager.Instance.displaySettings.cameraSettings.cameraAngles, typeof(GameObject), true) as GameObject;
            EditorWindowTools.DrawHorizontalLine();
            EditorGUILayout.HelpBox("If a dialogue entry doesn't define its own cutscene sequence, it will use the default sequence below.", MessageType.None);
            EditorGUILayout.BeginHorizontal();
            DefaultSequenceStyle style = string.Equals(DefaultCameraAngleSequence, DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence)
                                ? DefaultSequenceStyle.DefaultCameraAngles
                                        : string.Equals(DefaultCloseupSequence, DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence)
                                                ? DefaultSequenceStyle.Closeups
                                                : (string.Equals(DefaultWaitForSubtitleSequence, DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence)
                                                        ? DefaultSequenceStyle.WaitForSubtitle
                                                        : DefaultSequenceStyle.Custom);
            DefaultSequenceStyle newStyle = (DefaultSequenceStyle)EditorGUILayout.EnumPopup("Default Sequence", style);

            if (newStyle != style)
            {
                style = newStyle;
                switch (style)
                {
                case DefaultSequenceStyle.DefaultCameraAngles: DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence = DefaultCameraAngleSequence; break;

                case DefaultSequenceStyle.Closeups: DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence = DefaultCloseupSequence; break;

                case DefaultSequenceStyle.WaitForSubtitle: DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence = DefaultWaitForSubtitleSequence; break;

                default: break;
                }
            }
            switch (style)
            {
            case DefaultSequenceStyle.DefaultCameraAngles: EditorGUILayout.HelpBox("Changes to the speaker's default camera angle. At the end of the subtitle, changes to the listener's default angle. If angles aren't specified on the speaker or listener, the default is Closeup. Don't use this if your player is a body-less first person controller, since focusing the camera on the player probably doesn't make sense in this case.", MessageType.None); break;

            case DefaultSequenceStyle.Closeups: EditorGUILayout.HelpBox("Does a camera closeup of the speaker. At the end of the subtitle, changes to a closeup of the listener. Don't use this if your player is a body-less first person controller, since a closeup doesn't make sense in this case.", MessageType.None); break;

            case DefaultSequenceStyle.WaitForSubtitle: EditorGUILayout.HelpBox("Just waits for the subtitle to finish. Doesn't touch the camera.", MessageType.None); break;

            default: EditorGUILayout.HelpBox("Custom default sequence defined below.", MessageType.None); break;
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.HelpBox("In the default sequence, you can use '{{end}}' to refer to the duration of the subtitle as determined by Chars/Second and Min Seconds.", MessageType.None);
            DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence = EditorGUILayout.TextField("Default Sequence", DialogueManager.Instance.displaySettings.cameraSettings.defaultSequence);
            EditorWindowTools.EndIndentedSection();
            DrawNavigationButtons(true, true, false);
        }
Example #2
0
        private string SelectSequence(string label, string sequence)
        {
            DefaultSequenceStyle style = string.Equals(DefaultCameraAngleSequence, sequence)
                                ? DefaultSequenceStyle.DefaultCameraAngles
                                        : string.Equals(DefaultCloseupSequence, sequence)
                                        ? DefaultSequenceStyle.Closeups
                                        : (string.Equals(DefaultWaitForSubtitleSequence, sequence)
                                           ? DefaultSequenceStyle.WaitForSubtitle
                                           : DefaultSequenceStyle.Custom);
            DefaultSequenceStyle newStyle = (DefaultSequenceStyle)EditorGUILayout.EnumPopup(label, style);

            if (newStyle != style)
            {
                style = newStyle;
                switch (style)
                {
                case DefaultSequenceStyle.DefaultCameraAngles: sequence = DefaultCameraAngleSequence; break;

                case DefaultSequenceStyle.Closeups: sequence = DefaultCloseupSequence; break;

                case DefaultSequenceStyle.WaitForSubtitle: sequence = DefaultWaitForSubtitleSequence; break;

                default: break;
                }
            }
            switch (style)
            {
            case DefaultSequenceStyle.DefaultCameraAngles: EditorGUILayout.HelpBox("Changes to the speaker's default camera angle. At the end of the subtitle, changes to the listener's default angle. If angles aren't specified on the speaker or listener, the default is Closeup. Don't use this if your player is a body-less first person controller, since focusing the camera on the player probably doesn't make sense in this case.", MessageType.None); break;

            case DefaultSequenceStyle.Closeups: EditorGUILayout.HelpBox("Does a camera closeup of the speaker. At the end of the subtitle, changes to a closeup of the listener. Don't use this if your player is a body-less first person controller, since a closeup doesn't make sense in this case.", MessageType.None); break;

            case DefaultSequenceStyle.WaitForSubtitle: EditorGUILayout.HelpBox("Just waits for the subtitle to finish. Doesn't touch the camera.", MessageType.None); break;

            default: EditorGUILayout.HelpBox("Custom default sequence defined below.", MessageType.None); break;
            }
            return(sequence);
        }