X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_gate.c;h=f757cdf8e1b760d167299c080b1731501e9ae1f8;hb=b270d9efa9bedb7ca0813acffc1632f84900c0de;hp=a4cf8fdc703e8b21ae976918e924bbb5206fb671;hpb=6ab4435fb19beb6af6c52691793d5ca17a120f69;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_gate.c b/world_gate.c index a4cf8fd..f757cdf 100644 --- a/world_gate.c +++ b/world_gate.c @@ -151,6 +151,7 @@ VG_STATIC int render_gate( world_instance *world, world_instance *world_inside, m4x3_copy( gate->to_world, mmdl ); if( gate->flags & k_ent_gate_custom_mesh ){ + shader_model_gate_uMdl( mmdl ); mesh_bind( &world->mesh_no_collide ); for( u32 i=0; isubmesh_count; i++ ){ mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, @@ -161,13 +162,11 @@ VG_STATIC int render_gate( world_instance *world, world_instance *world_inside, else { m3x3_scale( mmdl, (v3f){ gate->dimensions[0], gate->dimensions[1], 1.0f } ); - + shader_model_gate_uMdl( mmdl ); mesh_bind( &world_gates.mesh ); mdl_draw_submesh( &world_gates.sm_surface ); } - shader_model_gate_uMdl( mmdl ); - glClear( GL_DEPTH_BUFFER_BIT ); glStencilFunc( GL_EQUAL, 1, 0xFF ); glStencilMask( 0x00 ); @@ -265,6 +264,7 @@ VG_STATIC ent_gate *world_intersect_gates( world_instance *world, ent_gate *gate = mdl_arritm( &world->ent_gate, i ); if( !(gate->flags & k_ent_gate_linked) ) continue; + if( gate->flags & k_ent_gate_locked ) continue; if( gate->flags & k_ent_gate_nonlocal ){ if( world_loader.state != k_world_loader_none ){ @@ -340,7 +340,7 @@ VG_STATIC void world_link_nonlocal_async( void *payload, u32 size ) v4_copy( gate->q[0], gate2->q[1] ); v4_copy( gate2->q[0], gate->q[1] ); - if( other->meta.info.version >= 102 ){ + if( world->meta.info.version >= 102 ){ gate->flags |= k_ent_gate_flip; gate2->flags |= k_ent_gate_flip; } @@ -367,4 +367,17 @@ matched:; } } +VG_STATIC void ent_gate_call( world_instance *world, ent_call *call ){ + u32 index = mdl_entity_id_id( call->id ); + ent_gate *gate = mdl_arritm( &world->ent_gate, index ); + + if( call->function == 0 ){ /* unlock() */ + gate->flags &= ~k_ent_gate_locked; + } + else { + vg_print_backtrace(); + vg_error( "Unhandled function id: %u\n", call->function ); + } +} + #endif /* WORLD_GATE_C */