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; }