SceneColorEvent.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "anki/event/SceneColorEvent.h"
  2. #include "anki/scene/Scene.h"
  3. #include "anki/core/Logger.h"
  4. namespace anki {
  5. //==============================================================================
  6. SceneColorEvent::SceneColorEvent(float startTime, float duration,
  7. const Vec3& finalColor_)
  8. : Event(ET_SCENE_COLOR, startTime, duration), finalColor(finalColor_)
  9. {
  10. originalColor = SceneSingleton::get().getAmbientColor();
  11. }
  12. //==============================================================================
  13. SceneColorEvent::SceneColorEvent(const SceneColorEvent& b)
  14. : Event(ET_SCENE_COLOR, 0.0, 0.0)
  15. {
  16. *this = b;
  17. }
  18. //==============================================================================
  19. SceneColorEvent& SceneColorEvent::operator=(const SceneColorEvent& b)
  20. {
  21. Event::operator=(b);
  22. originalColor = b.originalColor;
  23. finalColor = b.finalColor;
  24. return *this;
  25. }
  26. //==============================================================================
  27. void SceneColorEvent::updateSp(float /*prevUpdateTime*/, float crntTime)
  28. {
  29. float d = crntTime - getStartTime(); // delta
  30. float dp = d / float(getDuration()); // delta as persentage
  31. SceneSingleton::get().setAmbientColor(
  32. interpolate(originalColor, finalColor, dp));
  33. }
  34. } // end namespace anki