|
|
|
|
@ -27,8 +27,8 @@ glm::vec4 parseVec4(const rapidjson::Value& node);
|
|
|
|
|
uint32 parseHex32(std::string s); |
|
|
|
|
bool validateScene(rapidjson::Document* schema_doc, rapidjson::Document* scene_doc, |
|
|
|
|
const char* scene_file); |
|
|
|
|
void populateFilledHexGLBuffers(hexgrid& hg, render_group* rg_filled, util_image palette_image); |
|
|
|
|
void populateLineGLBuffers(hexgrid& hg, render_group* rg_lines, util_image palette_image); |
|
|
|
|
void populateFilledHexGLBuffers(hexgrid& hg, render_group* rg_filled); |
|
|
|
|
void populateLineGLBuffers(hexgrid& hg, render_group* rg_lines); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// interface
|
|
|
|
|
@ -163,8 +163,12 @@ slCreateHexRenderGroups(hexgrid& hg, render_state* rs)
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
populateFilledHexGLBuffers(hg, rg_filled, rs->palette_image); |
|
|
|
|
populateLineGLBuffers(hg, rg_lines, rs->palette_image); |
|
|
|
|
hg.fill_color_uv = utilGetPaletteCoords(rs->palette_image, hg.fill_color); |
|
|
|
|
hg.selected_fill_color_uv = utilGetPaletteCoords(rs->palette_image, hg.selected_fill_color); |
|
|
|
|
hg.line_color_uv = utilGetPaletteCoords(rs->palette_image, hg.hex_line_color); |
|
|
|
|
|
|
|
|
|
populateFilledHexGLBuffers(hg, rg_filled); |
|
|
|
|
populateLineGLBuffers(hg, rg_lines); |
|
|
|
|
|
|
|
|
|
render_object* ro = rg_filled->render_objects[0]; |
|
|
|
|
ro->use_texture = true; |
|
|
|
|
@ -282,26 +286,17 @@ parseVec4(const rapidjson::Value& node)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void |
|
|
|
|
populateFilledHexGLBuffers(hexgrid& hg, render_group* rg_filled, util_image palette_image) |
|
|
|
|
populateFilledHexGLBuffers(hexgrid& hg, render_group* rg_filled) |
|
|
|
|
{ |
|
|
|
|
render_object* ro = rg_filled->render_objects[0]; |
|
|
|
|
gl_buffer& vbuf = ro->vertex_buffer; |
|
|
|
|
gl_buffer& cbuf = ro->color_buffer; |
|
|
|
|
gl_buffer& normal_buf = ro->normal_buffer; |
|
|
|
|
gl_buffer& uv_buf = ro->uv_buffer; |
|
|
|
|
|
|
|
|
|
assert((hg.hex_array->size() * 6 * 3 * 3) == vbuf.buffer_len); |
|
|
|
|
|
|
|
|
|
// fill uv_buffer with palette texture coords
|
|
|
|
|
v2f fill_color_coords = utilGetPaletteCoords(palette_image, hg.fill_color); |
|
|
|
|
|
|
|
|
|
for (uint i = 0; i < uv_buf.buffer_len; i += 3) { |
|
|
|
|
uv_buf.buffer[i + 0] = fill_color_coords.x; |
|
|
|
|
uv_buf.buffer[i + 1] = fill_color_coords.y; |
|
|
|
|
uv_buf.buffer[i + 2] = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
hgUpdateColorBuffer(cbuf, hg.hex_array); |
|
|
|
|
hgUpdateUVBuffer(hg, uv_buf.buffer, uv_buf.buffer_len); |
|
|
|
|
|
|
|
|
|
// cheat at vertex normals since all hexes lay flat on z-axis
|
|
|
|
|
for (uint i = 0; i < normal_buf.buffer_len; i += 3) { |
|
|
|
|
@ -351,7 +346,7 @@ populateFilledHexGLBuffers(hexgrid& hg, render_group* rg_filled, util_image pale
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void |
|
|
|
|
populateLineGLBuffers(hexgrid& hg, render_group* rg_lines, util_image palette_image) |
|
|
|
|
populateLineGLBuffers(hexgrid& hg, render_group* rg_lines) |
|
|
|
|
{ |
|
|
|
|
render_object* ro = rg_lines->render_objects[0]; |
|
|
|
|
gl_buffer& vbuf = ro->vertex_buffer; |
|
|
|
|
@ -373,11 +368,9 @@ populateLineGLBuffers(hexgrid& hg, render_group* rg_lines, util_image palette_im
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// fill uv_buffer with palette texture coords
|
|
|
|
|
v2f uv_coords = utilGetPaletteCoords(palette_image, hg.hex_line_color); |
|
|
|
|
|
|
|
|
|
for (uint i = 0; i < uv_buf.buffer_len; i += 3) { |
|
|
|
|
uv_buf.buffer[i + 0] = uv_coords.x; |
|
|
|
|
uv_buf.buffer[i + 1] = uv_coords.y; |
|
|
|
|
uv_buf.buffer[i + 0] = hg.line_color_uv.x; |
|
|
|
|
uv_buf.buffer[i + 1] = hg.line_color_uv.y; |
|
|
|
|
uv_buf.buffer[i + 2] = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|