X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_gate.c;h=765a09987e6f68cd61344e8163a2f641747dfe3c;hb=14b3d5c13faab36bd37ae27aa8c1501ba7146f89;hp=64333da9f6db11ca65626db0d1f60a216f4d0af1;hpb=5d8b16974b3c7d1104d23df42f23e901eb01a326;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_gate.c b/world_gate.c index 64333da..765a099 100644 --- a/world_gate.c +++ b/world_gate.c @@ -68,6 +68,15 @@ VG_STATIC void world_gates_init(void) mdl_close( &mgate ); } +VG_STATIC void ent_gate_get_mdl_mtx( ent_gate *gate, m4x3f mmdl ){ + m4x3_copy( gate->to_world, mmdl ); + + if( !(gate->flags & k_ent_gate_custom_mesh) ){ + m3x3_scale( mmdl, (v3f){ gate->dimensions[0], + gate->dimensions[1], 1.0f } ); + } +} + /* * Render the view through a gate */ @@ -148,7 +157,8 @@ VG_STATIC int render_gate( world_instance *world, world_instance *world_inside, glDisable( GL_CULL_FACE ); m4x3f mmdl; - m4x3_copy( gate->to_world, mmdl ); + ent_gate_get_mdl_mtx( gate, mmdl ); + shader_model_gate_uMdl( mmdl ); if( gate->flags & k_ent_gate_custom_mesh ){ mesh_bind( &world->mesh_no_collide ); @@ -159,15 +169,10 @@ 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 } ); - 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 ); @@ -268,7 +273,7 @@ VG_STATIC ent_gate *world_intersect_gates( world_instance *world, if( gate->flags & k_ent_gate_locked ) continue; if( gate->flags & k_ent_gate_nonlocal ){ - if( world_loader.state != k_world_loader_none ){ + if( world_static.load_state != k_world_loader_none ){ continue; } } @@ -297,10 +302,9 @@ VG_STATIC void world_unlink_nonlocal( world_instance *world ){ /* * attatches nonlocal gates, to be called from main thread ONLY! */ -VG_STATIC void world_link_nonlocal_async( void *payload, u32 size ) -{ +VG_STATIC void world_link_nonlocal_async( void *payload, u32 size ){ world_instance *world = payload; - u32 world_id = world - world_static.worlds; + u32 world_id = world - world_static.instances; for( u32 j=0; jent_gate); j ++ ){ ent_gate *gate = mdl_arritm( &world->ent_gate, j ); @@ -311,8 +315,8 @@ VG_STATIC void world_link_nonlocal_async( void *payload, u32 size ) const char *key = mdl_pstr( &world->meta, gate->key ); vg_info( "key: %s\n", key ); - for( u32 i=0; istatus != k_world_status_loaded ) continue; vg_info( "Checking world %u for key matches\n", i );