home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / XenonSource.exe / gamesystem / source / gs_framecounter.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-26  |  1.4 KB  |  69 lines

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    gsCFrameCounter
  4. //
  5. // Author:    John M Phillips
  6. //
  7. // Started:    12/03/00
  8. //
  9. // Base:    gsCObject
  10. //
  11. // Derived:    None
  12. //
  13. //-------------------------------------------------------------
  14.  
  15. #include "gamesystem.h"
  16.  
  17. //-------------------------------------------------------------
  18.  
  19. gsCFrameCounter::gsCFrameCounter()
  20. {
  21.     void reset();
  22. }
  23.  
  24. //-------------------------------------------------------------
  25.  
  26. gsCFrameCounter::~gsCFrameCounter()
  27. {
  28. }
  29.  
  30. //-------------------------------------------------------------
  31.  
  32. void gsCFrameCounter::reset()
  33. {
  34.     for (int i = 0; i < gsFRAMECOUNTER_SAMPLES; i++)
  35.         m_samples[i] = 0.f;
  36.     m_sample_index = 0;
  37.  
  38.     m_timer.start();
  39. }
  40.  
  41. //-------------------------------------------------------------
  42.  
  43. void gsCFrameCounter::markFrame()
  44. {
  45.     m_samples[m_sample_index] = m_timer.getTime();
  46.     m_sample_index = (m_sample_index + 1) % gsFRAMECOUNTER_SAMPLES;
  47.  
  48.     m_timer.start();
  49. }
  50.  
  51. //-------------------------------------------------------------
  52.  
  53. float gsCFrameCounter::getFrameRate()
  54. {
  55.     float total_time = 0.f;
  56.  
  57.     int i = m_sample_index;
  58.  
  59.     for (int n = 0; n < gsFRAMECOUNTER_SAMPLES; n++) {
  60.         if (--i < 0)
  61.             i = gsFRAMECOUNTER_SAMPLES - 1;
  62.         total_time += m_samples[i];
  63.         }
  64.  
  65.     return (float) gsFRAMECOUNTER_SAMPLES / total_time;
  66. }
  67.  
  68. //-------------------------------------------------------------
  69.