From 5ffa5942000bfbae873654c69c26b8c4b0b09117 Mon Sep 17 00:00:00 2001 From: Shariq Shah Date: Sat, 18 Jan 2020 18:51:54 +1100 Subject: [PATCH] Added utility sound_source entity functions --- assets/scenes/Level_1.symtres | 17 ++++++-- assets/sounds/bullet_1.wav | Bin 0 -> 146998 bytes src/common/version.h | 2 +- src/game/entity.c | 16 +++---- src/game/entity.h | 23 +++++----- src/game/player.c | 77 +++++++++++++++++++++++----------- src/game/scene.c | 17 +++++--- src/game/sound_source.c | 45 ++++++++++++++++++++ src/game/sound_source.h | 12 ++++++ src/system/sound.c | 53 ++++++++++++++++++----- src/system/sound.h | 17 ++++---- todo.txt | 36 +++++++--------- 12 files changed, 220 insertions(+), 95 deletions(-) create mode 100644 assets/sounds/bullet_1.wav create mode 100644 src/game/sound_source.c create mode 100644 src/game/sound_source.h diff --git a/assets/scenes/Level_1.symtres b/assets/scenes/Level_1.symtres index 4bdb1fc..b1c874c 100755 --- a/assets/scenes/Level_1.symtres +++ b/assets/scenes/Level_1.symtres @@ -3,7 +3,7 @@ Scene_Config debug_draw_color : 0.800 0.400 0.100 1.000 fog_type : 1 fog_density : 0.1000 - fog_color : 0.170 0.490 0.630 + fog_color : 0.310 0.412 0.529 debug_draw_physics : false fog_start_distance : 10.0000 fog_max_distance : 450.0000 @@ -16,13 +16,22 @@ Player { type : 2 scale : 1.000 1.000 1.000 - rotation : 0.000 -0.654 0.000 0.758 + rotation : 0.000 -0.351 0.000 -0.938 active : true - position : -38.848 2.992 -29.629 + position : 1.750 2.869 22.751 bouding_box_min : -0.500 -0.500 -0.500 name : Player bouding_box_max : 0.500 0.500 0.500 - camera_clear_color : 0.298 0.600 0.898 1.000 + camera_clear_color : 0.310 0.412 0.529 1.000 +} + +Scene_Entity_Entry +{ + scale : 1.000 1.000 1.000 + rotation : 0.000 0.000 0.000 1.000 + position : 8.000 5.000 -20.000 + filename : Spot + name : Test_Light } Scene_Entity_Entry diff --git a/assets/sounds/bullet_1.wav b/assets/sounds/bullet_1.wav new file mode 100644 index 0000000000000000000000000000000000000000..8548366e103b266813597d8ee9f559c6378e0c58 GIT binary patch literal 146998 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 r$GKW04;Ev;GBA(02#oGZ}$_h+y8 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

&A75^GVlGiA}S$ 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

xzltvqa6Lpk<|aKK6$w^H7A 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 WX_F*MlBjO2ci;ZsSNs1w?*9VoA?APp literal 0 HcmV?d00001 diff --git a/src/common/version.h b/src/common/version.h index e317ed1..ddb39b6 100755 --- a/src/common/version.h +++ b/src/common/version.h @@ -4,7 +4,7 @@ /* Auto generated version file. DO NOT MODIFY */ #define SYMMETRY_VERSION_MAJOR 0 #define SYMMETRY_VERSION_MINOR 1 -#define SYMMETRY_VERSION_REVISION 312 +#define SYMMETRY_VERSION_REVISION 313 #define SYMMETRY_VERSION_BRANCH "dev" #endif \ No newline at end of file diff --git a/src/game/entity.c b/src/game/entity.c index e45c434..40527fd 100755 --- a/src/game/entity.c +++ b/src/game/entity.c @@ -389,6 +389,8 @@ struct Entity* entity_read(struct Parser_Object* object, struct Entity* parent_e case ET_LIGHT: { struct Light* light = scene_light_create(scene, name, parent_entity, LT_POINT); + if(!light) + return new_entity; if(hashmap_value_exists(object->data, "light_type")) light->type = hashmap_int_get(object->data, "light_type"); if(hashmap_value_exists(object->data, "outer_angle")) light->outer_angle = hashmap_float_get(object->data, "outer_angle"); if(hashmap_value_exists(object->data, "inner_angle")) light->inner_angle = hashmap_float_get(object->data, "inner_angle"); @@ -405,6 +407,8 @@ struct Entity* entity_read(struct Parser_Object* object, struct Entity* parent_e case ET_SOUND_SOURCE: { struct Sound_Source* sound_source = scene_sound_source_create(scene, name, parent_entity, "sounds/teh_beatz.wav", ST_WAV, true, true); + if(!sound_source) + return new_entity; struct Sound_Source_Buffer* default_source_buffer = sound_source->source_buffer; uint default_source_instance = sound_source->source_instance; @@ -451,11 +455,6 @@ struct Entity* entity_read(struct Parser_Object* object, struct Entity* parent_e log_error("entity:read", "No filename provided for sound source for entity '%s'", name); } new_entity = &sound_source->base; - } - break; - case ET_PLAYER: - { - } break; case ET_STATIC_MESH: @@ -465,6 +464,8 @@ struct Entity* entity_read(struct Parser_Object* object, struct Entity* parent_e if(hashmap_value_exists(object->data, "geometry")) geometry_name = hashmap_str_get(object->data, "geometry"); if(hashmap_value_exists(object->data, "material")) material_type = hashmap_int_get(object->data, "material"); struct Static_Mesh* mesh = scene_static_mesh_create(scene, name, parent_entity, geometry_name, material_type); + if(!mesh) + return new_entity; new_entity = &mesh->base; //Set material model params for this particular mesh @@ -495,11 +496,6 @@ struct Entity* entity_read(struct Parser_Object* object, struct Entity* parent_e }; } break; - case ET_ROOT: - { - //scene_root_set(entity); - } - break; default: log_warning("Unhandled Entity type '%d' detected", type); break; diff --git a/src/game/entity.h b/src/game/entity.h index f0c3d8c..219c8ab 100755 --- a/src/game/entity.h +++ b/src/game/entity.h @@ -169,17 +169,18 @@ struct Static_Mesh struct Player { - struct Entity base; - struct Static_Mesh* mesh; - struct Camera* camera_node; - float move_speed; - float move_speed_multiplier; - float turn_speed; - float jump_speed; - float gravity; - float min_downward_distance; - float min_forward_distance; - bool grounded; + struct Entity base; + struct Static_Mesh* mesh; + struct Camera* camera; + struct Sound_Source* weapon_sound; + float move_speed; + float move_speed_multiplier; + float turn_speed; + float jump_speed; + float gravity; + float min_downward_distance; + float min_forward_distance; + bool grounded; }; void entity_init(struct Entity* entity, const char* name, struct Entity* parent); diff --git a/src/game/player.c b/src/game/player.c index a7dae85..2fa2778 100755 --- a/src/game/player.c +++ b/src/game/player.c @@ -14,9 +14,13 @@ #include "debug_vars.h" #include "geometry.h" #include "im_render.h" +#include "event.h" +#include "sound_source.h" #include +static void player_on_mousebutton_released(const struct Event* event); + void player_init(struct Player* player, struct Scene* scene) { struct Game_State* game_state = game_state_get(); @@ -44,11 +48,19 @@ void player_init(struct Player* player, struct Scene* scene) player_camera->clear_color.y = 0.6f; player_camera->clear_color.z = 0.9f; player_camera->clear_color.w = 1.f; - player->camera_node = player_camera; + player->camera = player_camera; + + struct Sound_Source* weapon_sound = scene_sound_source_create(scene, "Player_Weapon_Sound_Source", player, "sounds/bullet_1.wav", ST_WAV, false, false); + if(weapon_sound) + player->weapon_sound = weapon_sound; + else + log_error("player:init", "Could not add weapon entity to player"); // Mark player camera and mesh as transient for now. We don't need to save them to file since we recreate them here anyway - player->camera_node->base.flags |= EF_TRANSIENT; + player->camera->base.flags |= EF_TRANSIENT; player->mesh->base.flags |= EF_TRANSIENT; + player->weapon_sound->base.flags |= EF_TRANSIENT; + transform_parent_set(player_camera, player, true); @@ -57,10 +69,13 @@ void player_init(struct Player* player, struct Scene* scene) sound_listener_set(game_state->sound, player_camera); sound_listener_update(game_state->sound); + + event_manager_subscribe(game_state->event_manager, EVT_MOUSEBUTTON_RELEASED, &player_on_mousebutton_released); } void player_destroy(struct Player* player) { + event_manager_unsubscribe(game_state_get()->event_manager, EVT_MOUSEBUTTON_RELEASED, &player_on_mousebutton_released); entity_reset(player, player->base.id); scene_entity_base_remove(game_state_get()->scene, &player->base); player->base.flags = EF_NONE; @@ -108,7 +123,7 @@ void player_update(struct Player* player, struct Scene* scene, float dt) transform_rotate(player, &rot_axis_yaw, -yaw, TS_WORLD); if(pitch != 0.f) - transform_rotate(player->camera_node, &rot_axis_pitch, pitch, TS_LOCAL); + transform_rotate(player->camera, &rot_axis_pitch, pitch, TS_LOCAL); /* Movement */ float move_speed = player->move_speed; @@ -218,33 +233,45 @@ void player_update(struct Player* player, struct Scene* scene, float dt) debug_vars_show_vec3("Translation", &translation); debug_vars_show_bool("Grounded", player->grounded); +} + +void player_on_mousebutton_released(const struct Event* event) +{ + int button = event->mousebutton.button; + int state = event->mousebutton.state; + struct Game_State* game_state = game_state_get(); + struct Scene* scene = game_state->scene; + struct Player* player = &scene->player; + + if(game_state->game_mode != GAME_MODE_GAME) + return; + /* Aiming and Projectiles*/ - if(input_mousebutton_state_get(MSB_RIGHT, KS_PRESSED)) + if(button == MSB_LEFT) { log_message("Right Click"); - int mouse_x = 0, mouse_y = 0; - platform_mouse_position_get(&mouse_x, &mouse_y); - struct Ray bullet_ray = camera_screen_coord_to_ray(player->camera_node, mouse_x, mouse_y); + int half_width = 0, half_height = 0; + window_get_drawable_size(game_state->window, &half_width, &half_height); + half_width /= 2; + half_height /= 2; + struct Ray bullet_ray = camera_screen_coord_to_ray(player->camera, half_width, half_height); + + struct Entity* colliding_entity = scene_ray_intersect_closest(scene, &bullet_ray, ERM_STATIC_MESH); + + if(!colliding_entity || colliding_entity == player->mesh) + return; - struct Raycast_Result bullet_ray_result; - scene_ray_intersect(scene, &bullet_ray, &bullet_ray_result, ERM_STATIC_MESH); - if(bullet_ray_result.num_entities_intersected > 0) + float distance = bv_distance_ray_bounding_box(&bullet_ray, &colliding_entity->derived_bounding_box); + if(distance > 0.f) { - for(int i = 0; i < bullet_ray_result.num_entities_intersected; i++) - { - struct Entity* colliding_entity = bullet_ray_result.entities_intersected[i]; - if(colliding_entity == player->mesh) - continue; - float distance = bv_distance_ray_bounding_box(&bullet_ray, &colliding_entity->derived_bounding_box); - if(distance > 0.f) - { - vec3 collision_point = bullet_ray.direction; - vec3_scale(&collision_point, &collision_point, distance); - vec3_add(&collision_point, &collision_point, &bullet_ray.origin); - struct Static_Mesh* bullet = scene_static_mesh_create(game_state_get()->scene, "bullet", NULL, "cube.symbres", MAT_UNSHADED); - if(bullet) transform_set_position(bullet, &collision_point); - } - } + vec3 collision_point = bullet_ray.direction; + vec3_scale(&collision_point, &collision_point, distance); + vec3_add(&collision_point, &collision_point, &bullet_ray.origin); + //struct Static_Mesh* bullet = scene_static_mesh_create(game_state_get()->scene, "bullet", NULL, "cube.symbres", MAT_UNSHADED); + struct Light* bullet = entity_load("Spot", DIRT_INSTALL); + if(bullet) transform_set_position(bullet, &collision_point); + sound_source_play(game_state->sound, player->weapon_sound); } + } } diff --git a/src/game/scene.c b/src/game/scene.c index 54e25f5..475fd46 100755 --- a/src/game/scene.c +++ b/src/game/scene.c @@ -17,6 +17,7 @@ #include "../system/platform.h" #include "../common/hashmap.h" #include "renderer.h" +#include "sound_source.h" #include #include @@ -186,7 +187,7 @@ bool scene_load(struct Scene* scene, const char* filename, int directory_type) quat_assign(&player->base.transform.rotation, &rotation); transform_update_transmat(player); - if(hashmap_value_exists(player_data, "camera_clear_color")) player->camera_node->clear_color = hashmap_vec4_get(player_data, "camera_clear_color"); + if(hashmap_value_exists(player_data, "camera_clear_color")) player->camera->clear_color = hashmap_vec4_get(player_data, "camera_clear_color"); num_objects_loaded++; } break; @@ -233,7 +234,7 @@ bool scene_save(struct Scene* scene, const char* filename, int directory_type) // Player struct Parser_Object* player_object = parser_object_new(parser, PO_PLAYER); entity_write(&scene->player, player_object, true); - hashmap_vec4_set(player_object->data, "camera_clear_color", &scene->player.camera_node->clear_color); + hashmap_vec4_set(player_object->data, "camera_clear_color", &scene->player.camera->clear_color); scene_write_entity_list(scene, ET_DEFAULT, parser); scene_write_entity_list(scene, ET_LIGHT, parser); @@ -390,9 +391,7 @@ void scene_post_update(struct Scene* scene) if(sound_source->base.transform.is_modified) { - vec3 abs_pos = { 0.f, 0.f, 0.f }; - transform_get_absolute_position(&sound_source->base, &abs_pos); - sound_source_instance_update_position(sound, sound_source->source_instance, abs_pos); + sound_source_update(sound, sound_source); sound_source->base.transform.is_modified = false; } } @@ -1019,7 +1018,7 @@ struct Entity* scene_entity_duplicate(struct Scene* scene, struct Entity* entity if(entity->archetype_index != -1) { new_entity = entity_load(scene->entity_archetypes[entity->archetype_index], DIRT_INSTALL); - scene_entity_parent_set(scene, new_entity, entity->transform.parent); + if(new_entity) scene_entity_parent_set(scene, new_entity, entity->transform.parent); return new_entity; } @@ -1034,6 +1033,8 @@ struct Entity* scene_entity_duplicate(struct Scene* scene, struct Entity* entity { struct Light* light = (struct Light*)entity; struct Light* new_light = scene_light_create(scene, entity->name, entity->transform.parent, light->type); + if(!new_light) + return new_entity; new_light->inner_angle = light->inner_angle; new_light->outer_angle = light->outer_angle; new_light->falloff = light->falloff; @@ -1053,6 +1054,8 @@ struct Entity* scene_entity_duplicate(struct Scene* scene, struct Entity* entity { struct Static_Mesh* mesh = (struct Static_Mesh*)entity; struct Static_Mesh* new_mesh = scene_static_mesh_create(scene, entity->name, entity->transform.parent, geom_get(mesh->model.geometry_index)->filename, mesh->model.material->type); + if(!new_mesh) + return new_entity; memcpy(new_mesh->model.material_params, mesh->model.material_params, sizeof(struct Variant) * MMP_MAX); new_entity = &new_mesh->base; //Handle collision related information here! @@ -1062,6 +1065,8 @@ struct Entity* scene_entity_duplicate(struct Scene* scene, struct Entity* entity { struct Sound_Source* sound_source = (struct Sound_Source*)entity; struct Sound_Source* new_sound_source = scene_sound_source_create(scene, entity->name, entity->transform.parent, sound_source->source_buffer->filename, sound_source->type, sound_source->loop, sound_source->playing); + if(!new_sound_source) + return new_entity; new_sound_source->min_distance = sound_source->min_distance; new_sound_source->max_distance = sound_source->max_distance; new_sound_source->rolloff_factor = sound_source->rolloff_factor; diff --git a/src/game/sound_source.c b/src/game/sound_source.c new file mode 100644 index 0000000..1e1a5a1 --- /dev/null +++ b/src/game/sound_source.c @@ -0,0 +1,45 @@ +#include "sound_source.h" +#include "entity.h" +#include "../system/sound.h" +#include "transform.h" +#include "../common/log.h" + +static void sound_source_validate_instance(struct Sound* sound, struct Sound_Source* entity) +{ + if(!sound_source_instance_is_valid(sound, entity->source_instance)) + { + entity->source_instance = sound_source_instance_create(sound, entity->source_buffer, true); + vec3 abs_position = { 0.f }; + transform_get_absolute_position(entity, &abs_position); + sound_source_instance_update_position(sound, entity->source_instance, abs_position); + } +} + +void sound_source_play(struct Sound* sound, struct Sound_Source* entity) +{ + sound_source_validate_instance(sound, entity); + sound_source_instance_rewind(sound, entity->source_instance); + sound_source_instance_play(sound, entity->source_instance); +} + +void sound_source_pause(struct Sound* sound, struct Sound_Source* entity) +{ + sound_source_validate_instance(sound, entity); + sound_source_instance_pause(sound, entity->source_instance); +} + +void sound_source_stop(struct Sound* sound, struct Sound_Source* entity) +{ + sound_source_validate_instance(sound, entity); + sound_source_instance_stop(sound, entity->source_instance); +} + +void sound_source_update(struct Sound* sound, struct Sound_Source* entity) +{ + if(sound_source_instance_is_valid(sound, entity->source_instance)) + { + vec3 abs_position = { 0.f }; + transform_get_absolute_position(entity, &abs_position); + sound_source_instance_update_position(sound, entity->source_instance, abs_position); + } +} diff --git a/src/game/sound_source.h b/src/game/sound_source.h new file mode 100644 index 0000000..a0e7a27 --- /dev/null +++ b/src/game/sound_source.h @@ -0,0 +1,12 @@ +#ifndef SOUND_SOURCE_H +#define SOUND_SOURCE_H + +struct Sound_Source; +struct Sound; + +void sound_source_play(struct Sound* sound, struct Sound_Source* entity); +void sound_source_pause(struct Sound* sound, struct Sound_Source* entity); +void sound_source_stop(struct Sound* sound, struct Sound_Source* entity); +void sound_source_update(struct Sound* sound, struct Sound_Source* entity); + +#endif \ No newline at end of file diff --git a/src/system/sound.c b/src/system/sound.c index f29acc3..eca9ab1 100755 --- a/src/system/sound.c +++ b/src/system/sound.c @@ -87,7 +87,7 @@ void sound_cleanup(struct Sound* sound) { struct Sound_Source_Buffer* source = &sound->sound_buffers[i]; if(source->type != ST_NONE) - sound_source_destroy(sound, source); + sound_source_buffer_destroy(sound, source); } @@ -108,6 +108,11 @@ void sound_source_instance_update_position(struct Sound* sound, uint source_inst Soloud_set3dSourceParameters(sound->soloud_context, source_instance, abs_pos.x, abs_pos.y, abs_pos.z); } +bool sound_source_instance_is_valid(struct Sound* sound, uint source_instance) +{ + return Soloud_isValidVoiceHandle(sound->soloud_context, source_instance); +} + uint sound_source_instance_create(struct Sound* sound, struct Sound_Source_Buffer* source, bool is3d) { assert(source); @@ -185,12 +190,12 @@ bool sound_source_instance_is_paused(struct Sound* sound, uint source_instance) return Soloud_getPause(sound->soloud_context, source_instance); } -struct Sound_Source_Buffer* sound_source_create(struct Sound* sound, const char* filename, int type) +struct Sound_Source_Buffer* sound_source_buffer_create(struct Sound* sound, const char* filename, int type) { if(!filename) return NULL; - struct Sound_Source_Buffer* source = sound_source_get(sound, filename); + struct Sound_Source_Buffer* source = sound_source_buffer(sound, filename); // See if we've already loaded this file otherwise, get the next empty slot. // If we can't find an empty slot, print error and return NULL @@ -264,7 +269,7 @@ struct Sound_Source_Buffer* sound_source_create(struct Sound* sound, const char* return source; } -struct Sound_Source_Buffer* sound_source_get(struct Sound* sound, const char* name) +struct Sound_Source_Buffer* sound_source_buffer(struct Sound* sound, const char* name) { struct Sound_Source_Buffer* source = NULL; for(int i = 0; i < MAX_SOUND_BUFFERS; i++) @@ -281,11 +286,11 @@ struct Sound_Source_Buffer* sound_source_get(struct Sound* sound, const char* na return source; } -void sound_source_destroy(struct Sound* sound, struct Sound_Source_Buffer* source) +void sound_source_buffer_destroy(struct Sound* sound, struct Sound_Source_Buffer* source) { if(source) { - sound_source_stop_all(sound, source); + sound_source_buffer_stop_all(sound, source); switch(source->type) { case ST_WAV: Wav_destroy(source->wav); source->wav = NULL; break; @@ -296,7 +301,7 @@ void sound_source_destroy(struct Sound* sound, struct Sound_Source_Buffer* sourc } } -void sound_source_volume_set(struct Sound* sound, struct Sound_Source_Buffer* source, float volume) +void sound_source_buffer_volume_set(struct Sound* sound, struct Sound_Source_Buffer* source, float volume) { assert(source); switch(source->type) @@ -306,7 +311,7 @@ void sound_source_volume_set(struct Sound* sound, struct Sound_Source_Buffer* so } } -void sound_source_loop_set(struct Sound* sound, struct Sound_Source_Buffer* source, bool loop) +void sound_source_buffer_loop_set(struct Sound* sound, struct Sound_Source_Buffer* source, bool loop) { assert(source); switch(source->type) @@ -316,7 +321,7 @@ void sound_source_loop_set(struct Sound* sound, struct Sound_Source_Buffer* sour } } -void sound_source_stop_all(struct Sound* sound, struct Sound_Source_Buffer* source) +void sound_source_buffer_stop_all(struct Sound* sound, struct Sound_Source_Buffer* source) { assert(source); switch(source->type) @@ -326,7 +331,7 @@ void sound_source_stop_all(struct Sound* sound, struct Sound_Source_Buffer* sour } } -void sound_source_min_max_distance_set(struct Sound* sound, struct Sound_Source_Buffer* source, float min_distance, float max_distance) +void sound_source_buffer_min_max_distance_set(struct Sound* sound, struct Sound_Source_Buffer* source, float min_distance, float max_distance) { assert(source); switch(source->type) @@ -335,3 +340,31 @@ void sound_source_min_max_distance_set(struct Sound* sound, struct Sound_Source_ case ST_WAV_STREAM: WavStream_set3dMinMaxDistance(source->wavstream, min_distance, max_distance); break; } } + +uint sound_source_buffer_play_3d(struct Sound* sound, struct Sound_Source_Buffer* source, vec3 position) +{ + assert(source); + uint handle = -1; + + switch(source->type) + { + case ST_WAV: handle = Soloud_play3d(sound->soloud_context, source->wav, position.x, position.y, position.z); break; + case ST_WAV_STREAM: handle = Soloud_play3d(sound->soloud_context, source->wavstream, position.x, position.y, position.z); break; + } + + return handle; +} + +uint sound_source_buffer_play_clocked_3d(struct Sound* sound, struct Sound_Source_Buffer* source, float delay, vec3 position) +{ + assert(source); + uint handle = -1; + + switch(source->type) + { + case ST_WAV: handle = Soloud_play3dClocked(sound->soloud_context, (double)delay, source->wav, position.x, position.y, position.z); break; + case ST_WAV_STREAM: handle = Soloud_play3dClocked(sound->soloud_context, (double)delay, source->wavstream, position.x, position.y, position.z); break; + } + + return handle; +} diff --git a/src/system/sound.h b/src/system/sound.h index f358b84..2116e76 100755 --- a/src/system/sound.h +++ b/src/system/sound.h @@ -63,17 +63,20 @@ void sound_source_instance_rewind(struct Sound* sound, uint source_instance); void sound_source_instance_stop(struct Sound* sound, uint source_instance); void sound_source_instance_min_max_distance_set(struct Sound* sound, uint source_instance, float min_distance, float max_distance); void sound_source_instance_attenuation_set(struct Sound* sound, uint source_instance, int attenuation_type, float rolloff_factor); +bool sound_source_instance_is_valid(struct Sound* sound, uint source_instance); float sound_source_instance_volume_get(struct Sound* sound, uint source_instance); bool sound_source_instance_loop_get(struct Sound* sound, uint source_instance); bool sound_source_instance_is_paused(struct Sound* sound, uint source_instance); -struct Sound_Source_Buffer* sound_source_create(struct Sound* sound, const char* filename, int type); -struct Sound_Source_Buffer* sound_source_get(struct Sound* sound, const char* name); -void sound_source_destroy(struct Sound* sound, struct Sound_Source_Buffer* source); -void sound_source_volume_set(struct Sound* sound, struct Sound_Source_Buffer* source, float volume); -void sound_source_loop_set(struct Sound* sound, struct Sound_Source_Buffer* source, bool loop); -void sound_source_stop_all(struct Sound* sound, struct Sound_Source_Buffer* source); -void sound_source_min_max_distance_set(struct Sound* sound, struct Sound_Source_Buffer* source, float min_distance, float max_distance); +struct Sound_Source_Buffer* sound_source_buffer_create(struct Sound* sound, const char* filename, int type); +struct Sound_Source_Buffer* sound_source_buffer(struct Sound* sound, const char* name); +int sound_source_buffer_play_3d(struct Sound* sound, struct Sound_Source_Buffer* source, vec3 position); +int sound_source_buffer_play_clocked_3d(struct Sound* sound, struct Sound_Source_Buffer* source, float delay, vec3 position); +void sound_source_buffer_destroy(struct Sound* sound, struct Sound_Source_Buffer* source); +void sound_source_buffer_volume_set(struct Sound* sound, struct Sound_Source_Buffer* source, float volume); +void sound_source_buffer_loop_set(struct Sound* sound, struct Sound_Source_Buffer* source, bool loop); +void sound_source_buffer_stop_all(struct Sound* sound, struct Sound_Source_Buffer* source); +void sound_source_buffer_min_max_distance_set(struct Sound* sound, struct Sound_Source_Buffer* source, float min_distance, float max_distance); #endif diff --git a/todo.txt b/todo.txt index 16f0750..1d95b25 100644 --- a/todo.txt +++ b/todo.txt @@ -1,11 +1,17 @@ Todo: - - Fix quaternion resetting/flipping - - Fix aggressive frustum culling when camera looks up and the object right infront of the viewer gets culled + - Sound source entity functions that automatically track if handles are valid and create/update as necessary + - Player jump cooldown, don't allow jump until a certian time interval has passed, even if we're grounded + - Sky Cube maps + - Gameplay level features: + - Each scene should always have a directional light that serves as the main source of light when there are no other lights + - Each scene should always have a texture cube that serves as the sky + - Triggers + - Basic Enemy + - Main Menu Scene + ? Split this todo into gameplay/engine todos - Check if running in a lower frame rate affects movement ? Write entity flags to scene file or when saving entity to file? ? Add scene init/de-init function hashmap that maps a function that should be called when scene is loaded and unloaded. Save this to file for every scene or map functions based on the name of the scene? - - Command to create a placeholder entity of a particular type in a file - - Reduce the opacity of wireframe around selected entity in editor - Release mouse when window loses focus and limit fps ? When saving a scene entity entry, save the changed properties as well, that way when the scene is loaded, we load the base properties from archetype and the ones we changed per entry are saved when we saved the entity this will prevent us from having needless amount of entities with only minor changes from one another @@ -18,32 +24,17 @@ Todo: - Decide how to handle scale when checking sphere-ray intersection - Add material export for blender exporter? - Show current filename of the scene we are working on and whether we have made any changes to it since the last time we saved - - Fix crash when exiting from fullscreen mode - Check if we still need to rotate by 90 degrees when exporting from blender - Fire an event when the game mode is changed so that editor camera state and other game related systems know when to update - Add config file reloading and fire event that notifies potential listeners to update values from the new config file - Command to reload entities only - Serialize player, camera properties to file - - Gameplay level features: - - Each scene should always have a directional light that serves as the main source of light when there are no other lights - - Each scene should always have a texture cube that serves as the sky - - Player/World collision and movement using ray casts only - - Triggers - - Basic Enemy - - Main Menu Scene - ? Split this todo into gameplay/engine todos - Change mouse behaviour to lock cursor when looking around so as not to interfere with gui elements when in editor mode - Folder management api to create/delete folders when none exist. Dirent would suffice for our simple needs? ? Entity creator window to create new types of entities and write them to disk - - Entity browser window which lists all existing entity types from - where new entities can be creating by dragging and dropping on to - the current scene - - Editor related messages/notifications in the bottom status bar ? Maybe remove physics engine and ode all together if we're not using it or investigate the memory leaks that it causes if we're going to keep it? - Disable editor event recievers on game mode change - - Color picker - - Color palette, picker and dropper - Key binding and function to snap editor camera to selected entity location - Key binding and function to orient entity to camera orientation @@ -55,7 +46,6 @@ Todo: ? Improve bounding sphere calculation - Change the way lights are set as uniforms to remove snprintf calls per frame for every light attribute - Command interface that allows applying commands to selected entity like r x 30 would rotate the selected entity or entities on x axis by 30 degrees - - Screen mouse coordinates to world-coordinates for aiming - Player projectiles and sounds - Space partitioning and scene handling - Move Gui_State and Editor_State into game_state and modify usage as needed @@ -129,6 +119,9 @@ Bugs: - Fix camera not rotating if the cursor overlaps any ui element - Fix hierarchichal transformations in the editor when the entity being transformed is a child entity of another entity - Fix camera frustum creation/update + - Fix quaternion resetting/flipping + - Fix aggressive frustum culling when camera looks up and the object right infront of the viewer gets culled + - Fix crash when exiting from fullscreen mode Done: * Input @@ -401,4 +394,5 @@ Done: * Fixed crash where if an entity is hoverd in editor and deleted, the game crashes because the hovered variable in editor doesn't know that the entity was deleted * Improve player collision by impelenting sliding along collision plane in case of collision * Brought back sprinting by fixing a bug where player movement related variables were written to file as floats but read back as ints - * Move player movement related variables from function to player struct and load them from config file \ No newline at end of file + * Move player movement related variables from function to player struct and load them from config file + * Screen mouse coordinates to world-coordinates for aiming \ No newline at end of file