, place_id(1) {
GLContext::EnableVSync();
- world.Generate({ -4, -4, -4 }, { 5, 5, 5});
-
hud.Viewport(960, 600);
hud.Display(*world.BlockTypes()[place_id]);
}
+void Application::RunN(size_t n) {
+ Uint32 last = SDL_GetTicks();
+ for (size_t i = 0; i < n; ++i) {
+ Uint32 now = SDL_GetTicks();
+ int delta = now - last;
+ Loop(delta);
+ last = now;
+ }
+}
+
+void Application::RunT(size_t t) {
+ Uint32 last = SDL_GetTicks();
+ Uint32 finish = last + t;
+ while (last < finish) {
+ Uint32 now = SDL_GetTicks();
+ int delta = now - last;
+ Loop(delta);
+ last = now;
+ }
+}
+
+void Application::RunS(size_t n, size_t t) {
+ for (size_t i = 0; i < n; ++i) {
+ Loop(t);
+ }
+}
+
+
void Application::Run() {
running = true;
Uint32 last = SDL_GetTicks();
float dist;
glm::vec3 normal;
if (world.Intersection(aim, glm::mat4(1.0f), &chunk, &blkid, &dist, &normal)) {
- glm::vec3 pos = Chunk::ToCoords(blkid);
outline_visible = true;
outline.Clear();
chunk->Type(chunk->BlockAt(blkid)).FillOutlineModel(outline);
- outline_transform = glm::translate(chunk->Transform(world.Player().ChunkCoords()), pos);
- outline_transform = glm::scale(outline_transform, glm::vec3(1.0001f));
+ outline_transform = glm::scale(glm::mat4(1.0f), glm::vec3(1.0002f));
+ outline_transform = chunk->Transform(world.Player().ChunkCoords());
+ outline_transform *= chunk->ToTransform(blkid);
} else {
outline_visible = false;
}