|
@@ -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);
|