Add prop boxes flag
authorhgn <hgodden00@gmail.com>
Thu, 6 Mar 2025 11:04:45 +0000 (11:04 +0000)
committerhgn <hgodden00@gmail.com>
Thu, 6 Mar 2025 11:04:45 +0000 (11:04 +0000)
content_skaterift/maps/dev_heaven/main.mdl
content_skaterift/maps/dev_hub/main.mdl
skaterift_blender/sr_mdl.py
src/control_overlay.c
src/entity.h
src/player_walk.c

index ce8e00731034cf98ccfbe0129ce7bbd6f9338fbc..f6d33871cf85c88a2e705bfac18d2d2b6dc29468 100644 (file)
Binary files a/content_skaterift/maps/dev_heaven/main.mdl and b/content_skaterift/maps/dev_heaven/main.mdl differ
index 1159e0a0a35182de541a86b7c6c2ab676327299a..63c75ad454ca4ce2007f3b3de63f3cdcb20dd390 100644 (file)
Binary files a/content_skaterift/maps/dev_hub/main.mdl and b/content_skaterift/maps/dev_hub/main.mdl differ
index c8ad71e63020f07ef0faf528fe6cf6e5f5022106..3dc6deef6264df2cd0fa1cf5d7320f542fdb3d09 100644 (file)
@@ -632,7 +632,8 @@ def _mdl_compiler_compile_entities():
             #}
             elif obj_data.tipo == 'nonlocal':
             #{
-               gate.target = _af_pack_string(obj_data.nonlocal_world)
+               if obj_data.nonlocal_world != '':
+                  gate.target = _af_pack_string(obj_data.nonlocal_world)
                gate.key = _af_pack_string(obj_data.key)
                flags |= 0x0002
             #}
index 994d3641a7402a325864173acb85f7b3a29d6ad0..c7256a9a9fabc8ae0e3ddd886a16ff79179a784b 100644 (file)
@@ -70,6 +70,7 @@ void control_overlay_render(void)
 {
    if( !control_overlay.enabled ) return;
    if( skaterift.activity != k_skaterift_default ) return;
+   if( _cutscene.state != k_cutscene_state_none ) return;
 
    glEnable(GL_BLEND);
    glDisable(GL_DEPTH_TEST);
index 1031df0ad437f158f749c7b6ae5a6a0a5184001e..e340efe523e18428724c95e3d18cfd87dacdcb08 100644 (file)
@@ -646,7 +646,8 @@ struct ent_miniworld {
 enum prop_flag
 {
    k_prop_flag_hidden = 0x1,
-   k_prop_flag_spinning = 0x2
+   k_prop_flag_spinning = 0x2,
+   k_prop_flag_collider = 0x4
 };
 
 struct ent_prop {
index cf28d251475cf5deec0ed173d6426da43ae42369..620d195f8fd9768caa5c0ed529690aefb28a6888 100644 (file)
@@ -518,8 +518,25 @@ static void player_walk_update_generic(void){
     * Collision detection
     */
 
-   len = rb_capsule__scene( mtx, &w->collider, NULL, 
-                            world->geo_bh, manifold, 0 );
+   len = rb_capsule__scene( mtx, &w->collider, NULL, world->geo_bh, manifold, 0 );
+
+   for( u32 i=0; i<af_arrcount( &world->ent_prop ); i ++ )
+   {
+      ent_prop *prop = af_arritm( &world->ent_prop, i );
+      if( prop->flags & k_prop_flag_collider )
+      {
+         m4x3f mmdl, mmdl_inv;
+         q_m3x3( prop->transform.q, mmdl );
+         v3_copy( prop->transform.co, mmdl[3] );
+         m4x3_invert_affine( mmdl, mmdl_inv );
+
+         boxf box;
+         v3_negate( prop->transform.s, box[0] );
+         v3_copy( prop->transform.s, box[1] );
+         len += rb_capsule__box( mtx, &w->collider, mmdl, mmdl_inv, box, manifold+len );
+      }
+   }
+
    player_walk_custom_filter( world, manifold, len, 0.01f );
    len = rb_manifold_apply_filtered( manifold, len );