X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Finterface.cpp;h=e4888c5b5f35d1ee3f15a1b9d0f96190ec34b336;hb=4485397da18a25dfd1a51e864814887b66ba0f2e;hp=dddb7324f965fc7fe2a4f90810837b7e3e6598c2;hpb=e52e3c500b679ab7bae9cfdda3fb0d630a2584ad;p=blank.git diff --git a/src/interface.cpp b/src/interface.cpp index dddb732..e4888c5 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -4,7 +4,6 @@ #include "world.hpp" #include -#include #include #include @@ -23,12 +22,8 @@ Interface::Interface(const Config &config, World &world) , config(config) , remove(0) , selection(1) -, front(false) -, back(false) -, left(false) -, right(false) -, up(false) -, down(false) { +, fwd(0) +, rev(0) { hud.Viewport(960, 600); hud.Display(selection); } @@ -39,22 +34,22 @@ void Interface::Handle(const SDL_KeyboardEvent &event) { switch (event.keysym.sym) { case SDLK_w: - front = event.state == SDL_PRESSED; + rev.z = event.state == SDL_PRESSED; break; case SDLK_s: - back = event.state == SDL_PRESSED; + fwd.z = event.state == SDL_PRESSED; break; case SDLK_a: - left = event.state == SDL_PRESSED; + rev.x = event.state == SDL_PRESSED; break; case SDLK_d: - right = event.state == SDL_PRESSED; + fwd.x = event.state == SDL_PRESSED; break; case SDLK_SPACE: - up = event.state == SDL_PRESSED; + fwd.y = event.state == SDL_PRESSED; break; case SDLK_LSHIFT: - down = event.state == SDL_PRESSED; + rev.y = event.state == SDL_PRESSED; break; case SDLK_q: @@ -105,6 +100,8 @@ void Interface::PrintBlockInfo() { std::cout << std::endl; if (!aim_chunk) { std::cout << "not looking at any block" << std::endl; + Ray aim = ctrl.Aim(); + std::cout << "aim ray: " << aim.orig << ", " << aim.dir << std::endl; return; } std::cout << "looking at block " << aim_block @@ -124,24 +121,24 @@ void Interface::PrintChunkInfo() { << aim_chunk->Position() << std::endl; - std::cout << " neighbors:"; + std::cout << " neighbors:" << std::endl; if (aim_chunk->HasNeighbor(Block::FACE_LEFT)) { - std::cout << " left"; + std::cout << " left " << aim_chunk->GetNeighbor(Block::FACE_LEFT).Position() << std::endl; } if (aim_chunk->HasNeighbor(Block::FACE_RIGHT)) { - std::cout << " right"; + std::cout << " right " << aim_chunk->GetNeighbor(Block::FACE_RIGHT).Position() << std::endl; } if (aim_chunk->HasNeighbor(Block::FACE_UP)) { - std::cout << " up"; + std::cout << " up " << aim_chunk->GetNeighbor(Block::FACE_UP).Position() << std::endl; } if (aim_chunk->HasNeighbor(Block::FACE_DOWN)) { - std::cout << " down"; + std::cout << " down " << aim_chunk->GetNeighbor(Block::FACE_DOWN).Position() << std::endl; } if (aim_chunk->HasNeighbor(Block::FACE_FRONT)) { - std::cout << " front"; + std::cout << " front " << aim_chunk->GetNeighbor(Block::FACE_FRONT).Position() << std::endl; } if (aim_chunk->HasNeighbor(Block::FACE_BACK)) { - std::cout << " back"; + std::cout << " back " << aim_chunk->GetNeighbor(Block::FACE_BACK).Position() << std::endl; } std::cout << std::endl; } @@ -245,23 +242,7 @@ void Interface::Handle(const SDL_WindowEvent &event) { void Interface::Update(int dt) { - glm::vec3 vel; - if (right && !left) { - vel.x = config.move_velocity; - } else if (left && !right) { - vel.x = -config.move_velocity; - } - if (up && !down) { - vel.y = config.move_velocity; - } else if (down && !up) { - vel.y = -config.move_velocity; - } - if (back && !front) { - vel.z = config.move_velocity; - } else if (front && !back) { - vel.z = -config.move_velocity; - } - ctrl.Velocity(vel); + ctrl.Velocity(glm::vec3(fwd - rev) * config.move_velocity); ctrl.Update(dt); Ray aim = ctrl.Aim();