#include "anki/event/SceneColorEvent.h"
#include "anki/scene/Scene.h"
#include "anki/core/Logger.h"

namespace anki {

//==============================================================================
SceneColorEvent::SceneColorEvent(float startTime, float duration,
	const Vec3& finalColor_)
	: Event(ET_SCENE_COLOR, startTime, duration), finalColor(finalColor_)
{
	originalColor = SceneSingleton::get().getAmbientColor();
}

//==============================================================================
SceneColorEvent::SceneColorEvent(const SceneColorEvent& b)
	: Event(ET_SCENE_COLOR, 0.0, 0.0)
{
	*this = b;
}

//==============================================================================
SceneColorEvent& SceneColorEvent::operator=(const SceneColorEvent& b)
{
	Event::operator=(b);
	originalColor = b.originalColor;
	finalColor = b.finalColor;
	return *this;
}

//==============================================================================
void SceneColorEvent::updateSp(float /*prevUpdateTime*/, float crntTime)
{
	float d = crntTime - getStartTime(); // delta
	float dp = d / float(getDuration()); // delta as persentage

	SceneSingleton::get().setAmbientColor(
		interpolate(originalColor, finalColor, dp));
}

} // end namespace anki
