private void playMain()
 {
     if ((transitionClip.getDuration() - transitionClip.getTime()) < 0.05f)
     {
         //currentlyPlaying = transitionEmotion;
         fPlayMainAfterTransition = false;
         transitionClip.setWeight(0.0f);
         newMainClip.reset();
         newMainClip.setWeight(1.0f);
         //normalize = true;
         blendingDone = true;
     }
 }
    // Function that handles the actual blending. Called each frame in update
    private void playTransition()
    {
        // Initialize Transition when it begins
        if (fInitTransition)
        {
            newMainClip.reset();  // TODO: Might need to comment this back in if auto-main-loop doesnt work

            fInitTransition = false;
        }

        // LERP Transition and currently playing emotion
        // Interpolation website: http://paulbourke.net/miscellaneous/interpolation/
        currentTime += Time.deltaTime;
        float mu = currentTime / blendDuration;
        //float t;
        float upcomingBlendWeight = 0;
        float pStart = 0f;
        float pEnd   = 1f;

        switch (interpolationMode)
        {
        case "Linear":
            upcomingBlendWeight = IFALerp.linear(pStart, pEnd, mu);
            break;

        case "Cubic":
            upcomingBlendWeight = IFALerp.cubic(pStart, pEnd, mu);
            break;

        case "Bezier":
            upcomingBlendWeight = IFALerp.bezier(pStart, pEnd, mu, pBezierP1, pBezierP2);
            break;

        default:
            break;
        }

        // Draw for display purposes
        if (drawGraphOnImage)
        {
            drawGraphOnImage.drawPoint(0, pStart, Color.red);
            drawGraphOnImage.drawPoint(1, pEnd, Color.green);
            drawGraphOnImage.drawPoint(mu, upcomingBlendWeight, Color.black);
        }



        // Set Blend Weights
        if (oldMainClips != null)
        {
            for (int i = 0; i < oldMainClips.Count; i++)
            {
                oldMainClips[i].setWeight((1f - upcomingBlendWeight) * oldMainClipsInitialWeight[i]);
            }
        }
        newMainClip.setWeight(upcomingBlendWeight);

        // TODO: Update Clips?
        foreach (IFAClip clip in allClips)
        {
            clip.update();
        }


        // End Transition CleanUp, Prepare playing Main
        if (currentTime >= blendDuration)
        {
            blendingDone = true;
        }
    }
    // Function that handles the actual blending. Called each frame in update
    private void playTransition()
    {
        // Initialize Transition when it begins
        if (fInitTransition)
        {
            transitionClip.reset();

            fInitTransition          = false;
            fPlayMainAfterTransition = false;   // In case a new transition starts while a transitionIn animation is still playing
        }

        // LERP Transition and currently playing emotion
        // Interpolation website: http://paulbourke.net/miscellaneous/interpolation/
        currentTime += Time.deltaTime;
        float mu = currentTime / blendDuration;
        //float t;
        float upcomingBlendWeight = 0;
        float pStart = 0f;
        float pEnd   = 1f;

        switch (interpolationMode)
        {
        case "Linear":
            upcomingBlendWeight = IFALerp.linear(pStart, pEnd, mu);
            break;

        case "Cubic":
            upcomingBlendWeight = IFALerp.cubic(pStart, pEnd, mu);
            break;

        case "Bezier":
            upcomingBlendWeight = IFALerp.bezier(pStart, pEnd, mu, pBezierP1, pBezierP2);
            break;

        default:
            break;
        }

        // Draw for display purposes
        if (drawGraphOnImage)
        {
            drawGraphOnImage.drawPoint(0, pStart, Color.red);
            drawGraphOnImage.drawPoint(1, pEnd, Color.green);
            drawGraphOnImage.drawPoint(mu, upcomingBlendWeight, Color.black);
        }


        // Set Blend Weights
        if (oldMainClips != null)
        {
            for (int i = 0; i < oldMainClips.Count; i++)
            {
                oldMainClips[i].setWeight((1f - upcomingBlendWeight) * oldMainClipsInitialWeight[i]);
            }
        }
        transitionClip.setWeight(upcomingBlendWeight);

        // Update Clips?
        foreach (IFAClip clip in allClips)
        {
            clip.update();
        }


        // End Transition CleanUp, Prepare playing Main
        if (currentTime >= blendDuration)
        {
            fPlayMainAfterTransition = true;
            fInitTransition          = true;
            currentTime = 0;
            //previousEmotionNumber = emotionNumber;
            transitionDone = true;
        }
        //normalize = true;
    }