#include "world.h"
-#if 0
/*
* BVH implementation
* ----------------------------------------------------------------------------
{
world_instance *world = user;
- ent_volume *volume_array = world_ent_array( world, k_ent_volume ),
- *volume = volume_array + item_index;
+ ent_volume *volume = mdl_arritm( &world->ent_volume, item_index );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){ 1.0f, 1.0f, 1.0f} );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){ 1.0f, 1.0f,-1.0f} );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){ 1.0f,-1.0f, 1.0f} );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){ 1.0f,-1.0f,-1.0f} );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){-1.0f, 1.0f, 1.0f} );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){-1.0f, 1.0f,-1.0f} );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){-1.0f,-1.0f, 1.0f} );
- m4x3_expand_aabb_point( volume->transform, bound, (v3f){-1.0f,-1.0f,-1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){ 1.0f, 1.0f, 1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){ 1.0f, 1.0f,-1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){ 1.0f,-1.0f, 1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){ 1.0f,-1.0f,-1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){-1.0f, 1.0f, 1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){-1.0f, 1.0f,-1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){-1.0f,-1.0f, 1.0f} );
+ m4x3_expand_aabb_point( volume->to_world, bound, (v3f){-1.0f,-1.0f,-1.0f} );
}
VG_STATIC float volume_vg_centroid( void *user, u32 item_index, int axis )
{
world_instance *world = user;
-
- ent_volume *volume_array = world_ent_array( world, k_ent_volume ),
- *volume = volume_array + item_index;
-
- return volume->transform[3][axis];
+ ent_volume *volume = mdl_arritm( &world->ent_volume, item_index );
+ return volume->to_world[3][axis];
}
VG_STATIC void volume_vg_swap( void *user, u32 ia, u32 ib )
{
world_instance *world = user;
- ent_volume *volume_array = world_ent_array( world, k_ent_volume ),
- *a = volume_array + ia,
- *b = volume_array + ib,
+ ent_volume *a = mdl_arritm( &world->ent_volume, ia ),
+ *b = mdl_arritm( &world->ent_volume, ib ),
temp;
temp = *a;
VG_STATIC void volume_vg_debug( void *user, u32 item_index )
{
world_instance *world = user;
- ent_volume *volume_array = world_ent_array( world, k_ent_volume ),
- *volume = volume_array + item_index;
-
- vg_line_boxf_transformed( volume->transform, (boxf){{-1.0f,-1.0f,-1.0f},
- { 1.0f, 1.0f, 1.0f}},
- 0xff00ff00 );
+ ent_volume *volume = mdl_arritm( &world->ent_volume, item_index );
+ vg_line_boxf_transformed( volume->to_world, (boxf){{-1.0f,-1.0f,-1.0f},
+ { 1.0f, 1.0f, 1.0f}},
+ 0xff00ff00 );
}
VG_STATIC bh_system bh_system_volumes =
.item_debug = volume_vg_debug,
.cast_ray = NULL
};
-#endif
#endif /* WORLD_VOLUMES_H */