gov.nasa.worldwind.animation.BasicAnimator Maven / Gradle / Ivy
The newest version!
/*
* Copyright (C) 2012 United States Government as represented by the Administrator of the
* National Aeronautics and Space Administration.
* All Rights Reserved.
*/
package gov.nasa.worldwind.animation;
/**
* @author jym
* @version $Id: BasicAnimator.java 1171 2013-02-11 21:45:02Z dcollins $
*/
/**
* A base class for an interpolating Animator
.
*/
public class BasicAnimator implements Animator
{
private boolean stopOnInvalidState = false;
private boolean lastStateValid = true;
private boolean hasNext = true;
/**
* Used to drive the animators next value based on the interpolant returned by the
* Interpolator
's next interpolant
*/
protected Interpolator interpolator;
/**
* Constructs a BasicAnimator
. Sets the Animator
's Interpolator
to
* null
.
*/
public BasicAnimator()
{
interpolator = null;
}
/**
* Constructs a BasicAnimator
. The next
method will use the passed
* Interpolator
to retrieve the interpolant
*
* @param interpolator The Interpolator
to be used to get the interpolant for
* setting the next value.
*/
public BasicAnimator(Interpolator interpolator)
{
this.interpolator = interpolator;
}
/**
* Calls the set
method with the next interpolant
as determined
* by the interpolator
member.
*/
public void next()
{
set(this.interpolator.nextInterpolant());
}
/**
* Calls the setImpl method with the interpolant value. Deriving classes are expected to
* implement the desired action of a set operation in thier setImpl
method.
*
* @param interpolant A value between 0 and 1.
*/
public void set(double interpolant)
{
this.setImpl(interpolant);
if (isStopOnInvalidState() && !isLastStateValid())
{
this.stop();
}
}
/**
* Returns true
if the Animator
has more elements.
*
* @return true
if the Animator
has more elements
*/
public boolean hasNext()
{
return this.hasNext;
}
/**
* Starts the Animator
, hasNext
will now return true
*/
public void start()
{
this.hasNext = true;
}
/**
* Stops the Animator
, hasNext
will now return false
*/
public void stop()
{
this.hasNext = false;
}
/**
* No-op intended to be overrided by deriving classes. Deriving classes are expected to
* implement the desired action of a set operation in this method.
*
* @param interpolant A value between 0 and 1.
*/
protected void setImpl(double interpolant)
{
}
public void setStopOnInvalidState(boolean stop)
{
this.stopOnInvalidState = stop;
}
public boolean isStopOnInvalidState()
{
return this.stopOnInvalidState;
}
protected void flagLastStateInvalid()
{
this.lastStateValid = false;
}
protected boolean isLastStateValid()
{
return this.lastStateValid;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy