/*
Copyright (C) 2007, 2010 - Bit-Blot

This file is part of Aquaria.

Aquaria is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
#ifndef _interpolator_
#define _interpolator_

#include "Base.h"

class Interpolator;

class Interpolator
{
public:
	Interpolator () : updatee (0), interpolating (false), loopType (0), useSpeed (false), pingPong (false)
	{
		initialDelay = 0.0f;
		timeMultiplier = 1;
		timePassed=to=speed=from=timePeriod=fakeTimePassed=0;
	}
	bool pingPong;
	void setUpdatee (float *u);
	void interpolateTo (float interTo, float time, int ltype);
	void interpolateBySpeed (float interTo, float speed, int ltype);
	void update (float dt);
	void setSpeed (float speed);
	void stop ();
	float getX2 ()
	{
	 return (timePassed - timePeriod/2)*(timePassed - timePeriod/2);
	}

	bool interpolating, useSpeed;
	int loopType;
	float timePeriod;
	float initialDelay;
	float to;
	float timeMultiplier;

	EventPtr endOfInterpolationEvent;
	EventPtr startOfInterpolationEvent;

private:

	float speed, from, timePassed, fakeTimePassed;
	float *updatee;
};



#endif


