Browse Source

up / down generates new terrain

Kajetan Johannes Hammerle 3 years ago
parent
commit
7eaf3f9822
3 changed files with 20 additions and 7 deletions
  1. 14 5
      Game.cpp
  2. 3 0
      Game.h
  3. 3 2
      resources/noiceVertex.vs

+ 14 - 5
Game.cpp

@@ -17,7 +17,8 @@ Game::Game(Shader& shader, Shader& noiceShader, LayeredFramebuffer& buffer,
       left(buttons.add(GLFW_KEY_A, "left")),
       right(buttons.add(GLFW_KEY_D, "right")),
       front(buttons.add(GLFW_KEY_W, "front")),
-      back(buttons.add(GLFW_KEY_S, "back")) {
+      back(buttons.add(GLFW_KEY_S, "back")),
+      toggle(buttons.add(GLFW_KEY_T, "toggle")), oldHeight(0.0f), height(0.0f) {
     rectangleBuffer.setAttributes(Attributes().addFloat(2));
     float data[6][2] = {{-1.0f, -1.0f}, {-1.0, 1.0}, {1.0, -1.0},
                         {1.0f, 1.0f},   {-1.0, 1.0}, {1.0, -1.0}};
@@ -29,6 +30,8 @@ void Game::render(float lag) {
     GL::setViewport(64, 64);
     noiceShader.use();
     noiceBuffer.bindAndClear();
+    float interHeight = Utils::interpolate(oldHeight, height, lag);
+    noiceShader.setFloat("height", interHeight * 0.005f);
     for(int i = 0; i < 64; i++) {
         noiceShader.setFloat("layer", i * (1.0f / 63.0f));
         noiceBuffer.bindLayer(i);
@@ -44,24 +47,30 @@ void Game::render(float lag) {
 
     Matrix m;
     m.translate(interPos);
-    m.translateZ(-30.0f);
-    m.translateX(-8.0f);
+    m.translateZ(-32.0f);
+    m.translateY(-32.0f);
+    m.translateX(-32.0f);
 
     shader.setMatrix("view", m.getValues());
 
+    if(toggle.isDown()) {
+        glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+    }
     noiceBuffer.bindTextureTo(0);
     emptyBuffer.drawPoints(0);
     glDrawArrays(GL_POINTS, 0, 64 * 64 * 64);
+    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 }
 
 void Game::tick() {
+    oldHeight = height;
     oldPosition = position;
     const float speed = 2.5f;
     if(up.isDown()) {
-        position -= Vector3(0.0f, speed, 0.0f);
+        height += speed;
     }
     if(down.isDown()) {
-        position += Vector3(0.0f, speed, 0.0f);
+        height -= speed;
     }
     if(left.isDown()) {
         position += Vector3(speed, 0.0f, 0.0f);

+ 3 - 0
Game.h

@@ -24,8 +24,11 @@ class Game final {
     Button& right;
     Button& front;
     Button& back;
+    Button& toggle;
     Vector3 oldPosition;
     Vector3 position;
+    float oldHeight;
+    float height;
 
 public:
     Game(Shader& shader, Shader& noiceShader, LayeredFramebuffer& buffer,

+ 3 - 2
resources/noiceVertex.vs

@@ -3,10 +3,11 @@
 layout (location = 0) in vec2 position;
 
 uniform float layer;
+uniform float height;
 
 out vec3 varPosition;
 
 void main(void) { 
-    gl_Position = vec4(position, layer, 1.0);
-    varPosition = vec3(position, layer);
+    gl_Position = vec4(position, 0.0, 1.0);
+    varPosition = vec3(position.x, position.y + height, layer);
 }