text3d
[carveJwlIkooP6JGAAIwe30JlM.git] / world_volumes.h
index f333626087586a752d4aeeeb10e3aa9f3c2ce64e..da39d265644848fd93989ae3ecbac8f9b78cfec5 100644 (file)
@@ -3,7 +3,6 @@
 
 #include "world.h"
 
-#if 0
 /*
  * BVH implementation
  * ----------------------------------------------------------------------------
@@ -13,35 +12,30 @@ VG_STATIC void volume_vg_expand_bound( void *user, boxf bound, u32 item_index )
 {
    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;
@@ -52,12 +46,10 @@ VG_STATIC void volume_vg_swap( void *user, u32 ia, u32 ib )
 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 = 
@@ -69,6 +61,5 @@ VG_STATIC bh_system bh_system_volumes =
    .item_debug = volume_vg_debug,
    .cast_ray = NULL
 };
-#endif
 
 #endif /* WORLD_VOLUMES_H */