+#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"
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;
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] )
return hit->tri[0] < world.sm_road.vertex_count;
}
-static bh_system bh_system_rigidbodies;
static void world_load(void)
{
/* Setup scene */
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
*/
water_init();
water_set_surface( &surf, sm->pivot[1] );
+ vg_info( "%.3f\n", sm->pivot[1] );
+
break;
}
}
{
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;
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;
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);