source: nrEngine/src/TimeSource.cpp @ 28

Revision 28, 2.9 KB checked in by art, 13 years ago (diff)
  • nrEngines scripting language support now subscripts
  • start_at parameter to scripts added (define starting time of a script/subscript)
  • subscripts inherit some paraemters from their parent scripts
Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13//----------------------------------------------------------------------------------
14// Includes
15//----------------------------------------------------------------------------------
16#include "TimeSource.h"
17#include "Log.h"
18
19#include <time.h>
20#if NR_PLATFORM != NR_PLATFORM_WIN32
21#    include <sys/time.h>
22#endif
23
24namespace nrEngine{
25               
26        //------------------------------------------------------------------------
27        TimeSource::TimeSource() : _currentTime(0), _syncTime(0)
28        {
29                reset();
30        }
31
32        //------------------------------------------------------------------------
33        TimeSource::~TimeSource()
34        {
35        }
36               
37        //------------------------------------------------------------------------
38        float64 TimeSource::getSystemTime()
39        {
40                // do not use rdtsc for time calculation, just get time
41                // by system calls
42                timeval now;
43                gettimeofday(&now, NULL);
44
45                // some precalculation
46                float64 a = static_cast<float64>(now.tv_sec) * static_cast<float64>(1000.0);
47                float64 b = static_cast<float64>(now.tv_usec)/ static_cast<float64>(1000.0);
48
49                // clculate the time in seconds
50                return  static_cast<float64>(0.001) * (a+b);
51               
52        }
53
54        //------------------------------------------------------------------------
55        float64 TimeSource::getTime()
56        {
57                // retrive time information
58                timeval now;
59                gettimeofday(&now, NULL);
60
61                // some precalculation
62                float64 a =  static_cast<float64>(now.tv_sec - _startTime.tv_sec) *  static_cast<float64>(1000.0);
63                float64 b =  static_cast<float64>(now.tv_usec- _startTime.tv_usec)/  static_cast<float64>(1000.0);
64       
65                // clculate the time in seconds
66                _currentTime =  static_cast<float64>(0.001) * (a+b) + _resetTime + _syncTime;
67               
68                // return it back
69                return _currentTime;
70        }
71
72        //------------------------------------------------------------------------
73        void TimeSource::reset(float64 startValue)
74        {
75                gettimeofday(&_startTime, NULL);
76                _resetTime = startValue;
77        }
78
79        //------------------------------------------------------------------------
80        void TimeSource::sync()
81        {
82                _syncTime = _currentTime;
83                reset();
84        }
85
86        //------------------------------------------------------------------------
87        void TimeSource::notifyNextFrame()
88        {
89        }
90               
91}; // end namespace     
92
Note: See TracBrowser for help on using the repository browser.