using UnityEngine; namespace PixelCrushers.DialogueSystem.SpineSupport { /// /// This subclass of StandardUISubtitlePanel is aware of characters that /// have SpineDialogueActor components. /// public class SpineSubtitlePanel : StandardUISubtitlePanel { private SpineDialogueActor visibleSpineDialogueActor = null; public override void OpenOnStartConversation(Sprite portraitSprite, string portraitName, DialogueActor dialogueActor) { base.OpenOnStartConversation(portraitSprite, portraitName, dialogueActor); if (dialogueActor != null) ShowSpineDialogueActor(dialogueActor.transform); } public override void ShowSubtitle(Subtitle subtitle) { base.ShowSubtitle(subtitle); ShowSpineDialogueActor(subtitle.speakerInfo.transform); } public virtual void ShowSpineDialogueActor(Transform actorTransform) { if (actorTransform == null) return; var spineDialogueActor = actorTransform.GetComponent(); if (spineDialogueActor != visibleSpineDialogueActor) { if (visibleSpineDialogueActor != null) visibleSpineDialogueActor.Hide(this); if (spineDialogueActor != null) spineDialogueActor.Show(this); visibleSpineDialogueActor = spineDialogueActor; } } public override void Close() { if (visibleSpineDialogueActor != null) visibleSpineDialogueActor.Hide(this); visibleSpineDialogueActor = null; base.Close(); } } }