private static void ConvertItems(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.items = new List<Item>();
     foreach (var chatMapperItem in chatMapperProject.Assets.Items) {
         database.items.Add (new Item (chatMapperItem));
     }
 }
 private static void ConvertLocations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.locations = new List<Location>();
     foreach (var chatMapperLocation in chatMapperProject.Assets.Locations) {
         database.locations.Add (new Location (chatMapperLocation));
     }
 }
 private static void ConvertActors(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.actors = new List<Actor>();
     foreach (var chatMapperActor in chatMapperProject.Assets.Actors) {
         database.actors.Add (new Actor (chatMapperActor));
     }
 }
 private static void ConvertProjectAttributes(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.version = chatMapperProject.Version;
     database.author = chatMapperProject.Author;
     database.description = chatMapperProject.Description;
     database.emphasisSettings = new EmphasisSetting[4];
     database.emphasisSettings[0] = new EmphasisSetting(chatMapperProject.EmphasisColor1, chatMapperProject.EmphasisStyle1);
     database.emphasisSettings[1] = new EmphasisSetting(chatMapperProject.EmphasisColor2, chatMapperProject.EmphasisStyle2);
     database.emphasisSettings[2] = new EmphasisSetting(chatMapperProject.EmphasisColor3, chatMapperProject.EmphasisStyle3);
     database.emphasisSettings[3] = new EmphasisSetting(chatMapperProject.EmphasisColor4, chatMapperProject.EmphasisStyle4);
 }
 private static void ConvertConversations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.conversations = new List<Conversation>();
     foreach (var chatMapperConversation in chatMapperProject.Assets.Conversations) {
         Conversation conversation = new Conversation(chatMapperConversation);
         SetConversationStartCutsceneToNone(conversation);
         foreach (DialogueEntry entry in conversation.dialogueEntries) {
             foreach (Link link in entry.outgoingLinks) {
                 if (link.destinationConversationID == 0) link.destinationConversationID = conversation.id;
                 if (link.originConversationID == 0) link.originConversationID = conversation.id;
             }
         }
         database.conversations.Add(conversation);
     }
 }
 /// <summary>
 /// Converts a Chat Mapper project to a dialogue database.
 /// </summary>
 /// <returns>The dialogue database, or <c>null</c> if a conversation error occurred.</returns>
 /// <param name="chatMapperProject">Chat Mapper project.</param>
 public static DialogueDatabase ConvertToDialogueDatabase(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject)
 {
     DialogueDatabase database = ScriptableObject.CreateInstance<DialogueDatabase>();
     if (database == null) {
         if (DialogueDebug.LogErrors) Debug.LogError(string.Format("{0}: Couldn't convert Chat Mapper project '{1}'.", new System.Object[] { DialogueDebug.Prefix, chatMapperProject.Title }));
     } else {
         ConvertProjectAttributes(chatMapperProject, database);
         ConvertActors(chatMapperProject, database);
         ConvertItems(chatMapperProject, database);
         ConvertLocations(chatMapperProject, database);
         ConvertVariables(chatMapperProject, database);
         ConvertConversations(chatMapperProject, database);
         if (DialogueDebug.LogInfo) Debug.Log(string.Format("{0}: Converted Chat Mapper project '{1}' containing {2} actors, {3} conversations, {4} items (quests), {5} variables, and {6} locations.",
                                                            new System.Object[] { DialogueDebug.Prefix, chatMapperProject.Title, database.actors.Count, database.conversations.Count, database.items.Count, database.variables.Count, database.locations.Count }));
     }
     return database;
 }
 private static void ConvertVariables(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.variables = new List<Variable>();
     int id = 0;
     foreach (var chatMapperVariable in chatMapperProject.Assets.UserVariables) {
         Variable variable = new Variable(chatMapperVariable);
         variable.id = id;
         id++;
         database.variables.Add(variable);
     }
 }
		private void DrawSimpleControllerSection(PixelCrushers.DialogueSystem.SimpleController simpleController) {
			EditorWindowTools.StartIndentedSection();
			if ((simpleController.idle == null) || (simpleController.runForward == null)) {
				EditorGUILayout.HelpBox("The player uses third-person shooter style controls. At a minimum, Idle and Run animations are required. Click Select Player to customize further.", MessageType.Info);
			}
			simpleController.idle = EditorGUILayout.ObjectField("Idle Animation", simpleController.idle, typeof(AnimationClip), false) as AnimationClip;
			simpleController.runForward = EditorGUILayout.ObjectField("Run Animation", simpleController.runForward, typeof(AnimationClip), false) as AnimationClip;
			EditorWindowTools.StartIndentedSection();
			EditorGUILayout.LabelField("Optional", EditorStyles.boldLabel);
			simpleController.runSpeed = EditorGUILayout.FloatField("Run Speed", simpleController.runSpeed);
			simpleController.runBack = EditorGUILayout.ObjectField("Run Back", simpleController.runBack, typeof(AnimationClip), false) as AnimationClip;
			simpleController.aim = EditorGUILayout.ObjectField("Aim", simpleController.aim, typeof(AnimationClip), false) as AnimationClip;
			simpleController.fire = EditorGUILayout.ObjectField("Fire", simpleController.fire, typeof(AnimationClip), false) as AnimationClip;
			if (simpleController.fire != null) {
				if (simpleController.upperBodyMixingTransform == null) EditorGUILayout.HelpBox("Specify the upper body mixing transform for the fire animation.", MessageType.Info);
				simpleController.upperBodyMixingTransform = EditorGUILayout.ObjectField("Upper Body Transform", simpleController.upperBodyMixingTransform, typeof(Transform), true) as Transform;
				simpleController.fireLayerMask = EditorGUILayout.LayerField("Fire Layer", simpleController.fireLayerMask);
				simpleController.fireSound = EditorGUILayout.ObjectField("Fire Sound", simpleController.fireSound, typeof(AudioClip), false) as AudioClip;
				AudioSource audioSource = pcObject.GetComponent<AudioSource>();
				if (audioSource == null) {
					audioSource = pcObject.AddComponent<AudioSource>();
					audioSource.playOnAwake = false;
					audioSource.loop = false;
				}
				
			}
			EditorWindowTools.EndIndentedSection();
			EditorWindowTools.EndIndentedSection();
		}
 private bool IsChatMapperProjectMissingValues(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject)
 {
     return (chatMapperProject == null) ||
         ((chatMapperProject.Assets.Actors.Count > 0) &&
          (chatMapperProject.Assets.Actors[0].Fields.Count > 0) &&
          (chatMapperProject.Assets.Actors[0].Fields[0].Value == null));
 }
 private bool IsValidChatMapperProject(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, string projectFilename)
 {
     if (chatMapperProject == null) {
         return false;
     } else if (IsChatMapperProjectMissingValues(chatMapperProject)) {
         Debug.LogError(string.Format("{0}: Chat Mapper may not have exported {1} correctly. Please use Chat Mapper 1.3.x or 1.6.1.1+.", DialogueDebug.Prefix, projectFilename));
         return false;
     } else {
         return true;
     }
 }
 private void CreateDialogueDatabase(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject)
 {
     try {
         string databaseAssetName = prefs.useProjectName ? chatMapperProject.Title : prefs.databaseName;
         DialogueDatabase database = LoadOrCreateDatabase(databaseAssetName);
         if (database == null) {
             Debug.LogError(string.Format("{0}: Couldn't create asset '{1}'.", DialogueDebug.Prefix, databaseAssetName));
         } else {
             ConvertProjectAttributes(chatMapperProject, database);
             ConvertActors(chatMapperProject, database);
             ConvertItems(chatMapperProject, database);
             ConvertLocations(chatMapperProject, database);
             ConvertVariables(chatMapperProject, database);
             ConvertConversations(chatMapperProject, database);
             SaveDatabase(database, databaseAssetName);
             Debug.Log(string.Format("{0}: Created database '{1}' containing {2} actors, {3} conversations, {4} items (quests), {5} variables, and {6} locations.",
                 DialogueDebug.Prefix, databaseAssetName, database.actors.Count, database.conversations.Count, database.items.Count, database.variables.Count, database.locations.Count));
         }
     } finally {
         EditorUtility.ClearProgressBar();
     }
 }
 private void ConvertLocations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.locations = new List<Location>();
     chatMapperProject.Assets.Locations.ForEach(l => database.locations.Add(new Location(l)));
 }
 private void ConvertItems(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.items = new List<Item>();
     chatMapperProject.Assets.Items.ForEach(i => database.items.Add(new Item(i)));
 }
 private void ConvertConversations(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.conversations = new List<Conversation>();
     foreach (var chatMapperConversation in chatMapperProject.Assets.Conversations) {
         Conversation conversation = new Conversation(chatMapperConversation);
         SetConversationStartCutsceneToNone(conversation);
         ConvertAudioFilesToSequences(conversation);
         database.conversations.Add(conversation);
     }
 }
 private void ConvertActors(PixelCrushers.DialogueSystem.ChatMapper.ChatMapperProject chatMapperProject, DialogueDatabase database)
 {
     database.actors = new List<Actor>();
     chatMapperProject.Assets.Actors.ForEach(a => database.actors.Add(new Actor(a)));
     database.actors.ForEach(a => FindPortraitTexture(a));
 }