public override void Animate(int frameNumber, float transition)
    {
        if (this.morphTransform == null)
        {
            return;
        }

        SkinnedMeshRenderer mesh = morphTransform.GetMesh();

        if (mesh != null)
        {
            //Allows us to check if this channel was updates this frame.
            morphTransform.ToggleUpdated(true);

            float keyValue = CalculateKeyframe(frameNumber);

            int   blendshapeIndex = morphTransform.GetIndex();
            float finalBlendValue = Mathf.SmoothStep(mesh.GetBlendShapeWeight(blendshapeIndex), keyValue, transition);
            mesh.SetBlendShapeWeight(blendshapeIndex, finalBlendValue);
        }
    }