public void ProcessAnimation(AnimationStream stream)
    {
        if (weightA == 0 && weightB == 0)
        {
            return;
        }

        var A = stream.GetInputStream(0);
        var B = stream.GetInputStream(1);

        if (weightB == 0)
        {
            if (weightA == 1)
            {
                SMixerUtility.StreamSet(handles, stream, A);
            }
            else
            {
                SMixerUtility.StreamMix(handles, stream, stream, A, weightA);   // blend-in transition to A from stream
            }
        }
        else
        {
            if (weightA == 1)
            {
                SMixerUtility.StreamMix(handles, stream, A, B, weightB); // blend-in transition to B from A
            }
            else
            {
                SMixerUtility.StreamMixMix(handles, stream, stream, A, B, weightA, weightB);
            }
        }
    }
 public void ProcessRootMotion(AnimationStream stream)
 {
     if (ApplyRootMotion)
     {
         SMixerUtility.ProcessRootMotion(stream, weightA, weightB);
     }
 }