+ u32 random_ticks = 0;
+
+ while( random_accum > 0.1f ){
+ random_accum -= 0.1f;
+ random_ticks ++;
+ }
+
+ float radius = 32.0f;
+
+ bh_iter it;
+ bh_iter_init_range( 0, &it, pos, radius );
+ i32 idx;
+
+ while( bh_next( world->entity_bh, &it, &idx ) ){
+ u32 id = world->entity_list[ idx ],
+ type = mdl_entity_id_type( id ),
+ index = mdl_entity_id_id( id );
+
+ if( type != k_ent_volume ) continue;
+
+ ent_volume *volume = mdl_arritm( &world->ent_volume, index );
+ boxf cube = {{-1.0f,-1.0f,-1.0f},{1.0f,1.0f,1.0f}};
+
+ if( volume->flags & k_ent_volume_flag_particles ){
+ vg_line_boxf_transformed( volume->to_world, cube, 0xff00c0ff );
+
+ for( int j=0; j<random_ticks; j++ ){
+ ent_call basecall;
+ basecall.id = id;
+ basecall.data = NULL;
+ basecall.function = 0;
+
+ entity_call( world, &basecall );
+ }
+ }
+ else{
+ for( u32 i=0; i<world_static.active_trigger_volume_count; i++ )
+ if( world_static.active_trigger_volumes[i] == index )
+ goto next_volume;
+
+ if( world_static.active_trigger_volume_count >
+ vg_list_size(world_static.active_trigger_volumes) ) continue;
+
+ v3f local;
+ m4x3_mulv( volume->to_local, pos, local );
+
+ if( (fabsf(local[0]) <= 1.0f) &&
+ (fabsf(local[1]) <= 1.0f) &&
+ (fabsf(local[2]) <= 1.0f) ){
+ ent_call basecall;
+ basecall.function = 0;
+ basecall.id = id;
+ basecall.data = NULL;