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; }