X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_gate.c;h=765a09987e6f68cd61344e8163a2f641747dfe3c;hb=35b57a341eb37d863ec69e4f011a88b7bfba5c01;hp=f757cdf8e1b760d167299c080b1731501e9ae1f8;hpb=3494503be52ee50b21e78c8ada30620210db6511;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_gate.c b/world_gate.c index f757cdf..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,10 +157,10 @@ 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 ){ - 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, @@ -160,9 +169,6 @@ 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 ); } @@ -267,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; } } @@ -296,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 ); @@ -310,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 );