fcked it
authorhgn <hgodden00@gmail.com>
Sun, 2 Mar 2025 20:59:24 +0000 (20:59 +0000)
committerhgn <hgodden00@gmail.com>
Sun, 2 Mar 2025 20:59:24 +0000 (20:59 +0000)
build.c
content_skaterift/maps/dev_heaven/main.mdl
skaterift_blender/sr_main.py
skaterift_blender/sr_mdl.py
src/audio.c
src/client.c
src/entity.h
src/skaterift.c
src/skaterift_script.c
src/world.h
src/world_load.c

diff --git a/build.c b/build.c
index a99b68b930a258ec91131d66bac5b48105f4cc84..20d180d1733b3e2a00e2177816b4b756d8c224e4 100644 (file)
--- a/build.c
+++ b/build.c
@@ -377,6 +377,8 @@ void s_testing_server(void)
 
 int main( int argc, char *argv[] )
 {
+   vg_log_init();
+
    char *arg;
    while( vg_argp( argc, argv ) ){
       if( vg_long_opt( "release-all", NULL ) )
index b35053a5dbcea29ae24d83bed5300eb3363641b4..182ccd9bb13b8eec49654e64212d5402cd57494a 100644 (file)
Binary files a/content_skaterift/maps/dev_heaven/main.mdl and b/content_skaterift/maps/dev_heaven/main.mdl differ
index b4662bcdde500b28017c27cef0054c4e46f1d42e..d03246c8e6a1323d96ce11c5ede51ce7a7d4138b 100644 (file)
@@ -496,7 +496,8 @@ class ent_challenge(Structure):#{
                ("reset_event",c_int32),
                ("first",c_uint32),
                ("camera",c_uint32),
-               ("status",c_uint32)] #runtime
+               ("status",c_uint32),
+               ("visible_when_unlocked_id",c_uint32)] #runtime
    sr_functions = { 0: 'unlock',
                     1: 'view',
                    -1: 'unview' }
@@ -1960,18 +1961,23 @@ class SR_OBJECT_ENT_CHALLENGE(bpy.types.PropertyGroup):#{
 
    first: bpy.props.PointerProperty( \
             type=bpy.types.Object, name="First Objective", \
-            poll=lambda self,obj: sr_filter_ent_type(obj,['ent_objective','ent_prop']))
+            poll=lambda self,obj: sr_filter_ent_type(obj,['ent_objective']))
 
    camera: bpy.props.PointerProperty( \
            type=bpy.types.Object, name="Camera", \
            poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera','ent_objective']))
 
+   visible_when_unlocked: bpy.props.PointerProperty( \
+            type=bpy.types.Object, name="Visibile when unlocked", \
+            poll=lambda self,obj: sr_filter_ent_type(obj,['ent_objective','ent_prop','ent_list']))
 
    @staticmethod
-   def sr_inspector( layout, data ):#{
+   def sr_inspector( layout, data ):
+   #{
       layout.prop( data[0], 'alias' )
       layout.prop( data[0], 'camera', text=("Camera" if not data[0].is_story else "Related Objective") )
-      layout.prop( data[0], 'first', text=("First Objective" if not data[0].is_story else "Indicator Prop") )
+      layout.prop( data[0], 'first', text=("First Objective") )
+      layout.prop( data[0], 'visible_when_unlocked' )
       layout.prop( data[0], 'time_limit' )
       layout.prop( data[0], 'is_story' )
       SR_OBJECT_ENT_VOLUME.inspect_target( layout, data, 'target', text=("On Activate" if data[0].is_story else "On Complete") )
@@ -2890,6 +2896,14 @@ def cv_draw():#{
             if data.target3:
                cv_draw_arrow( obj.location, data.target3.location, (1,1,1) )
          #}
+         elif ent_type == 'ent_list':#{
+            data = obj.SR_data.ent_list[0]
+            for subj in data.entities:
+            #{
+               if subj:
+                  cv_draw_arrow( obj.location, subj.target.location, (0.5,0.8,0.2) )
+            #}
+         #}
          elif ent_type == 'ent_challenge':#{
             data = obj.SR_data.ent_challenge[0]
             if data.target:
index 850a0660e12f397b85d98418592cd856962c7f9a..217f236a85b8ecf1279b4f4c4d99c4bc120ab803 100644 (file)
@@ -854,6 +854,7 @@ def _mdl_compiler_compile_entities():
             challenge.reset = sr_entity_id( obj_data.reset )
             challenge.reset_event = obj_data.reset_event
             challenge.first = sr_entity_id( obj_data.first )
+            challenge.visible_when_unlocked_id = sr_entity_id( obj_data.visible_when_unlocked )
             challenge.flags = 0x00
             challenge.camera = sr_entity_id( obj_data.camera )
             if obj_data.time_limit: challenge.flags |= 0x01
@@ -861,6 +862,24 @@ def _mdl_compiler_compile_entities():
             challenge.status = 0
             sr_ent_push( challenge )
          #}
+         elif ent_type == 'ent_list':
+         #{
+            obj_data = obj.SR_data.ent_list[0]
+            list = ent_list()
+            list.entity_ref_start = _mdl_compiler_ent_count( 'file_entity_ref' )
+            list.entity_ref_count = 0
+            for k in range(len(obj_data.entities)):
+            #{
+               if obj_data.entities[k]:
+               #{
+                  list_entry = file_entity_ref()
+                  list_entry.index = sr_entity_id( obj_data.entities[k].target )
+                  sr_ent_push( list_entry )
+                  list.entity_ref_count += 1
+               #}
+            #}
+            sr_ent_push( list )
+         #}
          elif ent_type == 'ent_region':#{
             region = ent_region()
             obj_data = obj.SR_data.ent_region[0]
@@ -975,8 +994,7 @@ def _mdl_compiler_compile_entities():
 
                checkpoint = ent_checkpoint()
                checkpoint.gate_index = _mdl_compiler.entity_ids[gate.name]
-               checkpoint.path_start = \
-                     _mdl_compiler_ent_count( 'ent_path_index' )
+               checkpoint.path_start = _mdl_compiler_ent_count( 'ent_path_index' )
                checkpoint.path_count = 0
                
                path = solve_graph( dij, gi.name, gj.name )
index dda8a2d033314a2ec3f10208b1db1008ea2c49ec..736b213c2a9ce8b0f5a00e3b2005f4732c3f2a81 100644 (file)
@@ -174,8 +174,8 @@ static void audio_air_synth_get_samples( void *_data, f32 *buf, u32 count ){
 static audio_clip air_synth = {
    .flags = k_audio_format_gen,
    .size = 0,
-   .func = audio_air_synth_get_samples,
-   .data = &air_audio_data
+   .generative_function = audio_air_synth_get_samples,
+   .any_data = &air_audio_data
 };
 
 void audio_init(void)
index 60b09fe69c3bb064d89bcaf915daf3fbc1785285..ae1cbc116def852d669a3a38bc6a97b0e7b3edbf 100644 (file)
@@ -30,7 +30,7 @@ static void async_client_ready( void *payload, u32 size )
 
 void vg_load(void)
 {
-   vg_audio.always_keep_compressed = 1;
+   //vg_audio.always_keep_compressed = 1;
    vg_loader_step( render_init, NULL );
 
    game_load();
@@ -86,6 +86,7 @@ void vg_launch_opt(void)
 
 int main( int argc, char *argv[] )
 {
+   vg_log_init();
    network_set_host( "skaterift.com", NULL );
    vg_mem.use_libc_malloc = 0;
    vg_set_mem_quota( 200*1024*1024 );
index c48db6be33702a9a897b0402aaa9434bee8c4af9..8c71974a070b0f3562f5345a51ad838caab40c0e 100644 (file)
@@ -35,6 +35,7 @@ typedef struct ent_miniworld ent_miniworld;
 typedef struct ent_prop ent_prop;
 typedef struct ent_region ent_region;
 typedef struct ent_list ent_list;
+typedef struct file_entity_ref file_entity_ref;
 typedef struct ent_glider ent_glider;
 typedef struct ent_npc ent_npc;
 
@@ -167,6 +168,16 @@ enum gate_type{
 };
 #endif
 
+struct ent_list
+{
+   u32 entity_ref_start, entity_ref_count;
+};
+
+struct file_entity_ref
+{
+   u32 index;
+};
+
 /* v102+ */
 enum ent_gate_flag
 {
@@ -642,7 +653,8 @@ struct ent_miniworld {
 
 enum prop_flag
 {
-   k_prop_flag_hidden = 0x1
+   k_prop_flag_hidden = 0x1,
+   k_prop_flag_spinning = 0x2
 };
 
 struct ent_prop {
index a13ec267b40206c3ee47551774801d350f6553c8..20f69ee68a0426fc6c90067e4d621b0f65b192de 100644 (file)
@@ -233,16 +233,13 @@ void vg_post_update(void)
 
    v3f ears = { 1.0f,0.0f,0.0f };
    m3x3_mulv( g_render.cam.transform, ears, ears );
-   v3_copy( ears, vg_audio.external_listener_ears );
-   v3_copy( g_render.cam.transform[3], vg_audio.external_listener_pos );
+   v3_copy( ears, _vg_audio.listener_right_ear_direction );
+   v3_copy( g_render.cam.transform[3], _vg_audio.listener_position );
 
-   if( localplayer.gate_waiting ){
-      m4x3_mulv( localplayer.gate_waiting->transport,
-                 vg_audio.external_listener_pos, 
-                 vg_audio.external_listener_pos );
-   }
+   if( localplayer.gate_waiting )
+      m4x3_mulv( localplayer.gate_waiting->transport, _vg_audio.listener_position, _vg_audio.listener_position );
 
-   v3_copy( localplayer.rb.v, vg_audio.external_lister_velocity );
+   v3_copy( localplayer.rb.v, _vg_audio.listener_velocity );
    audio_unlock();
 
    vehicle_update_post();
index 682e423f0b9fa186ede449c1ededef1aea6dae7e..c18fa9e9bd594ac8f92fecc06d17ee07b3496a42 100644 (file)
@@ -139,8 +139,7 @@ static bool _skaterift_script_intro( enum escript_event ev, const char *inf )
    { NULL, NULL },
    };
 
-   return _skaterift_generic_script_template( ev, inf,
-         "metascenes/intro.ms", EN, 1 );
+   return _skaterift_generic_script_template( ev, inf, "metascenes/intro.ms", EN, 1 );
 }
 
 
index 67a29ef669e283e51d09233433811775f58b4b35..7443e5e46b68b7e29f55bf5727c18898186f0745 100644 (file)
@@ -175,7 +175,9 @@ struct world_instance
                  ent_miniworld,
                  ent_prop,
                  ent_region,
-                 ent_glider;
+                 ent_glider,
+                 ent_list,
+                 file_entity_ref;
 
    /* These share the indexes of ent_challenge. 
     * So ent_challenge[x] is related to events[x] */
index 8b537ce5eb7fbf257ea671cc091e0a6915be02f9..b68ed81ae7ce155382c6f0965a2beb8ae4ba6a78 100644 (file)
@@ -112,6 +112,8 @@ static void world_instance_load_mdl( world_instance *world, const char *path, vo
       AF_LOAD_ARRAY_STRUCT( af, &world->ent_miniworld, ent_miniworld,  heap );
       AF_LOAD_ARRAY_STRUCT( af, &world->ent_prop,      ent_prop,       heap );
       AF_LOAD_ARRAY_STRUCT( af, &world->ent_glider,    ent_glider,     heap );
+      AF_LOAD_ARRAY_STRUCT( af, &world->ent_list,      ent_list,       heap );
+      AF_LOAD_ARRAY_STRUCT( af, &world->file_entity_ref, file_entity_ref, heap );
    }
 
    array_file_ptr infos;