| author | ekku |
| Mon, 08 Dec 2008 16:46:48 +0000 | |
| changeset 295 | 4d3adfbec077 |
| parent 283 | 7540b0859579 |
| child 300 | 417183866f35 |
| permissions | -rw-r--r-- |
| 205 | 1 |
#ifndef TIMER_HH |
2 |
#define TIMER_HH |
|
3 |
||
4 |
#include <ClanLib/core.h> |
|
5 |
||
|
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
6 |
/** |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
7 |
* A time interval, measured in real milliseconds |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
8 |
*/ |
| 205 | 9 |
typedef unsigned long TimeMS; |
|
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
10 |
|
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
11 |
/** |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
12 |
* Abstract tick count, defined as a number of Timer::interval's against real time |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
13 |
*/ |
| 205 | 14 |
typedef uint32_t TickCount; |
15 |
||
|
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
16 |
/** |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
17 |
* Used to implement Physics ticks and Graphics frames. This will attempt to trigger sig_tick every <interval> ms, |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
18 |
* but if we miss some ticks or something else, then the tick_length passed to sig_tick will be longer than interval... |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
205
diff
changeset
|
19 |
*/ |
| 205 | 20 |
class Timer : public CL_KeepAlive {
|
21 |
protected: |
|
22 |
// the target tick interval |
|
23 |
TimeMS interval; |
|
24 |
||
25 |
// number of ticks |
|
26 |
TickCount ticks; |
|
27 |
||
28 |
bool enabled; |
|
29 |
||
30 |
// time of last tick |
|
31 |
TimeMS last_tick; |
|
32 |
||
33 |
CL_Signal_v1<TimeMS> _sig_tick; |
|
34 |
||
35 |
public: |
|
36 |
/* |
|
37 |
* Interval is in milliseconds |
|
38 |
*/ |
|
39 |
Timer (TimeMS interval); |
|
40 |
||
41 |
/* |
|
42 |
* Returns the tick counter |
|
43 |
*/ |
|
44 |
TickCount get_ticks (void); |
|
45 |
||
46 |
/* |
|
47 |
* Start the timer, this should be called once keepalive starts getting called |
|
48 |
*/ |
|
49 |
void start (void); |
|
50 |
||
51 |
private: |
|
52 |
void keep_alive (void); |
|
53 |
||
54 |
public: |
|
55 |
CL_Signal_v1<TimeMS>& sig_tick (void) { return _sig_tick; }
|
|
56 |
}; |
|
57 |
||
58 |
#endif |