BsTime.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsTime.h"
  4. #include "BsTimer.h"
  5. namespace BansheeEngine
  6. {
  7. const double Time::MICROSEC_TO_SEC = 1.0/1000000.0;
  8. Time::Time()
  9. :mAppStartTime(0), mLastFrameTime(0), mFrameDelta(0.0f), mTimeSinceStart(0.0f), mCurrentFrame(0UL)
  10. {
  11. mTimer = bs_new<Timer>();
  12. mAppStartTime = (UINT64)mTimer->getStartMs();
  13. mLastFrameTime = mTimer->getMicroseconds();
  14. }
  15. Time::~Time()
  16. {
  17. bs_delete(mTimer);
  18. }
  19. void Time::update()
  20. {
  21. unsigned long currentFrameTime = mTimer->getMicroseconds();
  22. mFrameDelta = (float)((currentFrameTime - mLastFrameTime) * MICROSEC_TO_SEC);
  23. mTimeSinceStart = (float)(currentFrameTime * MICROSEC_TO_SEC);
  24. mTimeSinceStartMs = (UINT64)(currentFrameTime / 1000);
  25. mLastFrameTime = currentFrameTime;
  26. mCurrentFrame.fetch_add(1, std::memory_order_relaxed);
  27. }
  28. UINT64 Time::getTimePrecise() const
  29. {
  30. return mTimer->getMicroseconds();
  31. }
  32. Time& gTime()
  33. {
  34. return Time::instance();
  35. }
  36. }