@Override public void control(Actor actor, float deltaSeconds) { long deltaMillis = (long) (deltaSeconds * 1000); timePeriodManager.update(deltaMillis); float angle; float normalizedValue; int subPeriod = timePeriodManager.getCurrentSubPeriod(); // Rotate up if (subPeriod == rotateUpSubPeriod) { normalizedValue = timePeriodManager.getNormalizedCurrentSubPeriodTime(); Interpolation interpolation = Interpolation.linear; if (this.interpolation != null) { interpolation = this.interpolation; } angle = interpolation.apply(minAngle, maxAngle, normalizedValue); } // Stall up else if (subPeriod == stallUpSubPeriod) { angle = maxAngle; } // Rotate down else if (subPeriod == rotateDownSubPeriod) { normalizedValue = timePeriodManager.getNormalizedCurrentSubPeriodTime(); Interpolation interpolation = Interpolation.linear; if (this.interpolation != null) { interpolation = this.interpolation; } angle = interpolation.apply(maxAngle, minAngle, normalizedValue); } // Stall up else { angle = minAngle; } actor.setRotation(angle); }