-
Notifications
You must be signed in to change notification settings - Fork 0
/
Enviroment.h
212 lines (168 loc) · 3.93 KB
/
Enviroment.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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
#ifndef ENVIROMENT_H
#define ENVIROMENT_H
#include <GL/gl.h>
#include <GL/freeglut.h>
#include <iostream>
#include <string>
#include <cmath>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/lexical_cast.hpp>
#include "Camera.h"
#include "Light.h"
using namespace std;
using namespace boost;
using namespace boost::property_tree;
#define CAMERA_COUNT 5
#define LIGHT_COUNT 2
/**
* Look after environment of OpenGL.
*/
class Environment {
public:
/** Actual angle of dynamic camera. */
static float dynamicViewAngle;
/**
* Window width.
*/
int windowWidth;
/**
* Window height.
*/
int windowHeight;
/**
* Window title.
*/
string windowTitle;
/**
* Destroy environment.
*/
virtual ~Environment(void);
/**
* Return instance of the singleton object.
* @return Instance Environment.
*/
static Environment * getInstance(void);
/**
* Draw content of main window.
* Callback pro GLUT.
*/
static void display(void);
/**
* Reshape main windows.
* Callback for Glut for resizing window.
* @param _width Window width.
* @param _height Window height.
*/
static void reshape(int _width, int _height);
/**
* Catch inputs of keyboard.
* @param key Key code.
* @param _x X coordinate of mouse.
* @param _y Y coordinate of mouse.
*/
static void keyboard(unsigned char _key, int _x, int _y);
/**
* Catch inputs of special keys.
* @param _key Key code.
* @param _x X coordinate of mouse.
* @param _y Y coordinate of mouse.
*/
static void specialKeyboard(int _key, int _x, int _y);
/**
* Catch inputs of mouse.
* @param _button Button identifier.
* @param _state State identifier.
* @param _x X coordinate.
* @param _y Y coordinate.
*/
static void mouse(int _button, int _state, int _x, int _y);
/**
* Catch move of mouse.
* @param _x X coordinate.
* @param _y Y coordinate.
*/
static void mouseMotion(int _x, int _y);
/**
* It is called, when there is nothing to call.
*/
static void idle(void);
/**
* Control context menu.
* @param _selectedItem Menu item identifier.
*/
static void menu(int _selectedItem);
/**
* Convert degrees to radians.
* @param _deg Degrees.
* @return Radians.
*/
static float DegToRad(float _deg);
/**
* Convert radians to degrees.
* @param _rad Radians.
* @return Degrees.
*/
static float RadToDeg(float _rad);
/**
* Initialize OpenGL.
*/
void init(void);
/**
* Initialize cameras.
*/
void initCameras(void);
/**
* Initialize lights.
*/
void initLights(void);
/**
* Create context menu.
*/
void createMenu(void);
/**
* Draw scene.
*/
void drawScene(void);
/**
* Draw x, y and z axes.
* @param _length Length of axes.
*/
void drawAxes(float _length);
private:
/** Object instance. */
static Environment * instance;
/** Configuration. */
ptree config;
/** Actual camera. */
Camera* camera;
/** All cameras. */
Camera* cameras[CAMERA_COUNT];
/** All lights. */
Light* lights[LIGHT_COUNT];
/** Actual angle of sun. */
float sunAngle;
/** Indicator of left mouse press. */
bool mouseLeftPressed;
/** Last coordinates of mouse. */
int lastCoordinate[2];
/**
* Private constructor - singleton.
*/
Environment(void);
/**
* Load configuration from XML file.
* @param _file
*/
void loadConfig(const string& _file);
/**
* Draw green plane.
* @param _subdiv Count of squares.
*/
void drawPlane(int _subdiv);
/**
* Draw boat.
*/
void drawBoat(void);
};
#endif /* ENVIROMENT_H */