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; i<gate->submesh_count; i++ ){
mdl_submesh *sm = mdl_arritm( &world->meta.submeshs,
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 );
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 ){
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;
}
}
}
+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 */