Exemplo n.º 1
0
        private void DrawSequenceAction()
        {
            foldouts.sequenceFoldout = EditorWindowTools.EditorGUILayoutFoldout("Play Sequence", "Play a sequence.", foldouts.sequenceFoldout, false);
            if (foldouts.sequenceFoldout)
            {
                try
                {
                    EditorWindowTools.EditorGUILayoutBeginGroup();
                    if (DialogueTriggerEventDrawer.IsEnableOrStartEnumIndex(triggerProperty.enumValueIndex))
                    {
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("waitOneFrameOnStartOrEnable"), new GUIContent("Wait 1 Frame", "Tick to wait one frame to allow other components to finish their OnStart/OnEnable"), true);
                    }
                    serializedObject.ApplyModifiedProperties();
                    EditorGUI.BeginChangeCheck();
                    var newSequence = SequenceEditorTools.DrawLayout(new GUIContent("Sequence"), trigger.sequence, ref sequenceRect);
                    var changed     = EditorGUI.EndChangeCheck();
                    serializedObject.Update();
                    if (changed)
                    {
                        serializedObject.FindProperty("sequence").stringValue = newSequence;
                    }

                    EditorGUILayout.PropertyField(serializedObject.FindProperty("sequenceSpeaker"), true);
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("sequenceListener"), true);
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }
        }
 private void DrawSubtitleSettings()
 {
     foldouts.subtitleSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Subtitle Settings", "Subtitle settings.", foldouts.subtitleSettingsFoldout, false);
     if (foldouts.subtitleSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var subtitleSettings = displaySettingsProperty.FindPropertyRelative("subtitleSettings");
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("richTextEmphases"), new GUIContent("Use Rich Text For [em#] Tags", "Use rich text codes for [em#] markup tags. If unticked, [em#] tag will apply color to entire text."), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("showNPCSubtitlesDuringLine"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("showNPCSubtitlesWithResponses"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("showPCSubtitlesDuringLine"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("allowPCSubtitleReminders"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("skipPCSubtitleAfterResponseMenu"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("subtitleCharsPerSecond"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("minSubtitleSeconds"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("continueButton"), true);
             EditorGUILayout.PropertyField(subtitleSettings.FindPropertyRelative("informSequenceStartAndEnd"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawOtherSettings()
 {
     foldouts.otherSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Other Settings", "Miscellaneous settings.", foldouts.otherSettingsFoldout);
     if (foldouts.otherSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var dontDestroyOnLoadProperty = serializedObject.FindProperty("dontDestroyOnLoad");
             EditorGUILayout.PropertyField(serializedObject.FindProperty("allowOnlyOneInstance"), true);
             var previousDontDestroyOnLoadValue = dontDestroyOnLoadProperty.boolValue;
             EditorGUILayout.PropertyField(dontDestroyOnLoadProperty, true);
             if (previousDontDestroyOnLoadValue == true && dontDestroyOnLoadProperty.boolValue == false)
             {
                 if (!VerifyDisableDontDestroyOnLoad())
                 {
                     dontDestroyOnLoadProperty.boolValue = true;
                 }
             }
             EditorGUILayout.PropertyField(serializedObject.FindProperty("preloadResources"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("warmUpConversationController"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("instantiateDatabase"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("includeSimStatus"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("allowSimultaneousConversations"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("dialogueTimeMode"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("debugLevel"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawPersistentDataSettings()
 {
     foldouts.persistentDataSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Persistent Data Settings", "Settings used by the save subsystem.", foldouts.persistentDataSettingsFoldout);
     if (foldouts.persistentDataSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("recordPersistentDataOn"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("includeStatusAndRelationshipData"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("includeActorData"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("includeAllItemData"), new GUIContent("Include All Item & Quest Data"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("includeLocationData"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("includeAllConversationFields"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("saveConversationSimStatusWithField"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("saveDialogueEntrySimStatusWithField"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("asyncGameObjectBatchSize"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("asyncDialogueEntryBatchSize"), true);
             EditorGUILayout.PropertyField(persistentDataSettingsProperty.FindPropertyRelative("initializeNewVariables"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
Exemplo n.º 5
0
 private void DrawSetActiveAction()
 {
     foldouts.setActiveFoldout = EditorWindowTools.EditorGUILayoutFoldout("Set GameObjects Active/Inactive", "Set GameObjects active or inactive.", foldouts.setActiveFoldout, false);
     if (foldouts.setActiveFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             if (setActiveList.count > 0)
             {
                 EditorGUILayout.LabelField("Click on a row to edit its conditions.");
             }
             setActiveList.DoLayoutList();
             if (0 <= setActiveList.index && setActiveList.index < setActiveList.count)
             {
                 EditorWindowTools.EditorGUILayoutBeginIndent();
                 EditorGUILayout.PropertyField(setActiveList.serializedProperty.GetArrayElementAtIndex(setActiveList.index).FindPropertyRelative("condition"), true);
                 EditorWindowTools.EditorGUILayoutEndIndent();
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 protected virtual void DrawLuaAction()
 {
     foldouts.luaFoldout = EditorWindowTools.EditorGUILayoutFoldout("Run Lua Code", "Run Lua code.", foldouts.luaFoldout, false);
     if (foldouts.luaFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             if (EditorTools.selectedDatabase != luaScriptWizard.database)
             {
                 luaScriptWizard.database = EditorTools.selectedDatabase;
                 luaScriptWizard.RefreshWizardResources();
             }
             serializedObject.ApplyModifiedProperties();
             EditorGUI.BeginChangeCheck();
             var newLuaCode = luaScriptWizard.Draw(new GUIContent("Lua Code", "The Lua code to run when the condition is true."), trigger.luaCode);
             var changed    = EditorGUI.EndChangeCheck();
             serializedObject.Update();
             if (changed)
             {
                 serializedObject.FindProperty("luaCode").stringValue = newLuaCode;
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
Exemplo n.º 7
0
 private void DrawConversationAction()
 {
     foldouts.conversationFoldout = EditorWindowTools.EditorGUILayoutFoldout("Start Conversation", "Start a conversation.", foldouts.conversationFoldout, false);
     if (foldouts.conversationFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             EditorGUILayout.PropertyField(serializedObject.FindProperty("conversation"), true);
             if (!string.IsNullOrEmpty(serializedObject.FindProperty("conversation").stringValue))
             {
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("conversationActor"), true);
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("conversationConversant"), true);
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("exclusive"), true);
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("skipIfNoValidEntries"), true);
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("stopConversationOnTriggerExit"), true);
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("stopConversationIfTooFar"), true);
                 if (serializedObject.FindProperty("stopConversationIfTooFar").boolValue)
                 {
                     EditorGUILayout.PropertyField(serializedObject.FindProperty("maxConversationDistance"), true);
                     EditorGUILayout.PropertyField(serializedObject.FindProperty("monitorConversationDistanceFrequency"), true);
                 }
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("showCursorDuringConversation"), true);
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("pauseGameDuringConversation"), true);
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 protected virtual void DrawSetEnabledAction()
 {
     foldouts.setEnabledFoldout = EditorWindowTools.EditorGUILayoutFoldout("Set Components Enabled/Disabled", "Set components active or inactive.", foldouts.setEnabledFoldout, false);
     if (foldouts.setEnabledFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             if (setEnabledList.count > 0)
             {
                 EditorGUILayout.LabelField("Click on a row to edit its conditions.");
             }
             setEnabledList.DoLayoutList();
             if (0 <= setEnabledList.index && setEnabledList.index < setEnabledList.count)
             {
                 EditorWindowTools.EditorGUILayoutBeginIndent();
                 EditorGUILayout.PropertyField(setEnabledList.serializedProperty.GetArrayElementAtIndex(setEnabledList.index).FindPropertyRelative("condition"), true);
                 EditorWindowTools.EditorGUILayoutEndIndent();
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
Exemplo n.º 9
0
 private void DrawAlertAction()
 {
     foldouts.alertFoldout = EditorWindowTools.EditorGUILayoutFoldout("Show Alert", "Show an alert message.", foldouts.alertFoldout, false);
     if (foldouts.alertFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             EditorGUILayout.PropertyField(serializedObject.FindProperty("alertMessage"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("textTable"), true);
             var  alertDurationProperty = serializedObject.FindProperty("alertDuration");
             bool specifyAlertDuration  = !Mathf.Approximately(0, alertDurationProperty.floatValue);
             specifyAlertDuration = EditorGUILayout.Toggle(new GUIContent("Specify Duration", "Tick to specify an alert duration; untick to use the default"), specifyAlertDuration);
             if (specifyAlertDuration)
             {
                 if (Mathf.Approximately(0, alertDurationProperty.floatValue))
                 {
                     alertDurationProperty.floatValue = 5;
                 }
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("alertDuration"), true);
             }
             else
             {
                 alertDurationProperty.floatValue = 0;
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawInputSettings()
 {
     foldouts.inputSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Input Settings", "Input and response menu settings.", foldouts.inputSettingsFoldout, false);
     if (foldouts.inputSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var inputSettings = displaySettingsProperty.FindPropertyRelative("inputSettings");
             EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("alwaysForceResponseMenu"), true);
             EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("includeInvalidEntries"), true);
             EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("responseTimeout"), true);
             EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("responseTimeoutAction"), true);
             EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("emTagForOldResponses"), new GUIContent("[em#] Tag For Old Responses", "The [em#] tag to wrap around responses that have been previously chosen."), true);
             EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("emTagForInvalidResponses"), new GUIContent("[em#] Tag For Invalid Responses", "The [em#] tag to wrap around invalid responses. These responses are only shown if Include Invalid Entries is ticked."), true);
             try
             {
                 EditorWindowTools.StartIndentedSection();
                 EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("qteButtons"), new GUIContent("QTE Input Buttons", "Input buttons mapped to QTEs."), true);
                 EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("cancel"), new GUIContent("Cancel Subtitle Input", "Key or button that cancels subtitle sequences."), true);
                 EditorGUILayout.PropertyField(inputSettings.FindPropertyRelative("cancelConversation"), new GUIContent("Cancel Conversation Input", "Key or button that cancels active conversation while in response menu."), true);
             }
             finally
             {
                 EditorWindowTools.EndIndentedSection();
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 protected virtual void DrawSetAnimatorStateAction()
 {
     foldouts.setAnimatorStateFoldout = EditorWindowTools.EditorGUILayoutFoldout("Set Animator States", "Set Animator states on one or more GameObjects.", foldouts.setAnimatorStateFoldout, false);
     if (foldouts.setAnimatorStateFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             if (setAnimatorStateList.count > 0)
             {
                 EditorGUILayout.LabelField("Click on a row to edit its conditions.");
             }
             setAnimatorStateList.DoLayoutList();
             if (0 <= setAnimatorStateList.index && setAnimatorStateList.index < setAnimatorStateList.count)
             {
                 EditorWindowTools.EditorGUILayoutBeginIndent();
                 EditorGUILayout.PropertyField(setAnimatorStateList.serializedProperty.GetArrayElementAtIndex(setAnimatorStateList.index).FindPropertyRelative("condition"), true);
                 EditorWindowTools.EditorGUILayoutEndIndent();
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
        protected virtual void DrawConversationAction()
        {
            foldouts.conversationFoldout = EditorWindowTools.EditorGUILayoutFoldout("Start Conversation", "Start a conversation.", foldouts.conversationFoldout, false);
            if (foldouts.conversationFoldout)
            {
                try
                {
                    var conversationProperty = serializedObject.FindProperty("conversation");
                    var hadConversation      = !string.IsNullOrEmpty(conversationProperty.stringValue);
                    EditorWindowTools.EditorGUILayoutBeginGroup();
                    EditorGUILayout.PropertyField(conversationProperty, true);
                    if (string.IsNullOrEmpty(conversationProperty.stringValue))
                    {
                        if (hadConversation)
                        {
                            showConversationAction = false;
                        }
                    }
                    else
                    {
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("conversationActor"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("conversationConversant"), true);

                        var entryIDProperty = serializedObject.FindProperty("startConversationEntryID");
                        var specifyEntryID  = EditorGUILayout.Toggle(new GUIContent("Specify Starting Entry", "Start conversation at a specific entry ID."), (entryIDProperty.intValue != -1));
                        if (specifyEntryID)
                        {
                            entryIDProperty.intValue = Mathf.Max(0, EditorGUILayout.IntField(new GUIContent("Entry ID", "Start at this entry ID."), entryIDProperty.intValue));
                        }
                        else
                        {
                            entryIDProperty.intValue = -1;
                        }

                        EditorGUILayout.PropertyField(serializedObject.FindProperty("exclusive"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("skipIfNoValidEntries"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("stopConversationOnTriggerExit"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("stopConversationIfTooFar"), true);
                        if (serializedObject.FindProperty("stopConversationIfTooFar").boolValue)
                        {
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("maxConversationDistance"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("monitorConversationDistanceFrequency"), true);
                        }
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("showCursorDuringConversation"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("pauseGameDuringConversation"), true);
                    }
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }
        }
        protected virtual void DrawBarkAction()
        {
            foldouts.barkFoldout = EditorWindowTools.EditorGUILayoutFoldout("Bark", "Bark.", foldouts.barkFoldout, false);
            if (foldouts.barkFoldout)
            {
                try
                {
                    EditorWindowTools.EditorGUILayoutBeginGroup();
                    EditorGUILayout.BeginHorizontal();
                    var barkSourceProperty = serializedObject.FindProperty("barkSource");
                    EditorGUILayout.PropertyField(barkSourceProperty, true);
                    if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(14)))
                    {
                        serializedObject.FindProperty("barkSource").enumValueIndex    = 0;
                        serializedObject.FindProperty("barkConversation").stringValue = string.Empty;
                        serializedObject.FindProperty("barkText").stringValue         = string.Empty;
                        serializedObject.FindProperty("barkTextSequence").stringValue = string.Empty;
                        showBarkAction = false;
                    }
                    EditorGUILayout.EndHorizontal();
                    switch ((DialogueSystemTrigger.BarkSource)barkSourceProperty.enumValueIndex)
                    {
                    case DialogueSystemTrigger.BarkSource.Conversation:
                        var barkConversationProperty = serializedObject.FindProperty("barkConversation");
                        EditorGUILayout.PropertyField(barkConversationProperty, true);
                        if (!string.IsNullOrEmpty(barkConversationProperty.stringValue))
                        {
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("barkOrder"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("barker"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("barkTarget"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("skipBarkIfNoValidEntries"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("allowBarksDuringConversations"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("cacheBarkLines"), true);
                        }
                        break;

                    case DialogueSystemTrigger.BarkSource.Text:
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barkText"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barkTextSequence"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barker"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barkTarget"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("allowBarksDuringConversations"), true);
                        break;
                    }
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }
        }
        protected virtual void DrawQuestAction()
        {
            foldouts.questFoldout = EditorWindowTools.EditorGUILayoutFoldout("Set Quest State", "Set quest states.", foldouts.questFoldout, false);
            if (foldouts.questFoldout)
            {
                try
                {
                    EditorWindowTools.EditorGUILayoutBeginGroup();
                    // Quest picker:
                    if (questPicker != null)
                    {
                        serializedObject.ApplyModifiedProperties();
                        questPicker.Draw();
                        var hadQuestName = !string.IsNullOrEmpty(trigger.questName);
                        trigger.questName          = questPicker.currentQuest;
                        trigger.useQuestNamePicker = questPicker.usePicker;
                        trigger.selectedDatabase   = questPicker.database;
                        if (EditorTools.selectedDatabase == null)
                        {
                            EditorTools.selectedDatabase = trigger.selectedDatabase;
                        }
                        if (hadQuestName && string.IsNullOrEmpty(trigger.questName))
                        {
                            showSetQuestStateAction = false;
                        }
                        serializedObject.Update();
                    }

                    // Quest state:
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("setQuestState"), true);
                    if (serializedObject.FindProperty("setQuestState").boolValue)
                    {
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("questState"), true);
                    }

                    // Quest entry state:
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("setQuestEntryState"), true);
                    if (serializedObject.FindProperty("setQuestEntryState").boolValue)
                    {
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("questEntryNumber"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("questEntryState"), true);
                    }
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }
        }
 protected virtual void DrawSendMessageAction()
 {
     foldouts.sendMessageFoldout = EditorWindowTools.EditorGUILayoutFoldout("Send Messages", "Use SendMessage to call methods on one or more GameObjects.", foldouts.sendMessageFoldout, false);
     if (foldouts.sendMessageFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             sendMessageList.DoLayoutList();
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 protected virtual void DrawUnityEventAction()
 {
     foldouts.unityEventFoldout = EditorWindowTools.EditorGUILayoutFoldout("OnExecute() UnityEvent", "Connect other events in the Inspector.", foldouts.unityEventFoldout, false);
     if (foldouts.unityEventFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             EditorGUILayout.PropertyField(serializedObject.FindProperty("onExecute"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawBarkSettings()
 {
     foldouts.barkSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Bark Settings", "Bark settings.", foldouts.barkSettingsFoldout, false);
     if (foldouts.barkSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var barkSettings = displaySettingsProperty.FindPropertyRelative("barkSettings");
             EditorGUILayout.PropertyField(barkSettings.FindPropertyRelative("allowBarksDuringConversations"), true);
             EditorGUILayout.PropertyField(barkSettings.FindPropertyRelative("barkCharsPerSecond"), true);
             EditorGUILayout.PropertyField(barkSettings.FindPropertyRelative("minBarkSeconds"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawLocalizationSettings()
 {
     foldouts.localizationSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Localization Settings", "Language localization settings.", foldouts.localizationSettingsFoldout, false);
     if (foldouts.localizationSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var localizationSettings = displaySettingsProperty.FindPropertyRelative("localizationSettings");
             EditorGUILayout.PropertyField(localizationSettings.FindPropertyRelative("language"), true);
             EditorGUILayout.PropertyField(localizationSettings.FindPropertyRelative("useSystemLanguage"), true);
             EditorGUILayout.PropertyField(localizationSettings.FindPropertyRelative("textTable"), true);
             //---Was: EditorGUILayout.PropertyField(localizationSettings.FindPropertyRelative("localizedText"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 protected virtual void DrawConditions()
 {
     foldouts.conditionFoldout = EditorWindowTools.EditorGUILayoutFoldout("Conditions", "Conditions that must be true for trigger to fire.", foldouts.conditionFoldout);
     if (foldouts.conditionFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             ConditionPropertyDrawer.hideMainFoldout = true;
             var conditionProperty = serializedObject.FindProperty("condition");
             conditionProperty.isExpanded = true;
             EditorGUILayout.PropertyField(conditionProperty, true);
             ConditionPropertyDrawer.hideMainFoldout = false;
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawAlertSettings()
 {
     foldouts.alertSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Alert Settings", "Alert settings.", foldouts.alertSettingsFoldout, false);
     if (foldouts.alertSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var alertSettings = displaySettingsProperty.FindPropertyRelative("alertSettings");
             EditorGUILayout.PropertyField(alertSettings.FindPropertyRelative("allowAlertsDuringConversations"), true);
             EditorGUILayout.PropertyField(alertSettings.FindPropertyRelative("alertCheckFrequency"), true);
             EditorGUILayout.PropertyField(alertSettings.FindPropertyRelative("alertCharsPerSecond"), true);
             EditorGUILayout.PropertyField(alertSettings.FindPropertyRelative("minAlertSeconds"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
Exemplo n.º 21
0
        private void DrawBarkAction()
        {
            foldouts.barkFoldout = EditorWindowTools.EditorGUILayoutFoldout("Bark", "Bark.", foldouts.barkFoldout, false);
            if (foldouts.barkFoldout)
            {
                try
                {
                    EditorWindowTools.EditorGUILayoutBeginGroup();
                    var barkSourceProperty = serializedObject.FindProperty("barkSource");
                    EditorGUILayout.PropertyField(barkSourceProperty, true);
                    switch ((DialogueSystemTrigger.BarkSource)barkSourceProperty.enumValueIndex)
                    {
                    case DialogueSystemTrigger.BarkSource.Conversation:
                        var barkConversationProperty = serializedObject.FindProperty("barkConversation");
                        EditorGUILayout.PropertyField(barkConversationProperty, true);
                        if (!string.IsNullOrEmpty(barkConversationProperty.stringValue))
                        {
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("barkOrder"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("barker"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("barkTarget"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("skipBarkIfNoValidEntries"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("allowBarksDuringConversations"), true);
                            EditorGUILayout.PropertyField(serializedObject.FindProperty("cacheBarkLines"), true);
                        }
                        break;

                    case DialogueSystemTrigger.BarkSource.Text:
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barkText"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barkTextSequence"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barker"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("barkTarget"), true);
                        EditorGUILayout.PropertyField(serializedObject.FindProperty("allowBarksDuringConversations"), true);
                        break;
                    }
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }
        }
 private void DrawOtherSettings()
 {
     foldouts.otherSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Other Settings", "Miscellaneous settings.", foldouts.otherSettingsFoldout);
     if (foldouts.otherSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             EditorGUILayout.PropertyField(serializedObject.FindProperty("allowOnlyOneInstance"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("dontDestroyOnLoad"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("preloadResources"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("instantiateDatabase"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("includeSimStatus"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("dialogueTimeMode"), true);
             EditorGUILayout.PropertyField(serializedObject.FindProperty("debugLevel"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawDisplaySettings()
 {
     foldouts.displaySettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Display Settings", "Settings related to display and input.", foldouts.displaySettingsFoldout);
     if (foldouts.displaySettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             EditorGUILayout.PropertyField(displaySettingsProperty.FindPropertyRelative("dialogueUI"), true);
             DrawLocalizationSettings();
             DrawSubtitleSettings();
             DrawCameraSettings();
             DrawInputSettings();
             DrawBarkSettings();
             DrawAlertSettings();
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 protected virtual void DrawAlertAction()
 {
     foldouts.alertFoldout = EditorWindowTools.EditorGUILayoutFoldout("Show Alert", "Show an alert message.", foldouts.alertFoldout, false);
     if (foldouts.alertFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             EditorGUILayout.BeginHorizontal();
             EditorGUILayout.PropertyField(serializedObject.FindProperty("alertMessage"), true);
             if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(14)))
             {
                 serializedObject.FindProperty("alertMessage").stringValue = string.Empty;
                 showAlertAction = false;
             }
             EditorGUILayout.EndHorizontal();
             EditorGUILayout.PropertyField(serializedObject.FindProperty("textTable"), true);
             var  alertDurationProperty = serializedObject.FindProperty("alertDuration");
             bool specifyAlertDuration  = !Mathf.Approximately(0, alertDurationProperty.floatValue);
             specifyAlertDuration = EditorGUILayout.Toggle(new GUIContent("Specify Duration", "Tick to specify an alert duration; untick to use the default"), specifyAlertDuration);
             if (specifyAlertDuration)
             {
                 if (Mathf.Approximately(0, alertDurationProperty.floatValue))
                 {
                     alertDurationProperty.floatValue = 5;
                 }
                 EditorGUILayout.PropertyField(serializedObject.FindProperty("alertDuration"), true);
             }
             else
             {
                 alertDurationProperty.floatValue = 0;
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawLocalizationSettings()
 {
     foldouts.localizationSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Localization Settings", "Language localization settings.", foldouts.localizationSettingsFoldout, false);
     if (foldouts.localizationSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var localizationSettings = displaySettingsProperty.FindPropertyRelative("localizationSettings");
             EditorGUILayout.PropertyField(localizationSettings.FindPropertyRelative("language"), true);
             EditorGUILayout.PropertyField(localizationSettings.FindPropertyRelative("useSystemLanguage"), true);
             EditorGUILayout.PropertyField(localizationSettings.FindPropertyRelative("textTable"), true);
             if (GUILayout.Button(new GUIContent("Reset Language PlayerPrefs", "Delete the language selection saved in PlayerPrefs.")))
             {
                 ResetLanguagePlayerPrefs();
             }
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
 private void DrawCameraSettings()
 {
     foldouts.cameraSettingsFoldout = EditorWindowTools.EditorGUILayoutFoldout("Camera & Cutscene Settings", "Camera and cutscene sequencer settings.", foldouts.cameraSettingsFoldout, false);
     if (foldouts.cameraSettingsFoldout)
     {
         try
         {
             EditorWindowTools.EditorGUILayoutBeginGroup();
             var cameraSettings = displaySettingsProperty.FindPropertyRelative("cameraSettings");
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("sequencerCamera"), true);
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("alternateCameraObject"), true);
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("cameraAngles"), true);
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("defaultSequence"), true);
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("defaultPlayerSequence"), true);
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("defaultResponseMenuSequence"), true);
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("entrytagFormat"), true);
             EditorGUILayout.PropertyField(cameraSettings.FindPropertyRelative("disableInternalSequencerCommands"), true);
         }
         finally
         {
             EditorWindowTools.EditorGUILayoutEndGroup();
         }
     }
 }
Exemplo n.º 27
0
        public override void OnInspectorGUI()
        {
            var trigger = target as ConditionObserver;

            if (trigger == null)
            {
                return;
            }

            serializedObject.Update();

            // Reference database:
            EditorTools.selectedDatabase = EditorGUILayout.ObjectField(new GUIContent("Reference Database", "Database to use for pop-up menus. Assumes this database will be in memory at runtime."), EditorTools.selectedDatabase, typeof(DialogueDatabase), false) as DialogueDatabase;

            // Frequency, once, observeGameObject:
            EditorGUILayout.PropertyField(serializedObject.FindProperty("frequency"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("once"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("observeGameObject"), true);

            // Condition:
            foldouts.conditionFoldout = EditorWindowTools.EditorGUILayoutFoldout("Conditions", "Conditions that must be true for trigger to fire.", foldouts.conditionFoldout);
            if (foldouts.conditionFoldout)
            {
                try
                {
                    EditorWindowTools.EditorGUILayoutBeginGroup();
                    ConditionPropertyDrawer.hideMainFoldout = true;
                    var conditionProperty = serializedObject.FindProperty("condition");
                    conditionProperty.isExpanded = true;
                    EditorGUILayout.PropertyField(conditionProperty, true);
                    ConditionPropertyDrawer.hideMainFoldout = false;
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }

            // Action:
            foldouts.actionFoldout = EditorWindowTools.EditorGUILayoutFoldout("Actions", "Actions to run when the observed condition becomes true.", foldouts.actionFoldout);
            if (foldouts.actionFoldout)
            {
                try
                {
                    EditorWindowTools.EditorGUILayoutBeginGroup();
                    serializedObject.ApplyModifiedProperties();

                    // Lua code / wizard:
                    if (EditorTools.selectedDatabase != luaScriptWizard.database)
                    {
                        luaScriptWizard.database = EditorTools.selectedDatabase;
                        luaScriptWizard.RefreshWizardResources();
                    }

                    EditorGUI.BeginChangeCheck();

                    var newLuaCode = luaScriptWizard.Draw(new GUIContent("Lua Code", "The Lua code to run when the condition is true"), trigger.luaCode);

                    // Sequence:
                    var newSequence = SequenceEditorTools.DrawLayout(new GUIContent("Sequence"), trigger.sequence, ref sequenceRect, ref sequenceSyntaxState);

                    // Quest:
                    if (EditorTools.selectedDatabase != questPicker.database)
                    {
                        questPicker.database = EditorTools.selectedDatabase;
                        questPicker.UpdateTitles();
                    }
                    questPicker.Draw();
                    var newQuestName          = questPicker.currentQuest;
                    var newUseQuestNamePicker = questPicker.usePicker;

                    var changed = EditorGUI.EndChangeCheck();

                    serializedObject.Update();

                    if (changed)
                    {
                        serializedObject.FindProperty("luaCode").stringValue          = newLuaCode;
                        serializedObject.FindProperty("sequence").stringValue         = newSequence;
                        serializedObject.FindProperty("questName").stringValue        = newQuestName;
                        serializedObject.FindProperty("useQuestNamePicker").boolValue = newUseQuestNamePicker;
                    }

                    EditorGUILayout.PropertyField(serializedObject.FindProperty("questState"), true);

                    // Alert message:
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("alertMessage"), true);
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("textTable"), true);

                    // Send Messages list:
                    DrawSendMessageAction();
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }
            serializedObject.ApplyModifiedProperties();
        }
        protected virtual void DrawActions()
        {
            foldouts.actionFoldout = EditorWindowTools.EditorGUILayoutFoldout("Actions", "Perform these actions when trigger fires.", foldouts.actionFoldout);
            if (foldouts.actionFoldout)
            {
                try
                {
                    EditorWindowTools.EditorGUILayoutBeginGroup();

                    EditorGUILayout.BeginHorizontal();
                    if (showSetQuestStateAction || showRunLuaCodeAction || showPlaySequenceAction || showAlertAction || showSendMessagesAction || showBarkAction ||
                        showConversationAction || showSetActiveAction || showSetEnabledAction || showAnimatorStatesAction || showUnityEventAction)
                    {
                        EditorGUILayout.LabelField("Actions are performed in this order:", EditorTools.GUILayoutLabelWidth("Actions are performed in this order:"));
                    }
                    else
                    {
                        EditorGUILayout.LabelField("Click Add Action:", EditorTools.GUILayoutLabelWidth("Click Add Action to add new action types:"));
                    }
                    GUILayout.FlexibleSpace();
                    EditorGUI.BeginDisabledGroup(showSetQuestStateAction && showRunLuaCodeAction && showPlaySequenceAction && showAlertAction && showSendMessagesAction && showBarkAction &&
                                                 showConversationAction && showSetActiveAction && showSetEnabledAction && showAnimatorStatesAction && showUnityEventAction);
                    if (GUILayout.Button("Add Action", EditorTools.GUILayoutButtonWidth("Add Action")))
                    {
                        ShowAddActionMenu();
                    }
                    EditorGUI.EndDisabledGroup();
                    EditorGUILayout.EndHorizontal();

                    if (showSetQuestStateAction)
                    {
                        DrawQuestAction();
                    }
                    if (showRunLuaCodeAction)
                    {
                        DrawLuaAction();
                    }
                    if (showPlaySequenceAction)
                    {
                        DrawSequenceAction();
                    }
                    if (showAlertAction)
                    {
                        DrawAlertAction();
                    }
                    if (showSendMessagesAction)
                    {
                        DrawSendMessageAction();
                    }
                    if (showBarkAction)
                    {
                        DrawBarkAction();
                    }
                    if (showConversationAction)
                    {
                        DrawConversationAction();
                    }
                    if (showSetActiveAction)
                    {
                        DrawSetActiveAction();
                    }
                    if (showSetEnabledAction)
                    {
                        DrawSetEnabledAction();
                    }
                    if (showAnimatorStatesAction)
                    {
                        DrawSetAnimatorStateAction();
                    }
                    if (showUnityEventAction)
                    {
                        DrawUnityEventAction();
                    }
                }
                finally
                {
                    EditorWindowTools.EditorGUILayoutEndGroup();
                }
            }
        }