some audio things
authorhgn <hgodden00@gmail.com>
Mon, 6 Mar 2023 03:29:33 +0000 (03:29 +0000)
committerhgn <hgodden00@gmail.com>
Mon, 6 Mar 2023 03:29:33 +0000 (03:29 +0000)
.gitignore
blender_export.py
maps_src/mp_home.mdl
model.h
player_skate.c
skaterift.c
world.h
world_gen.h

index d14eaf677ba4e94434fd07045504224012573a98..dd3c3994fdd1b491b9b93a6406795f12eef9b597 100755 (executable)
@@ -12,3 +12,6 @@ bin/
 dist/
 
 compile_commands.json
+
+sound_src/rtj3_01_down.ogg
+sound_src/song.ogg
index a12850b2b347f02b0391166b8cb90ed191716083..3e4704ea466fa1e6d8d97eb3a4f44b6bb0dee6f2 100644 (file)
@@ -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( \
index 365dce4c839b99081bd2e15eb6615f512fc54223..b1360d8136cc661172238899aca05edc86660398 100644 (file)
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 dff23af564ead71d21092642f8950bf9545e413b..4a310695f27784dda33164f7b7f494bcde36b87b 100644 (file)
--- 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
index 93194f7493a8645d52b718f37a2db1dc616cbcad..5350b2eff84e185e0b8845e78e0d40de0d9c0861 100644 (file)
@@ -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 );
index a410301d171e836ae82697678606ce19a4941ef2..e0d8a316aad848bd3d22a220f354698cb0333330 100644 (file)
@@ -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 672ceb71ca35fb85bb8a49b92b24649f1aa058ba..69def4c85875df63fa9bd9a9c0d207738b94daeb 100644 (file)
--- 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 )
index 248a7d76025409fd5fb983aab033bb670e0d5746..293784aa5365d496e3a375326300d2d242525de1 100644 (file)
@@ -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;