From: hgn Date: Mon, 6 Mar 2023 03:29:33 +0000 (+0000) Subject: some audio things X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=0136a935c00e3ea1f231fd88b38b44982fd409ac;hp=5086e369c10a9ae5d5d4fa271a99c731727dbcfa;p=carveJwlIkooP6JGAAIwe30JlM.git some audio things --- diff --git a/.gitignore b/.gitignore index d14eaf6..dd3c399 100755 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ bin/ dist/ compile_commands.json + +sound_src/rtj3_01_down.ogg +sound_src/song.ogg diff --git a/blender_export.py b/blender_export.py index a12850b..3e4704e 100644 --- a/blender_export.py +++ b/blender_export.py @@ -782,6 +782,11 @@ class classtype_audio(Structure): if obj.cv_data.bp1: flags |= 0x4 if obj.cv_data.bp2: flags |= 0x8 + if obj.cv_data.audio_format == 'stereo': + flags |= 0x200 + if obj.cv_data.audio_format == 'remain compressed': + flags |= 0x400 + _.flags = flags _.volume = obj.cv_data.fltp #} @@ -789,11 +794,14 @@ class classtype_audio(Structure): @staticmethod def editor_interface( layout, obj ): #{ - layout.prop( obj.cv_data, "strp" ) + layout.prop( obj.cv_data, "strp", text = "File (.ogg)" ) layout.prop( obj.cv_data, "bp0", text = "Looping" ) layout.prop( obj.cv_data, "bp1", text = "3D Audio" ) layout.prop( obj.cv_data, "bp2", text = "Auto Start" ) + layout.prop( obj.cv_data, "audio_format" ) + + layout.prop( obj.cv_data, "fltp", text = "Volume (0-1)" ) #} @staticmethod @@ -1266,6 +1274,7 @@ def encoder_process_material( mat ): if mat.cv_data.surface_prop == 'concrete': dest.surface_prop = 0 if mat.cv_data.surface_prop == 'wood': dest.surface_prop = 1 if mat.cv_data.surface_prop == 'grass': dest.surface_prop = 2 + if mat.cv_data.surface_prop == 'tiles': dest.surface_prop = 3 if mat.cv_data.shader == 'standard': dest.shader = 0 if mat.cv_data.shader == 'standard_cutout': dest.shader = 1 @@ -2714,6 +2723,14 @@ class CV_OBJ_SETTINGS(bpy.types.PropertyGroup): ('classtype_spawn_link',"classtype_spawn_link","",150), ('classtype_nonlocal_gate', "classtype_nonlocal_gate", "", 300) ]) + + audio_format: bpy.props.EnumProperty( + name="Loaded format", + items = [ + ('mono', "mono", "", 0), + ('stereo', "stereo", "", 1), + ('remain compressed', "remain compressed", "", 2) + ]) #} class CV_BONE_SETTINGS(bpy.types.PropertyGroup): @@ -2798,7 +2815,8 @@ class CV_MATERIAL_SETTINGS(bpy.types.PropertyGroup): items = [ ('concrete','concrete','',0), ('wood','wood','',1), - ('grass','grass','',2) + ('grass','grass','',2), + ('tiles','tiles','',3) ]) collision: bpy.props.BoolProperty( \ diff --git a/maps_src/mp_home.mdl b/maps_src/mp_home.mdl index 365dce4..b1360d8 100644 Binary files a/maps_src/mp_home.mdl and b/maps_src/mp_home.mdl differ diff --git a/model.h b/model.h index dff23af..4a31069 100644 --- a/model.h +++ b/model.h @@ -59,7 +59,8 @@ enum mdl_surface_prop { k_surface_prop_concrete = 0, k_surface_prop_wood = 1, - k_surface_prop_grass = 2 + k_surface_prop_grass = 2, + k_surface_prop_tiles = 3 }; enum material_flag diff --git a/player_skate.c b/player_skate.c index 93194f7..5350b2e 100644 --- a/player_skate.c +++ b/player_skate.c @@ -2253,8 +2253,6 @@ begin_collision:; VG_STATIC void player__skate_im_gui( player_instance *player ) { struct player_skate *s = &player->_skate; - - /* FIXME: Compression */ player__debugtext( 1, "V: %5.2f %5.2f %5.2f",player->rb.v[0], player->rb.v[1], player->rb.v[2] ); @@ -2622,7 +2620,7 @@ VG_STATIC void player__skate_post_animate( player_instance *player ) player->cam_velocity_influence = 1.0f; - v3f head = { 0.0f, 1.8f, 0.0f }; /* FIXME: Viewpoint entity */ + v3f head = { 0.0f, 1.8f, 0.0f }; m4x3_mulv( av->sk.final_mtx[ av->id_head ], head, s->state.head_position ); m4x3_mulv( player->rb.to_local, s->state.head_position, s->state.head_position ); diff --git a/skaterift.c b/skaterift.c index a410301..e0d8a31 100644 --- a/skaterift.c +++ b/skaterift.c @@ -261,10 +261,12 @@ VG_STATIC void vg_load(void) /* load home world */ world_load( &world_global.worlds[0], "maps/mp_home.mdl" ); +#if 0 world_load( &world_global.worlds[1], "maps/mp_gridmap.mdl" ); world_load( &world_global.worlds[2], "maps/mp_mtzero.mdl" ); world_link_nonlocal_gates( 0, 1 ); world_link_nonlocal_gates( 0, 2 ); +#endif vg_console_load_autos(); } @@ -332,6 +334,14 @@ VG_STATIC void vg_update_post(void) player__post_update( &localplayer ); + /* FIXME: TEMP */ + audio_lock(); + v3f ears = { 1.0f,0.0f,0.0f }; + m3x3_mulv( main_camera.transform, ears, ears ); + v3_copy( ears, vg_audio.listener_ears ); + v3_copy( main_camera.transform[3], vg_audio.listener_pos ); + audio_unlock(); + #if 0 menu_update(); vehicle_update_post(); @@ -519,11 +529,13 @@ VG_STATIC void vg_render(void) glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ); render_main_game(); + + m4x4_copy( main_camera.mtx.pv, vg.pv ); /* Other shite */ glDisable(GL_BLEND); glDisable( GL_DEPTH_TEST ); - vg_lines_drawall( (float *)main_camera.mtx.pv ); + vg_lines_drawall(); glViewport( 0,0, vg.window_x, vg.window_y ); } diff --git a/world.h b/world.h index 672ceb7..69def4c 100644 --- a/world.h +++ b/world.h @@ -341,8 +341,7 @@ VG_STATIC struct world_global * Allocated as system memory * -------------------------------------------------------------------------- */ - void *generic_heap, - *audio_heap; /* sub buffer of the audio buffer */ + void *generic_heap; /* rendering */ glmesh skydome; @@ -562,12 +561,14 @@ VG_STATIC void world_init(void) VG_STATIC void world_audio_init(void) { +#if 0 u32 size = vg_linear_remaining( vg_audio.audio_pool ) - sizeof(vg_linear_allocator); world_global.audio_heap = vg_create_linear_allocator( vg_audio.audio_pool, size, VG_MEMORY_SYSTEM ); +#endif } VG_STATIC void world_trigger_achievement( world_instance *world, u32 uid ) diff --git a/world_gen.h b/world_gen.h index 248a7d7..293784a 100644 --- a/world_gen.h +++ b/world_gen.h @@ -262,9 +262,9 @@ VG_STATIC void world_pct_audio( world_instance *world, mdl_node *pnode ) thing->flags = aud->flags; thing->temp_embedded_clip.path = mdl_pstr( world->meta, aud->pstr_file ); - thing->temp_embedded_clip.source_mode = k_audio_source_mono; + thing->temp_embedded_clip.flags = aud->flags; - audio_clip_load( &thing->temp_embedded_clip, world_global.audio_heap ); + audio_clip_load( &thing->temp_embedded_clip, world_global.generic_heap ); thing->player.name = mdl_pstr( world->meta, pnode->pstr_name ); thing->player.enqued = 0;