Browse Source

cleaning up testing to merge w/ master

master
cinnaboot 8 years ago
parent
commit
27fbbc3e68
  1. 1
      TODO.md
  2. 2
      data/test_scene.json
  3. 2
      src/entity.h
  4. 1
      src/hexgame.cpp
  5. 2
      src/hexgame.h
  6. 58
      src/hexgrid.cpp
  7. 3
      src/hexgrid.h

1
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

2
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" : [

2
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

1
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"

2
src/hexgame.h

@ -11,8 +11,6 @@
struct game_state
{
hexgrid grid;
// TODO: WiP
uint32 entity_count;
Entity* entities;

58
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

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

Loading…
Cancel
Save