#pragma once #include #include "animation.h" #include "util.h" #include "util_image.h" // NOTE: wrapper tinygltf https://github.com/syoyo/tinygltf // https://github.com/KhronosGroup/glTF struct mesh { uint num_vertices; uint num_indices; glm::vec3* vertices; glm::vec3* normals; uint* indices; // FIXME: will have to use vec2 here to be able to use memcpy // this will break render_object::initGLFLoatBuffer logic which expects // vec3 glm::vec3* texture_coords; glm::mat4 xform; }; #define MAX_PATH_SIZE 256 struct model { uint num_meshes; model* next; char* filepath; uint64_t filepath_hash; mesh* meshes; // NOTE: fixed sized array // NOTE: pointer to a texture in render_state->textures util_image* diffuse_texture; // FIXME: node_animation has a pointer to a render_object. need to decouple // that somehow //node_animation* node_anim; }; model* assetLoadFromFile(memory_arena* arena, const char* filename);