X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=af0507fafc0db0f33b0a4f33e6ba0a10d6b3f9f3;hb=cb16ccb05a796178c879ea8d5091663d215a5217;hp=ea5a5c4b7ec71408b6cd92da2fc545eaa302e8bc;hpb=a6e1ee0f51aa5570b20aad658365dec896f8c9b8;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index ea5a5c4..af0507f 100644 --- a/world.h +++ b/world.h @@ -1,9 +1,10 @@ +#include "common.h" + +static int ray_world( v3f pos, v3f dir, ray_hit *hit ); + #ifndef WORLD_H #define WORLD_H -#define VG_3D -#include "vg/vg.h" - #include "scene.h" #include "terrain.h" #include "render.h" @@ -22,14 +23,10 @@ static struct gworld v3f tutorial; -#if 0 - rigidbody box; -#endif - - teleport_gate gates[16]; + teleport_gate gates[64]; u32 gate_count; - rigidbody temp_rbs[32]; + rigidbody temp_rbs[128]; u32 rb_count; bh_tree bhcubes; @@ -51,6 +48,8 @@ static void render_world( m4x4f projection, m4x3f camera ) scene_bind( &world.foliage ); scene_draw( &world.foliage ); glEnable(GL_CULL_FACE); + + vg_line_boxf( world.geo.bbx, 0xff00ff00 ); } static void ray_world_get_tri( ray_hit *hit, v3f tri[3] ) @@ -69,7 +68,6 @@ static int ray_hit_is_ramp( ray_hit *hit ) return hit->tri[0] < world.sm_road.vertex_count; } -static bh_system bh_system_rigidbodies; static void world_load(void) { /* Setup scene */ @@ -94,6 +92,10 @@ static void world_load(void) scene_copy_slice( &world.geo, &world.sm_terrain ); + vg_info( "BBX: %.3f %.3f %.3f -> %.3f %.3f %.3f\n", + world.geo.bbx[0][0], world.geo.bbx[0][1], world.geo.bbx[0][2], + world.geo.bbx[1][0], world.geo.bbx[1][1], world.geo.bbx[1][2] ); + /* * TODO: Parametric marker import */ @@ -143,6 +145,8 @@ static void world_load(void) water_init(); water_set_surface( &surf, sm->pivot[1] ); + vg_info( "%.3f\n", sm->pivot[1] ); + break; } } @@ -199,6 +203,7 @@ static void world_load(void) { v3f pos; v3_mul( volume, (v3f){ vg_randf(), 1000.0f, vg_randf() }, pos ); + pos[1] = 1000.0f; v3_add( pos, world.geo.bbx[0], pos ); ray_hit hit; @@ -207,7 +212,7 @@ static void world_load(void) if( ray_world( pos, (v3f){0.0f,-1.0f,0.0f}, &hit )) { if( hit.normal[1] > 0.8f && !ray_hit_is_ramp(&hit) && - hit.pos[1] > wrender.height ) + hit.pos[1] > water_height()+10.0f ) { v4f qsurface, qrandom; v3f axis; @@ -222,7 +227,7 @@ static void world_load(void) v3_copy( hit.pos, transform[3] ); - if( vg_randf() < 0.00000006f ) + if( vg_randf() < 0.0006f ) { m3x3_identity( transform ); scene_add_foliage( &world.foliage, mfoliage, sm_tree, transform);