, pitch_sensitivity(-0.0025f)
, yaw_sensitivity(-0.001f)
, cam()
+, hud()
, world()
, outline()
, outline_visible(false)
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
- cam.Position(glm::vec3(0, 4, 4));
-
world.Generate();
+ cam.Position(glm::vec3(0, 4, 4));
+ hud.Viewport(960, 600);
+ hud.Display(*world.BlockTypes()[place_id]);
+
glClearColor(0.0, 0.0, 0.0, 1.0);
}
switch (event.window.event) {
case SDL_WINDOWEVENT_RESIZED:
cam.Viewport(event.window.data1, event.window.data2);
+ hud.Viewport(event.window.data1, event.window.data2);
break;
default:
break;
outline.Clear();
chunk->BlockAt(blkid).type->FillOutlineModel(outline);
outline_transform = glm::translate(chunk->Transform(), pos);
+ outline_transform = glm::scale(outline_transform, glm::vec3(1.0001f));
} else {
outline_visible = false;
}
if (pick) {
if (chunk) {
place_id = chunk->BlockAt(blkid).type->id;
+ hud.Display(*world.BlockTypes()[place_id]);
}
pick = false;
}
program.Activate();
+ program.SetLightDirection({ -1.0f, -3.0f, -2.0f });
program.SetVP(cam.View(), cam.Projection());
for (Chunk &chunk : world.LoadedChunks()) {
outline.Draw();
}
+ hud.Render(program);
+
window.Flip();
}