Browse Source

add interface functions meshInit(), modelInitManual()

remotes/bxxa/master
cinnaboot 4 years ago
parent
commit
c3d585201d
  1. 11
      include/asset.h
  2. 38
      src/asset.cpp

11
include/asset.h

@ -58,6 +58,17 @@ struct Assets
};
Mesh* meshInit(MemoryArena* arena,
u32 num_vertices,
u32 num_indices,
bool use_normals = false,
bool use_colors = false,
bool use_uvs = false);
Model* modelInitManual(MemoryArena* arena,
u32 num_meshes,
Mesh* meshes = nullptr);
Model* getModelByPath(Assets* assets, const char* filepath);
Texture* getTextureByPath(Assets* assets, const char* filepath);

38
src/asset.cpp

@ -25,6 +25,44 @@ Texture* getCachedTexture(Assets* assets, u64 path_hash);
// interface
Mesh*
meshInit(MemoryArena* arena,
u32 num_vertices,
u32 num_indices,
bool use_normals,
bool use_colors,
bool use_uvs)
{
Mesh* m = ARENA_ALLOC(arena, Mesh, 1);
m->num_vertices = num_vertices;
m->num_indices = num_indices;
m->vertices = ARENA_ALLOC(arena, vec3, num_vertices);
m->indices = ARENA_ALLOC(arena, u16, num_indices);
if (use_normals)
m->normals = ARENA_ALLOC(arena, vec3, num_vertices);
if (use_colors)
m->colors = ARENA_ALLOC(arena, vec3, num_vertices);
if (use_uvs)
m->uvs = ARENA_ALLOC(arena, vec2, num_vertices);
m->xform = ARENA_ALLOC(arena, mat4, 1);
*m->xform = mat4(1);
return m;
}
Model*
modelInitManual(MemoryArena* arena, u32 num_meshes, Mesh* meshes)
{
Model* mdl = ARENA_ALLOC(arena, Model, 1);
mdl->meshes = meshes; // NOTE: defaults to nullptr
mdl->num_meshes = num_meshes;
return mdl;
}
Model*
getModelByPath(Assets* assets, const char* filepath)
{

Loading…
Cancel
Save