forked from tharvik/COG
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSimulator.h
119 lines (96 loc) · 1.8 KB
/
Simulator.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#pragma once
#include "opengl.h"
#include "config.h"
#include "Logger.h"
#include "Univers.h"
/**
* Handle launching physic for Univers and calculus of FPS
*/
class Simulator {
private:
/**
* Univers it has to handle
*/
Univers *univers;
/**
* Current computed FPS
*/
unsigned int FPS;
/**
* Number of refresh since last FPS computation
*/
unsigned int refreshCounter;
/**
* Number of ticks
*/
unsigned long tickCounter;
/**
* Last \ref actualPhysic we reported
*/
unsigned int lastPhysicReport;
/**
* Last physic we computed
*/
unsigned int lastPhysic;
/**
* Currently computed physic
*/
unsigned int actualPhysic;
/**
* Update FPS and lastRefreshReport
*/
void measureFPS();
/**
* Physic per second, number of physic computed in a second
*/
unsigned int PPS;
/**
* Number of physic since last PPS computation
*/
unsigned int physicCounter;
/**
* Last \ref actualRefresh we reported
*/
unsigned int lastRefreshReport;
/**
* Last refresh we computed
*/
unsigned int lastRefresh;
/**
* Current time of refresh
*/
unsigned int actualRefresh;
/**
* Step of a physic computation, the less, the more accurate it
* will be
*/
double physicDelta;
/**
* Update PPS and lastPhysicReport
*/
void measurePPS();
public:
/**
* Construct an empty and invalid Simulator
*/
Simulator();
/**
* Construct with the given Univers
*
* \param univers Univers to simulate
*/
Simulator(Univers *univers);
/**
* Print FPS and PPS info to cout
*/
void printInfo() const;
/**
* Refresh the simulation and forward to \ref univers
*/
void refresh();
/**
* Compute physics and forward to \ref univers
*/
void physic();
};
void tick();