small compression
[carveJwlIkooP6JGAAIwe30JlM.git] / world_gen.c
index b522cba80fca626acde99aebad4aa650b8075aa9..0b0c3442e3105773cf81f127405cb9bed86e6dd3 100644 (file)
@@ -18,7 +18,7 @@
  * Add all triangles from the model, which match the material ID
  * applies affine transform to the model
  */
-VG_STATIC void world_add_all_if_material( m4x3f transform, scene_context *scene, 
+static void world_add_all_if_material( m4x3f transform, scene_context *scene, 
                                           mdl_context *mdl, u32 id )
 {
    for( u32 i=0; i<mdl_arrcount(&mdl->meshs); i++ ){
@@ -46,7 +46,7 @@ VG_STATIC void world_add_all_if_material( m4x3f transform, scene_context *scene,
  * |        |
  * |________|
  */
-VG_STATIC void world_gen_add_blob( world_instance *world,
+static void world_gen_add_blob( world_instance *world,
                                    scene_context *scene, ray_hit *hit )
 {
    m4x3f transform;
@@ -106,7 +106,7 @@ VG_STATIC void world_gen_add_blob( world_instance *world,
 /* 
  * Sprinkle foliage models over the map on terrain material 
  */
-VG_STATIC void world_apply_procedural_foliage( world_instance *world,
+static void world_apply_procedural_foliage( world_instance *world,
                                                scene_context *scene,
                                                struct world_surface *mat )
 {
@@ -149,7 +149,7 @@ VG_STATIC void world_apply_procedural_foliage( world_instance *world,
    vg_info( "%d foliage models added\n", count );
 }
 
-VG_STATIC 
+static 
 void world_unpack_submesh_dynamic( world_instance *world,
                                    scene_context *scene, mdl_submesh *sm ){
    if( sm->flags & k_submesh_flag_consumed ) return;
@@ -165,7 +165,7 @@ void world_unpack_submesh_dynamic( world_instance *world,
 /*
  * Create the main meshes for the world
  */
-VG_STATIC void world_gen_generate_meshes( world_instance *world ){
+static void world_gen_generate_meshes( world_instance *world ){
    /* 
     * Compile meshes into the world scenes
     */
@@ -277,12 +277,12 @@ VG_STATIC void world_gen_generate_meshes( world_instance *world ){
    }
 
    /* unpack challenge models */
-   for( u32 i=0; i<mdl_arrcount( &world->ent_challenge ); i++ ){
-      ent_challenge *challenge = mdl_arritm( &world->ent_challenge, i );
+   for( u32 i=0; i<mdl_arrcount( &world->ent_objective ); i++ ){
+      ent_objective *objective = mdl_arritm( &world->ent_objective, i );
 
-      for( u32 j=0; j<challenge->submesh_count; j ++ ){
+      for( u32 j=0; j<objective->submesh_count; j ++ ){
          mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, 
-                                       challenge->submesh_start+j );
+                                       objective->submesh_start+j );
          world_unpack_submesh_dynamic( world, &world->scene_no_collide, sm );
       }
    }
@@ -326,7 +326,7 @@ struct light_indices_upload_info{
 /*
  * Async reciever to buffer light index data 
  */
-VG_STATIC void async_upload_light_indices( void *payload, u32 size ){
+static void async_upload_light_indices( void *payload, u32 size ){
    struct light_indices_upload_info *info = payload;
 
    glGenTextures( 1, &info->world->tex_light_cubes );
@@ -341,7 +341,7 @@ VG_STATIC void async_upload_light_indices( void *payload, u32 size ){
 /*
  * Computes light indices for world
  */
-VG_STATIC void world_gen_compute_light_indices( world_instance *world ){
+static void world_gen_compute_light_indices( world_instance *world ){
    /* light cubes */
    v3f cubes_min, cubes_max;
    v3_muls( world->scene_geo.bbx[0], 1.0f/k_world_light_cube_size, cubes_min );
@@ -435,12 +435,14 @@ VG_STATIC void world_gen_compute_light_indices( world_instance *world ){
                v3f closest;
                closest_point_aabb( light->transform.co, bbx, closest );
 
-               float dist = v3_dist( closest, light->transform.co ),
-                     influence = 1.0f/(dist+1.0f);
+               f32 dist2 = v3_dist2( closest, light->transform.co );
 
-               if( dist > light->range )
+               if( dist2 > light->range*light->range )
                   continue;
 
+               f32 dist = sqrtf(dist2),
+                   influence = 1.0f/(dist+1.0f);
+
                if( light->type == k_light_type_spot){
                   v3f local;
                   m4x3_mulv( light->inverse_world, center, local );
@@ -499,7 +501,7 @@ VG_STATIC void world_gen_compute_light_indices( world_instance *world ){
 /*
  * Rendering pass needed to complete the world
  */
-VG_STATIC void async_world_postprocess( void *payload, u32 _size ){
+static void async_world_postprocess( void *payload, u32 _size ){
    /* create scene lighting buffer */
    world_instance *world = payload;
 
@@ -654,7 +656,7 @@ VG_STATIC void async_world_postprocess( void *payload, u32 _size ){
 }
 
 /* Loads textures from the pack file */
-VG_STATIC void world_gen_load_surfaces( world_instance *world ){
+static void world_gen_load_surfaces( world_instance *world ){
    vg_info( "Loading textures\n" );
    world->texture_count = 0;