X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=b1fc80d9b3a1db4bc5ba46fd358c7c1146c7a041;hb=26bde92c7084971f13352b37fd4d1ea528b45dcf;hp=4352b6e6031bd38f608b24061591e93e81ad72e1;hpb=a9e3181f697ab37fc74f072cfcfdf44e2d659468;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index 4352b6e..b1fc80d 100644 --- a/world.h +++ b/world.h @@ -806,24 +806,40 @@ VG_STATIC void world_update( world_instance *world, v3f pos ) random_ticks ++; } + float radius = 25.0f; + boxf trigger_proximity; + v3_add( pos, (v3f){ radius, radius, radius }, trigger_proximity[1] ); + v3_sub( pos, (v3f){ radius, radius, radius }, trigger_proximity[0] ); + + bh_iter it; + bh_iter_init( 0, &it ); + int idx; + int in_trigger = 0; - for( int i=0; itrigger_count; i++ ) + + while( bh_next( world->trigger_bh, &it, trigger_proximity, &idx ) ) { - struct trigger_zone *zone = &world->triggers[i]; + struct trigger_zone *zone = &world->triggers[idx]; - for( int j=0; jclasstype == k_classtype_particle_box ) { - logic_packet packet; - packet.location = zone->target_logic_brick; - packet.function = 0; + vg_line_boxf_transformed( zone->transform, (boxf){{-1.0f,-1.0f,-1.0f}, + { 1.0f, 1.0f, 1.0f}}, + 0xff00c0ff ); + for( int j=0; jtarget_logic_brick; + packet.function = 0; - packet.type = k_mdl_128bit_datatype_vec3; - packet.data._v4f[0] = vg_randf()*2.0f-1.0f; - packet.data._v4f[1] = vg_randf()*2.0f-1.0f; - packet.data._v4f[2] = vg_randf()*2.0f-1.0f; - m4x3_mulv( zone->transform, packet.data._v4f, packet.data._v4f ); + packet.type = k_mdl_128bit_datatype_vec3; + packet.data._v4f[0] = vg_randf()*2.0f-1.0f; + packet.data._v4f[1] = vg_randf()*2.0f-1.0f; + packet.data._v4f[2] = vg_randf()*2.0f-1.0f; + m4x3_mulv( zone->transform, packet.data._v4f, packet.data._v4f ); - logic_bricks_send_packet( world, &packet ); + logic_bricks_send_packet( world, &packet ); + } continue; } @@ -847,11 +863,17 @@ VG_STATIC void world_update( world_instance *world, v3f pos ) logic_bricks_send_packet( world, &packet ); } + + vg_line_boxf_transformed( zone->transform, (boxf){{-1.0f,-1.0f,-1.0f}, + { 1.0f, 1.0f, 1.0f}}, + 0xff00ff00 ); + } + else + { + vg_line_boxf_transformed( zone->transform, (boxf){{-1.0f,-1.0f,-1.0f}, + { 1.0f, 1.0f, 1.0f}}, + 0xff0000ff ); } - - vg_line_boxf_transformed( zone->transform, (boxf){{-1.0f,-1.0f,-1.0f}, - { 1.0f, 1.0f, 1.0f}}, - 0xff00ff00 ); } if( k_debug_light_indices ) @@ -878,7 +900,7 @@ VG_STATIC void world_update( world_instance *world, v3f pos ) sfd_update(); if( debug_logic_bricks ) - logic_bricks_debug( world ); + logic_bricks_debug( world, pos ); /* process soundscape transactions */ audio_lock();