From d532493a0cb87ebcfc58a72ac5e8206301f9d770 Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 24 Jul 2023 08:35:59 +0100 Subject: [PATCH] SOME REGRESSIONS --- scene.h | 2 ++ world_gate.c | 16 +++++++++++----- world_gate.h | 1 + world_routes.c | 12 +++++++++--- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/scene.h b/scene.h index 13de419..6d77e42 100644 --- a/scene.h +++ b/scene.h @@ -142,8 +142,10 @@ VG_STATIC void scene_add_mdl_submesh( scene_context *ctx, mdl_context *mdl, v3_sub( src_verts[tri[1]].co, src_verts[tri[0]].co, ac ); v3_cross( ac, ab, tn ); +#if 0 if( v3_length2( tn ) <= 0.00001f ) continue; +#endif dst_indices[real_indices+0] = tri[0] + ctx->vertex_count; dst_indices[real_indices+1] = tri[1] + ctx->vertex_count; diff --git a/world_gate.c b/world_gate.c index b49113b..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 ); } diff --git a/world_gate.h b/world_gate.h index 89040fd..6f38440 100644 --- a/world_gate.h +++ b/world_gate.h @@ -28,5 +28,6 @@ VG_STATIC ent_gate *world_intersect_gates( world_instance *world, v3f pos, v3f last ); VG_STATIC void ent_gate_call( world_instance *world, ent_call *call ); +VG_STATIC void ent_gate_get_mdl_mtx( ent_gate *gate, m4x3f mmdl ); #endif /* WORLD_GATE_H */ diff --git a/world_routes.c b/world_routes.c index 26261a1..bd91b3c 100644 --- a/world_routes.c +++ b/world_routes.c @@ -1109,12 +1109,15 @@ VG_STATIC void world_routes_update_timer_texts( world_instance *world ) positions[0][1] = h1; } - m3x3_copy( gate->to_world, text->transform ); + m4x3f mmdl; + ent_gate_get_mdl_mtx( gate, mmdl ); + + m3x3_copy( mmdl, text->transform ); float ratio = v3_length(text->transform[0]) / v3_length(text->transform[1]); m3x3_scale( text->transform, (v3f){ size, size*ratio, 0.1f } ); - m4x3_mulv( gate->to_world, positions[j], text->transform[3] ); + m4x3_mulv( mmdl, positions[j], text->transform[3] ); } } } @@ -1304,7 +1307,10 @@ VG_STATIC void render_world_routes( world_instance *world, camera *cam, ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, next ); ent_gate *gate = mdl_arritm( &world->ent_gate, cp->gate_index ); - shader_model_gate_uMdl( gate->to_world ); + + m4x3f mmdl; + ent_gate_get_mdl_mtx( gate, mmdl ); + shader_model_gate_uMdl( mmdl ); for( u32 j=0; j<4; j++ ){ if( gate->routes[j] == i ){ -- 2.25.1