projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
collision layers
[carveJwlIkooP6JGAAIwe30JlM.git]
/
world_gate.c
diff --git
a/world_gate.c
b/world_gate.c
index f757cdf8e1b760d167299c080b1731501e9ae1f8..765a09987e6f68cd61344e8163a2f641747dfe3c 100644
(file)
--- a/
world_gate.c
+++ b/
world_gate.c
@@
-68,6
+68,15
@@
VG_STATIC void world_gates_init(void)
mdl_close( &mgate );
}
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
*/
/*
* 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;
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 ){
if( gate->flags & k_ent_gate_custom_mesh ){
- shader_model_gate_uMdl( mmdl );
mesh_bind( &world->mesh_no_collide );
for( u32 i=0; i<gate->submesh_count; i++ ){
mdl_submesh *sm = mdl_arritm( &world->meta.submeshs,
mesh_bind( &world->mesh_no_collide );
for( u32 i=0; i<gate->submesh_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 {
}
}
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 );
}
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( 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;
}
}
continue;
}
}
@@
-296,10
+302,9
@@
VG_STATIC void world_unlink_nonlocal( world_instance *world ){
/*
* attatches nonlocal gates, to be called from main thread ONLY!
*/
/*
* 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;
world_instance *world = payload;
- u32 world_id = world - world_static.
world
s;
+ u32 world_id = world - world_static.
instance
s;
for( u32 j=0; j<mdl_arrcount(&world->ent_gate); j ++ ){
ent_gate *gate = mdl_arritm( &world->ent_gate, j );
for( u32 j=0; j<mdl_arrcount(&world->ent_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 );
const char *key = mdl_pstr( &world->meta, gate->key );
vg_info( "key: %s\n", key );
- for( u32 i=0; i<vg_list_size(world_static.
world
s); i++ ){
- world_instance *other = &world_static.
world
s[i];
+ for( u32 i=0; i<vg_list_size(world_static.
instance
s); i++ ){
+ world_instance *other = &world_static.
instance
s[i];
if( other == world ) continue;
if( other->status != k_world_status_loaded ) continue;
vg_info( "Checking world %u for key matches\n", i );
if( other == world ) continue;
if( other->status != k_world_status_loaded ) continue;
vg_info( "Checking world %u for key matches\n", i );