/// <summary> /// Gets the character info for a character given its actor ID and transform. /// </summary> /// <returns> /// The character info. /// </returns> /// <param name='id'> /// The character's actor ID in the dialogue database. /// </param> /// <param name='character'> /// The transform of the character's GameObject. /// </param> public CharacterInfo GetCharacterInfo(int id, Transform character) { if (!m_characterInfoCache.ContainsKey(id)) { Actor actor = null; var dialogueActor = DialogueActor.GetDialogueActorComponent(character); if (dialogueActor != null) { actor = m_database.GetActor(dialogueActor.actor); } if (actor == null) { actor = m_database.GetActor(id); } string nameInDatabase = (actor != null) ? actor.Name : string.Empty; if (character == null && !string.IsNullOrEmpty(nameInDatabase)) { character = CharacterInfo.GetRegisteredActorTransform(nameInDatabase); } var actorID = (actor != null) ? actor.id : id; //CharacterInfo characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), GetPortrait(character, actor)); CharacterInfo characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), null); if (actor != null) { actor.AssignPortraitSprite((sprite) => { characterInfo.portrait = sprite; }); } m_characterInfoCache.Add(id, characterInfo); } return(m_characterInfoCache[id]); }
/// <summary> /// Gets the character info for a character given its actor ID and transform. /// </summary> /// <returns> /// The character info. /// </returns> /// <param name='id'> /// The character's actor ID in the dialogue database. /// </param> /// <param name='character'> /// The transform of the character's GameObject. /// </param> public CharacterInfo GetCharacterInfo(int id, Transform character) { if (!m_characterInfoCache.ContainsKey(id)) { Actor actor = null; var dialogueActor = DialogueActor.GetDialogueActorComponent(character); if (dialogueActor != null) { actor = m_database.GetActor(dialogueActor.actor); } if (actor == null) { actor = m_database.GetActor(id); } string nameInDatabase = (actor != null) ? actor.Name : string.Empty; if (character == null && !string.IsNullOrEmpty(nameInDatabase)) { character = CharacterInfo.GetRegisteredActorTransform(nameInDatabase); } var actorID = (actor != null) ? actor.id : id; var portrait = (dialogueActor != null) ? dialogueActor.GetPortraitSprite() : null; if (portrait == null) { portrait = GetPortrait(character, actor); } CharacterInfo characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), portrait); if (characterInfo.portrait == null && actor != null) { actor.AssignPortraitSprite((sprite) => { characterInfo.portrait = sprite; }); } // Don't cache null actor ID -1: if (id == -1) { return(characterInfo); } // Otherwise cache to speed up lookups: m_characterInfoCache.Add(id, characterInfo); } return(m_characterInfoCache[id]); }