From 27fbbc3e6805b49698c7ba218902ecddd2cfab26 Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Wed, 16 Jan 2019 15:16:13 -0500 Subject: [PATCH] cleaning up testing to merge w/ master --- TODO.md | 1 + data/test_scene.json | 2 +- src/entity.h | 2 -- src/hexgame.cpp | 1 - src/hexgame.h | 2 -- src/hexgrid.cpp | 58 +++++++++++++++++--------------------------- src/hexgrid.h | 3 --- 7 files changed, 24 insertions(+), 45 deletions(-) diff --git a/TODO.md b/TODO.md index 0ed05df..10f1f79 100644 --- a/TODO.md +++ b/TODO.md @@ -43,6 +43,7 @@ ## LATER TODO: - add initial opengl constant for INT_MAX, and checks in render_group functions - try out YAML instead of JSON (make sure can still use schema validation) + - there's a bug when changing hex_grid.hex_radius from a 2 digit number to a 1 digit number in test_scene.json - move from COLLADA output to glTF (GL Transmission Format) https://www.khronos.org/gltf/ - add config.js/yaml for application config (remove some defines everywhere) - maybe try deferred rendering at some point to use a ton of lights diff --git a/data/test_scene.json b/data/test_scene.json index 6d399e7..281c929 100644 --- a/data/test_scene.json +++ b/data/test_scene.json @@ -13,7 +13,7 @@ "hex_line_color": 5, "hexlib_orientation" : "layout_flat", "grid_type" : "hexagon", - "hex_radius" : 1 + "hex_radius" : 15 }, "entities" : [ diff --git a/src/entity.h b/src/entity.h index f30efe8..8948968 100644 --- a/src/entity.h +++ b/src/entity.h @@ -18,8 +18,6 @@ struct Entity glm::vec4 rotation; // maybe use quaternion for this one meMeshGroup mesh_group; render_group* ren_group; - - //TODO: more entity properties: sound, gameplay info }; inline void diff --git a/src/hexgame.cpp b/src/hexgame.cpp index e398086..76f5908 100644 --- a/src/hexgame.cpp +++ b/src/hexgame.cpp @@ -6,7 +6,6 @@ #define CONE_ANGLE 30 #define VSYNC_ENABLED true -// TODO: testing scene_loader #define DATA_DIR "../data" #define DEFAULT_SCENE_FILE "test_scene.json" #define SCENE_SCHEMA_FILE "scene_schema.json" diff --git a/src/hexgame.h b/src/hexgame.h index 2938cd7..a9b6167 100644 --- a/src/hexgame.h +++ b/src/hexgame.h @@ -11,8 +11,6 @@ struct game_state { hexgrid grid; - - // TODO: WiP uint32 entity_count; Entity* entities; diff --git a/src/hexgrid.cpp b/src/hexgrid.cpp index 5a3a0ae..663ba11 100644 --- a/src/hexgrid.cpp +++ b/src/hexgrid.cpp @@ -13,8 +13,6 @@ void populateLineGLBuffers(hexgrid& hg, hex_info& hxi, render_group* rg_lines); // interface -// TODO: testing add/remove hex interface - bool hgInit(hexgrid& hg, render_group* rg_filled, render_group* rg_lines) { @@ -91,19 +89,9 @@ hgAddHex(hexgrid& hg, v3f hex_coords, render_group* rg_filled, render_group* rg_ Hex h = hex_round(pixel_to_hex(hg.hexlib_layout, Point(hex_coords.x, hex_coords.y))); hex_info new_hex = createHexInfo(hg, h.q, h.r); hg.hex_map.insert({h, new_hex}); -#if 0 - // NOTE: have to repopulate all the buffers, and re-index - uint i = 0; - for (auto it : hg.hex_map) { - it.second.hexID = i; - populateFilledHexGLBuffers(hg, it.second, rg_filled); - populateLineGLBuffers(hg, it.second, rg_lines); - i++; - } -#else populateFilledHexGLBuffers(hg, new_hex, rg_filled); populateLineGLBuffers(hg, new_hex, rg_lines); -#endif + // NOTE: we could send just a part of the buffer if performance ends up being bad here glBindBuffer(GL_ARRAY_BUFFER, vb_f.buffer_id); glBufferSubData(GL_ARRAY_BUFFER, 0, vb_f.count * sizeof(GLfloat), vb_f.buffer); @@ -182,7 +170,27 @@ hgRemoveHex(hexgrid& hg, v3f hex_coords, render_group* rg_filled, render_group* return false; } -// ------------------- +void +hgUpdateUVBuffer(hexgrid& hg, render_group* rg) +{ + gl_buffer& uv_buf = rg->render_objects[0]->uv_buffer; + assert(uv_buf.count == hg.hex_map.size() * IDX_PER_HEX_FILLED); + + for (auto& it : hg.hex_map) { + hex_info hxi = it.second; + v2f uv_coords = (hxi.selected) ? hg.selected_fill_color_uv : hg.fill_color_uv; + uint buf_idx = hxi.hexID * IDX_PER_HEX_FILLED; + + for (uint j = 0; j < IDX_PER_HEX_FILLED; j +=3) { + uv_buf.buffer[buf_idx + j + 0] = uv_coords.x; + uv_buf.buffer[buf_idx + j + 1] = uv_coords.y; + uv_buf.buffer[buf_idx + j + 2] = 0; + } + } + + glBindBuffer(GL_ARRAY_BUFFER, uv_buf.buffer_id); + glBufferSubData(GL_ARRAY_BUFFER, 0, uv_buf.count * sizeof(GLfloat), uv_buf.buffer); +} hex_info* hgGetSingleHex(hexgrid& hg, real32 x, real32 y) @@ -295,28 +303,6 @@ hgUpdateHexConeFill(hexgrid& hg, int32 x, int32 y, float cone_angle, std::vector } } -void -hgUpdateUVBuffer(hexgrid& hg, render_group* rg) -{ - gl_buffer& uv_buf = rg->render_objects[0]->uv_buffer; - assert(uv_buf.count == hg.hex_map.size() * IDX_PER_HEX_FILLED); - - for (auto& it : hg.hex_map) { - hex_info hxi = it.second; - v2f uv_coords = (hxi.selected) ? hg.selected_fill_color_uv : hg.fill_color_uv; - uint buf_idx = hxi.hexID * IDX_PER_HEX_FILLED; - - for (uint j = 0; j < IDX_PER_HEX_FILLED; j +=3) { - uv_buf.buffer[buf_idx + j + 0] = uv_coords.x; - uv_buf.buffer[buf_idx + j + 1] = uv_coords.y; - uv_buf.buffer[buf_idx + j + 2] = 0; - } - } - - glBindBuffer(GL_ARRAY_BUFFER, uv_buf.buffer_id); - glBufferSubData(GL_ARRAY_BUFFER, 0, uv_buf.count * sizeof(GLfloat), uv_buf.buffer); -} - // internal hex_info diff --git a/src/hexgrid.h b/src/hexgrid.h index fd0ea93..63fae7f 100644 --- a/src/hexgrid.h +++ b/src/hexgrid.h @@ -83,7 +83,6 @@ struct hexgrid bool is_selecting; }; -// TODO: testing add/remove hex interface bool hgInit(hexgrid& hg, render_group* rg_filled, render_group* rg_lines); @@ -93,8 +92,6 @@ bool hgRemoveHex(hexgrid& hg, v3f hex_coords, render_group* rg_filled, render_gr void hgUpdateUVBuffer(hexgrid& hg, render_group* rg); -// ------------------- - hex_info* hgGetSingleHex(hexgrid& hg, real32 x, real32 y); void hgResetHexes(hexgrid& hg);