From: hgn Date: Thu, 6 Mar 2025 11:04:45 +0000 (+0000) Subject: Add prop boxes flag X-Git-Url: https://skaterift.com/git/?a=commitdiff_plain;h=d9abedc74983aaffa88cb47d01d816c0874bb2d5;p=carveJwlIkooP6JGAAIwe30JlM.git Add prop boxes flag --- diff --git a/content_skaterift/maps/dev_heaven/main.mdl b/content_skaterift/maps/dev_heaven/main.mdl index ce8e007..f6d3387 100644 Binary files a/content_skaterift/maps/dev_heaven/main.mdl and b/content_skaterift/maps/dev_heaven/main.mdl differ diff --git a/content_skaterift/maps/dev_hub/main.mdl b/content_skaterift/maps/dev_hub/main.mdl index 1159e0a..63c75ad 100644 Binary files a/content_skaterift/maps/dev_hub/main.mdl and b/content_skaterift/maps/dev_hub/main.mdl differ diff --git a/skaterift_blender/sr_mdl.py b/skaterift_blender/sr_mdl.py index c8ad71e..3dc6dee 100644 --- a/skaterift_blender/sr_mdl.py +++ b/skaterift_blender/sr_mdl.py @@ -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 #} diff --git a/src/control_overlay.c b/src/control_overlay.c index 994d364..c7256a9 100644 --- a/src/control_overlay.c +++ b/src/control_overlay.c @@ -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); diff --git a/src/entity.h b/src/entity.h index 1031df0..e340efe 100644 --- a/src/entity.h +++ b/src/entity.h @@ -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 { diff --git a/src/player_walk.c b/src/player_walk.c index cf28d25..620d195 100644 --- a/src/player_walk.c +++ b/src/player_walk.c @@ -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; ient_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 );