BsTime.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //__________________________ Banshee Project - A modern game development toolkit _________________________________//
  2. //_____________________________________ www.banshee-project.com __________________________________________________//
  3. //________________________ Copyright (c) 2014 Marko Pintera. All rights reserved. ________________________________//
  4. #include "BsTime.h"
  5. #include "BsTimer.h"
  6. namespace BansheeEngine
  7. {
  8. const double Time::MICROSEC_TO_SEC = 1.0/1000000.0;
  9. Time::Time()
  10. :mAppStartTime(0), mLastFrameTime(0), mFrameDelta(0.0f), mTimeSinceStart(0.0f), mCurrentFrame(0)
  11. {
  12. mTimer = bs_new<Timer>();
  13. mAppStartTime = (UINT64)mTimer->getStartMs();
  14. mLastFrameTime = mTimer->getMicroseconds();
  15. }
  16. Time::~Time()
  17. {
  18. bs_delete(mTimer);
  19. }
  20. void Time::update()
  21. {
  22. unsigned long currentFrameTime = mTimer->getMicroseconds();
  23. mFrameDelta = (float)((currentFrameTime - mLastFrameTime) * MICROSEC_TO_SEC);
  24. mTimeSinceStart = (float)(currentFrameTime * MICROSEC_TO_SEC);
  25. mTimeSinceStartMs = (UINT64)(currentFrameTime / 1000);
  26. mLastFrameTime = currentFrameTime;
  27. mCurrentFrame++;
  28. }
  29. UINT64 Time::getTimePrecise() const
  30. {
  31. return mTimer->getMicroseconds();
  32. }
  33. Time& gTime()
  34. {
  35. return Time::instance();
  36. }
  37. }