// --------------------------------------------------------------------

        private void Awake()
        {
            mApplier = GetComponent <FaceSyncApplier>();
            for (int i = 0; i < Entries.Count; ++i)
            {
                Entries[i].PrepareNextPlay();
            }
        }
        // --------------------------------------------------------------------

        private void CacheComponents()
        {
            if (!mSource)
            {
                mSource = GetComponent <AudioSource>();
            }
            if (!mApplier)
            {
                mApplier = GetComponent <FaceSyncApplier>();
            }
        }
            // --------------------------------------------------------------------

            public void Update(FaceSyncApplier applier)
            {
                float t = (Time.realtimeSinceStartup - mNextPlay) / BlendSet.Duration;

                if (t > 0f)
                {
                    if (t > 1f)
                    {
                        PrepareNextPlay();
                    }
                    else
                    {
                        applier.ApplyBlendSet(BlendSet, t);
                    }
                }
            }
        // --------------------------------------------------------------------

        private void Update()
        {
            if (!mApplier)
            {
                mApplier = GetComponent <FaceSyncApplier>();
            }

            if (BlendSet)
            {
                for (int i = 0; i < BlendSet.BlendShapes.Count; ++i)
                {
                    FaceSyncBlendSet.BlendSetEntry entry = BlendSet.BlendShapes[i];
                    if (entry != null)
                    {
                        mApplier.ApplyBlendShape(entry.BlendShape, entry.Value);
                    }
                }
            }
        }