|
@@ -8,14 +8,10 @@ float Engine::testBias = 0.0005;
|
|
bool Engine::ortho = false;
|
|
bool Engine::ortho = false;
|
|
Vector Engine::testOrthoCenter;
|
|
Vector Engine::testOrthoCenter;
|
|
|
|
|
|
-static u64 last = 0;
|
|
+Engine::Engine(Shaders& shaders, Framebuffers& fb, const Keys& keys, const MouseButtons& buttons, Camera& camera,
|
|
-static u64 sum = 0;
|
|
+ Ray& ray, const Clock& fps, const WindowSize& size) :
|
|
-static u64 tindex = 0;
|
|
+shaders(shaders), fb(fb), keys(keys), buttons(buttons), game(keys, buttons, camera, ray), camera(camera),
|
|
-static std::array<u64, 128> values;
|
|
+frustum(60.0f, 0.1f, 80.0f), ssaoNoise(4, 4), fps(fps), size(size), running(!shaders.hasError() && !fb.hasError()) {
|
|
-
|
|
|
|
-Engine::Engine(Shaders& shaders, Framebuffers& fb, const Keys& keys, const MouseButtons& buttons, const WindowSize& size) :
|
|
|
|
-shaders(shaders), fb(fb), keys(keys), buttons(buttons), game(keys, buttons), frustum(60.0f, 0.1f, 80.0f),
|
|
|
|
-ssaoNoise(4, 4), size(size), running(!shaders.hasError() && !fb.hasError()) {
|
|
|
|
rectangle.add( {-1, -1, 0, 0, 0, 0, 0, 0});
|
|
rectangle.add( {-1, -1, 0, 0, 0, 0, 0, 0});
|
|
rectangle.add( {1, 1, 0, 1, 1, 0, 0, 0});
|
|
rectangle.add( {1, 1, 0, 1, 1, 0, 0, 0});
|
|
rectangle.add( {-1, 1, 0, 0, 1, 0, 0, 0});
|
|
rectangle.add( {-1, 1, 0, 0, 1, 0, 0, 0});
|
|
@@ -30,14 +26,7 @@ bool Engine::isRunning() const {
|
|
}
|
|
}
|
|
|
|
|
|
void Engine::renderTick(float lag) {
|
|
void Engine::renderTick(float lag) {
|
|
- u64 current = GLFWWrapper::getTimeNanos();
|
|
+ camera.update(lag);
|
|
- sum -= values[tindex];
|
|
|
|
- values[tindex] = current - last;
|
|
|
|
- sum += values[tindex];
|
|
|
|
- last = current;
|
|
|
|
- tindex = (tindex + 1) & (127);
|
|
|
|
-
|
|
|
|
- cam.update(lag);
|
|
|
|
updateWorldProjection();
|
|
updateWorldProjection();
|
|
updateWorldView();
|
|
updateWorldView();
|
|
|
|
|
|
@@ -51,7 +40,7 @@ void Engine::renderTick(float lag) {
|
|
}
|
|
}
|
|
|
|
|
|
void Engine::tick() {
|
|
void Engine::tick() {
|
|
- game.tick(cam);
|
|
+ game.tick();
|
|
if(keys.test5.getDownTime() == 1) {
|
|
if(keys.test5.getDownTime() == 1) {
|
|
ortho = !ortho;
|
|
ortho = !ortho;
|
|
}
|
|
}
|
|
@@ -159,7 +148,7 @@ void Engine::renderTextOverlay(float lag) {
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
glBlendEquation(GL_FUNC_ADD);
|
|
glBlendEquation(GL_FUNC_ADD);
|
|
char buffer[50];
|
|
char buffer[50];
|
|
- snprintf(buffer, 50, "FPS: %f %f %f", 128000000000.0f / sum, Engine::testRadius, Engine::testBias);
|
|
+ snprintf(buffer, 50, "FPS: %f %f %f", fps.getUpdatesPerSecond(), Engine::testRadius, Engine::testBias);
|
|
fontRenderer.drawString(20, 20, buffer);
|
|
fontRenderer.drawString(20, 20, buffer);
|
|
game.renderTextOverlay(lag, model, shaders.text, fontRenderer);
|
|
game.renderTextOverlay(lag, model, shaders.text, fontRenderer);
|
|
glDisable(GL_BLEND);
|
|
glDisable(GL_BLEND);
|
|
@@ -290,10 +279,10 @@ void Engine::updateWorldProjection() {
|
|
}
|
|
}
|
|
|
|
|
|
void Engine::updateWorldView() {
|
|
void Engine::updateWorldView() {
|
|
- Vector right = cam.getRight();
|
|
+ Vector right = camera.getRight();
|
|
- Vector up = cam.getUp();
|
|
+ Vector up = camera.getUp();
|
|
- Vector back = cam.getBack();
|
|
+ Vector back = camera.getBack();
|
|
- Vector pos = cam.getPosition();
|
|
+ Vector pos = camera.getPosition();
|
|
|
|
|
|
if(ortho) {
|
|
if(ortho) {
|
|
right.set(0.939693f, 0.0f, -0.34202f);
|
|
right.set(0.939693f, 0.0f, -0.34202f);
|