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); }