private void CreateRhubarb()
        {
            TimelineAsset        timelineAsset = (TimelineAsset)_timeline.playableAsset;
            RhubarbPlayableTrack track         = timelineAsset.CreateTrack <RhubarbPlayableTrack>(null, "Rhubarb Track");

            _timeline.SetGenericBinding(track, _rhubarbSprite);
            string       audioPath    = Path.Combine(Directory.GetCurrentDirectory(), AssetDatabase.GetAssetPath(_audioClip));
            RhubarbTrack rhubarbTrack = RhubarbEditorProcess.Auto(_rhubarbPath, audioPath, _isUseDialog ? _dialogText : null, _isMouthShapeG, _isMouthShapeH, _isMouthShapeX);

            for (int i = 0; i < rhubarbTrack.keyframes.Count - 1; i++)
            {
                RhubarbKeyframe keyframe     = rhubarbTrack.keyframes[i];
                RhubarbKeyframe nextKeyframe = rhubarbTrack.keyframes[i + 1];
                TimelineClip    clip         = track.CreateClip <RhubarbPlayableClip>();
                clip.start    = Rhubarb.FrameToTime(keyframe.frame);
                clip.duration = Rhubarb.FrameToTime(nextKeyframe.frame - keyframe.frame);
                ((RhubarbPlayableClip)clip.asset).template.MouthShape = keyframe.phoneme;
            }
        }
 private bool IsRhubarbPathValid()
 {
     return(RhubarbEditorProcess.IsValid(_rhubarbPath));
 }