bugs/map edits
[carveJwlIkooP6JGAAIwe30JlM.git] / world.h
diff --git a/world.h b/world.h
index 4352b6e6031bd38f608b24061591e93e81ad72e1..b1fc80d9b3a1db4bc5ba46fd358c7c1146c7a041 100644 (file)
--- 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; i<world->trigger_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; j<random_ticks; j++ )
+      if( zone->classtype == 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; j<random_ticks; j++ )
+         {
+            logic_packet packet;
+            packet.location = zone->target_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();