fuckin hell
[carveJwlIkooP6JGAAIwe30JlM.git] / world.h
diff --git a/world.h b/world.h
index f70f9ee87efc680ff40da95cb1064b7466f2283b..4f2c5c3a383df91819f794380c64feaf8fa0ff84 100644 (file)
--- a/world.h
+++ b/world.h
@@ -19,13 +19,13 @@ VG_STATIC int ray_world( v3f pos, v3f dir, ray_hit *hit );
 #include "bvh.h"
 #include "model.h"
 
-#include "shaders/terrain.h"
-#include "shaders/sky.h"
-#include "shaders/standard.h"
-#include "shaders/vblend.h"
-#include "shaders/gpos.h"
-#include "shaders/blitcolour.h"
-#include "shaders/alphatest.h"
+#include "shaders/scene_standard.h"
+#include "shaders/scene_standard_alphatest.h"
+#include "shaders/scene_vertex_blend.h"
+#include "shaders/scene_terrain.h"
+#include "shaders/scene_depth.h"
+
+#include "shaders/model_sky.h"
 
 typedef struct teleport_gate teleport_gate;
 
@@ -226,6 +226,16 @@ VG_STATIC struct gworld
    * logic_achievements;
    u32 achievement_count;
 
+   /* 
+    * Lights
+    */
+   struct world_light
+   {
+      v3f co;
+      v4f colour;
+   }
+   * lights;
+   u32 light_count;
 
    /*
     * Routes (world_routes.h)
@@ -415,11 +425,13 @@ VG_STATIC void world_init(void)
    world.sky_rate = 1.0;
    world.sky_target_rate = 1.0;
 
-   shader_terrain_register();
-   shader_sky_register();
-   shader_gpos_register();
-   shader_blitcolour_register();
-   shader_alphatest_register();
+   shader_scene_standard_register();
+   shader_scene_standard_alphatest_register();
+   shader_scene_vertex_blend_register();
+   shader_scene_terrain_register();
+   shader_scene_depth_register();
+
+   shader_model_sky_register();
 
    vg_info( "Loading world resources\n" );
    
@@ -621,6 +633,22 @@ VG_STATIC void world_update( v3f pos )
                                                         0xff00ff00 );
    }
 
+   for( int i=0; i<world.light_count; i++ )
+   {
+      struct world_light *light = &world.lights[i];
+
+      u32 colour = 0xff000000;
+      u8 r = light->colour[0] * 255.0f,
+         g = light->colour[1] * 255.0f,
+         b = light->colour[2] * 255.0f;
+
+      colour |= r;
+      colour |= g << 8;
+      colour |= b << 16;
+
+      vg_line_pt3( light->co, 0.25f, colour );
+   }
+
    world.in_trigger = in_trigger;
    sfd_update();
 }