private void UpdateLength(string conversation, bool jumpToSpecificEntry, int entryID = -1)
        {
            var duration = PreviewUI.GetSequenceDuration(conversation, jumpToSpecificEntry ? entryID : -1);

            Debug.Log("Best estimate duration: " + duration + "sec");
            var clip = TimelineEditor.selectedClip;

            if (clip == null)
            {
                return;
            }
            var startConversationClip = clip.asset as StartConversationClip;

            if (startConversationClip == null)
            {
                return;
            }
            startConversationClip.SetDuration(duration);
        }
        private void UpdateLength(ContinueConversationBehaviour.Operation operation)
        {
            if (operation != ContinueConversationBehaviour.Operation.Continue)
            {
                return;
            }

            var timelineAsset = TimelineEditor.inspectedAsset;
            var currentTime   = TimelineEditor.selectedClip.start;

            // Find the latest StartConversationClip up to the current time:
            double startConversationTime = 0;
            string conversationTitle     = string.Empty;
            int    startingEntryID       = -1;

            foreach (var track in timelineAsset.GetOutputTracks())
            {
                foreach (var clip in track.GetClips())
                {
                    if (clip.start > currentTime)
                    {
                        break;
                    }
                    if (clip.asset.GetType() == typeof(StartConversationClip))
                    {
                        var startConversationClip = clip.asset as StartConversationClip;
                        startConversationTime = clip.start;
                        conversationTitle     = startConversationClip.template.conversation;
                        startingEntryID       = startConversationClip.template.jumpToSpecificEntry ? startConversationClip.template.entryID : -1;
                    }
                }
            }

            // Count how many continues have passed since last StartConversationClip:
            int numContinues = 0;

            foreach (var track in timelineAsset.GetOutputTracks())
            {
                foreach (var clip in track.GetClips())
                {
                    if (clip.start > currentTime)
                    {
                        break;
                    }
                    if (clip.start > startConversationTime &&
                        clip.asset.GetType() == typeof(ContinueConversationClip))
                    {
                        numContinues++;
                    }
                }
            }

            var duration = PreviewUI.GetSequenceDuration(conversationTitle, startingEntryID, numContinues);

            Debug.Log("Best estimate duration: " + duration + "sec");
            var continueConversationClip = TimelineEditor.selectedClip.asset as ContinueConversationClip;

            if (continueConversationClip == null)
            {
                return;
            }
            continueConversationClip.SetDuration(duration);
        }