1
0
Fork 0
2022-untitled-game/code/game/engine/asset_mgr.c

195 lines
4.3 KiB
C
Raw Normal View History

2022-08-02 16:35:50 +00:00
void
asset_mgr_startup(void)
{
g_engine->asset_mgr.meshes.hash = hash_create(NEAREST_PRIME_1024, sizeof(handle_t));
g_engine->asset_mgr.materials.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t));
g_engine->asset_mgr.cameras.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t));
g_engine->asset_mgr.sounds.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t));
g_engine->asset_mgr.audio_sources.hash = hash_create(NEAREST_PRIME_256, sizeof(handle_t));
}
void
insert_mesh(mesh_t mesh)
{
handle_t handle = g_engine->asset_mgr.meshes.count;
g_engine->asset_mgr.meshes.data[handle] = mesh;
hash_add(&g_engine->asset_mgr.meshes.hash, HASH_CSTR(mesh.name), &handle);
g_engine->asset_mgr.meshes.count++;
}
void
insert_material(material_t material)
{
handle_t handle = g_engine->asset_mgr.materials.count;
g_engine->asset_mgr.materials.data[handle] = material;
hash_add(&g_engine->asset_mgr.materials.hash, HASH_CSTR(material.name), &handle);
g_engine->asset_mgr.materials.count++;
}
void
insert_sound(sound_t sound)
{
handle_t handle = g_engine->asset_mgr.sounds.count;
g_engine->asset_mgr.sounds.data[handle] = sound;
hash_add(&g_engine->asset_mgr.sounds.hash, HASH_CSTR(sound.name), &handle);
g_engine->asset_mgr.sounds.count++;
}
void
insert_audio_source(audio_source_t source)
{
handle_t handle = g_engine->asset_mgr.audio_sources.count;
g_engine->asset_mgr.audio_sources.data[handle] = source;
hash_add(&g_engine->asset_mgr.audio_sources.hash, HASH_CSTR(source.name), &handle);
g_engine->asset_mgr.audio_sources.count++;
}
void
insert_transform(transform_t transform)
{
handle_t handle = g_engine->asset_mgr.transforms.count;
g_engine->asset_mgr.transforms.data[handle] = transform;
g_engine->asset_mgr.transforms.count++;
}
void
insert_camera(camera_t camera)
{
handle_t handle = g_engine->asset_mgr.cameras.count;
g_engine->asset_mgr.cameras.data[handle] = camera;
hash_add(&g_engine->asset_mgr.cameras.hash, HASH_CSTR(camera.name), &handle);
g_engine->asset_mgr.cameras.count++;
}
void
insert_renderable(renderable_t renderable)
{
handle_t handle = g_engine->asset_mgr.renderables.count;
g_engine->asset_mgr.renderables.data[handle] = renderable;
g_engine->asset_mgr.renderables.count++;
}
void
insert_collider(box_collider_t collider)
{
handle_t handle = g_engine->asset_mgr.colliders.count;
g_engine->asset_mgr.colliders.data[handle] = collider;
g_engine->asset_mgr.colliders.count++;
}
void
insert_light(point_light_t light)
{
handle_t handle = g_engine->asset_mgr.lights.count;
g_engine->asset_mgr.lights.data[handle] = light;
g_engine->asset_mgr.lights.count++;
}
handle_t
get_mesh_handle(const char* name)
{
handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.meshes.hash, HASH_CSTR(name));
return *handle;
}
mesh_t*
get_mesh(handle_t handle)
{
mesh_t* result = &g_engine->asset_mgr.meshes.data[handle];
return result;
}
handle_t
get_material_handle(const char* name)
{
handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.materials.hash, HASH_CSTR(name));
return *handle;
}
material_t*
get_material(handle_t handle)
{
material_t* result = &g_engine->asset_mgr.materials.data[handle];
return result;
}
handle_t
get_sound_handle(const char* name)
{
handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.sounds.hash, HASH_CSTR(name));
return *handle;
}
sound_t*
get_sound(handle_t handle)
{
sound_t* result = &g_engine->asset_mgr.sounds.data[handle];
return result;
}
handle_t
get_audio_source_handle(const char* name)
{
handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.audio_sources.hash, HASH_CSTR(name));
return *handle;
}
audio_source_t*
get_audio_source(handle_t handle)
{
audio_source_t* result = &g_engine->asset_mgr.audio_sources.data[handle];
return result;
}
renderable_t*
get_renderable(handle_t handle)
{
renderable_t* result = &g_engine->asset_mgr.renderables.data[handle];
return result;
}
transform_t*
get_transform(handle_t handle)
{
transform_t* result = &g_engine->asset_mgr.transforms.data[handle];
return result;
}
camera_t*
get_camera(handle_t handle)
{
camera_t* result = &g_engine->asset_mgr.cameras.data[handle];
return result;
}
handle_t
get_camera_handle(const char* name)
{
handle_t* handle = (handle_t*)hash_get(g_engine->asset_mgr.cameras.hash, HASH_CSTR(name));
return *handle;
}