private void InterpToPose(SequenceElement start, SequenceElement end, float t)
 {
     model.gc.shoulderFlexionSlider.slider.value    = Interpolation.Interpolate(start.shoulderFlexionAngle, end.shoulderFlexionAngle, t, InterpolationType.EaseInOutSine);
     model.gc.anteriorHipFlexionSlider.slider.value = Interpolation.Interpolate(start.anteriorHipFlexionAngle, end.anteriorHipFlexionAngle, t, InterpolationType.EaseInOutSine);
     model.gc.lateralHipFlexionSlider.slider.value  = Interpolation.Interpolate(start.lateralHipFlexionAngle, end.lateralHipFlexionAngle, t, InterpolationType.EaseInOutSine);
     if (model.gc.sequenceMoveLabel)
     {
         Color c = model.gc.sequenceMoveLabel.color;
         model.gc.sequenceMoveLabel.color = new Color(c.r, c.g, c.b,
                                                      Interpolation.Interpolate(0, 1, t, InterpolationType.EaseInOutSine));
     }
 }
        private IEnumerator ExecuteSequence(List <SequenceElement> sequenceElements)
        {
            SequenceInProgress = true;
            foreach (SequenceElement sequenceElement in sequenceElements)
            {
                if (model.gc.sequenceMoveLabel)
                {
                    model.gc.sequenceMoveLabel.text = sequenceElement.name;
                }
                //create a dummy sequence element to lerp from
                SequenceElement start =
                    new SequenceElement {
                    shoulderFlexionAngle    = model.gc.shoulderFlexionSlider.slider.value,
                    anteriorHipFlexionAngle = model.gc.anteriorHipFlexionSlider.slider.value,
                    lateralHipFlexionAngle  = model.gc.lateralHipFlexionSlider.slider.value
                };
                float transitionTimeElapsed = 0;
                float holdDurationElapsed   = 0;


                while (transitionTimeElapsed < sequenceElement.transitionTime)
                {
                    InterpToPose(start, sequenceElement, transitionTimeElapsed / sequenceElement.transitionTime);
                    transitionTimeElapsed += Time.deltaTime;
                    yield return(null);
                }

                model.gc.shoulderFlexionSlider.slider.value    = sequenceElement.shoulderFlexionAngle;
                model.gc.anteriorHipFlexionSlider.slider.value = sequenceElement.anteriorHipFlexionAngle;
                model.gc.lateralHipFlexionSlider.slider.value  = sequenceElement.lateralHipFlexionAngle;

                while (holdDurationElapsed < sequenceElement.holdDuration)
                {
                    holdDurationElapsed += Time.deltaTime;
                    yield return(null);
                }
            }

            SequenceInProgress = false;
        }