/** * Creates a KeyFrameInterpolator, with {@code frame} as associated {@link #frame()}. * * <p>The {@link #frame()} can be set or changed using {@link #setFrame(Frame)}. * * <p>{@link #interpolationTime()}, {@link #interpolationSpeed()} and {@link * #interpolationPeriod()} are set to their default values. */ public KeyFrameInterpolator(AbstractScene scn, Frame frame) { gScene = scn; keyFrameList = new ArrayList<KeyFrame>(); path = new ArrayList<Frame>(); mainFrame = null; period = 40; interpolationTm = 0.0f; interpolationSpd = 1.0f; interpolationStrt = false; lpInterpolation = false; pathIsValid = false; valuesAreValid = true; currentFrmValid = false; setFrame(frame); currentFrame0 = keyFrameList.listIterator(); currentFrame1 = keyFrameList.listIterator(); currentFrame2 = keyFrameList.listIterator(); currentFrame3 = keyFrameList.listIterator(); interpolationTimerTask = new TimingTask() { public void execute() { update(); } }; gScene.registerTimingTask(interpolationTimerTask); }
protected KeyFrameInterpolator(KeyFrameInterpolator otherKFI) { this.gScene = otherKFI.gScene; this.path = new ArrayList<Frame>(); ListIterator<Frame> frameIt = otherKFI.path.listIterator(); while (frameIt.hasNext()) { this.path.add(frameIt.next().get()); } this.setFrame(otherKFI.frame()); this.period = otherKFI.period; this.interpolationTm = otherKFI.interpolationTm; this.interpolationSpd = otherKFI.interpolationSpd; this.interpolationStrt = otherKFI.interpolationStrt; this.lpInterpolation = otherKFI.lpInterpolation; this.pathIsValid = otherKFI.pathIsValid; this.valuesAreValid = otherKFI.valuesAreValid; this.currentFrmValid = otherKFI.currentFrmValid; this.keyFrameList = new ArrayList<KeyFrame>(); for (KeyFrame element : otherKFI.keyFrameList) { KeyFrame kf = (KeyFrame) element.get(); this.keyFrameList.add(kf); } this.currentFrame0 = keyFrameList.listIterator(otherKFI.currentFrame0.nextIndex()); this.currentFrame1 = keyFrameList.listIterator(otherKFI.currentFrame1.nextIndex()); this.currentFrame2 = keyFrameList.listIterator(otherKFI.currentFrame2.nextIndex()); this.currentFrame3 = keyFrameList.listIterator(otherKFI.currentFrame3.nextIndex()); this.interpolationTimerTask = new TimingTask() { public void execute() { update(); } }; gScene.registerTimingTask(interpolationTimerTask); this.invalidateValues(); }