## TODO: - move populateHex functions from scene_loader to hexgrid and refactor - consider that the hexgrid hash map needs to grow and shrink - hexgrid render_group buffers need to be updated when size changes - better (flat) level mesh for testing grid position - make hashmap grid type - in-game editor for adding removing hexes to line up with terrain/indoor meshes - position entities on grid hexes - gooey - add object inspector window - modify position, scaling, rotation - show vertex count, mesh filename, ... - add 3d orientation widget to gooey - renderer - consolodate textures into just the render_state->palette_image - update copyMeshInfo() and meMeshInfo struct to remove image loading from filename - update rgInitEntity() to set tex_id of palette_image - check over renderer, camera, gooey init after changes - pass in frame time to camera movement functions to decouple speed from framerate - test camera speed when moving with composite vector - may be fixed?? need to test by examining camera position between frames and compare the distance - debug lighting (using multiple lights doesn't add correctly atm - move glUniform call to lights[i].position out of rgDraw, and into scene_loader init phase - show debug mesh for light positions - attenuate point lights in shader - simplify render_object buffers into 2d array or vector, and use stride when pushing to GL - remove checks for colors, textures from render_group functions - actually cannot remove checks for texture because some meshes aren't loaded properly - maybe can cause loading mesh to fail when more than one mesh per file - figure out bug in fragment shader when removing commented line - move input handling out to new file, controller? - map generation - pathfinding - assimp animation - replace aixlog with custom logging iostream? - think about combining mesh data and render_group data to save some memory - actually don't need to save the vertex/normal buffers after passing to opengl - use a storage pool for assimp meshes allowing reuse across entities - also cache textures from loaded meshes for re-use - replace remaining calls to malloc/free with safe(r) function in util.h - remove v2i/v3f... etc from util.h and either use glm everywhere, or write a smaller linear math.h ## 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) - 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 - use assimp material info in shaders for fancier lighting - add cpu performance counters in render loop - hgUpdateUV buffer can probably be improved by adding selected hexes to a small cache structure - can also try passing in small chunks with glBufferSubData instead of overwriting whole buffer - check for memory leaks w/ valgrind ## DONE: