cubemaps
[carveJwlIkooP6JGAAIwe30JlM.git] / world.h
diff --git a/world.h b/world.h
index a3f69a5dc5043dd9af02998f510d70bcd012a946..d3bc38863c7a1a33d1f49caaaa7697a8750c504b 100644 (file)
--- a/world.h
+++ b/world.h
@@ -16,8 +16,17 @@ enum world_geo_type{
    k_world_geo_type_water = 2
 };
 
+enum world_purpose{
+   k_world_purpose_hub,
+   k_world_purpose_client
+}
+purpose;
+
 typedef struct world_instance world_instance;
 
+static void skaterift_world_get_save_path( enum world_purpose which, 
+                                           char buf[128] );
+
 /* submodule headers */
 #include "world_entity.h"
 #include "world_gate.h"
@@ -34,8 +43,8 @@ typedef struct world_instance world_instance;
 
 /* console variables */
 
-static float k_day_length            = 30.0f; /* minutes */
-static int   k_debug_light_indices   = 0,
+static f32   k_day_length            = 30.0f; /* minutes */
+static i32   k_debug_light_indices   = 0,
              k_debug_light_complexity= 0,
              k_light_preview         = 0;
 
@@ -155,7 +164,11 @@ struct world_instance {
                  ent_marker,
                  ent_camera,
                  ent_swspreview,
-                 ent_ccmd;
+                 ent_ccmd,
+                 ent_challenge,
+                 ent_unlock,
+                 ent_relay,
+                 ent_cubemap;
 
    ent_gate *rendering_gate;
 
@@ -169,9 +182,9 @@ struct world_instance {
                  scene_lines;
 
    /* spacial mappings */
-   bh_tree *audio_bh,
-           *volume_bh,
-           *geo_bh;
+   bh_tree *geo_bh,
+           *entity_bh;
+   u32 *entity_list;
 
    /* graphics */
    glmesh mesh_route_lines;
@@ -180,6 +193,9 @@ struct world_instance {
           mesh_water;
 
    rb_object rb_geo;
+
+   ent_challenge *challenge_target;
+   f32 challenge_timer;
 };
 
 struct world_static {
@@ -195,8 +211,18 @@ struct world_static {
    u32 active_trigger_volumes[8];
    u32 active_trigger_volume_count;
 
-   world_instance worlds[4];
-   i32            active_world;
+   world_instance instances[4];
+   i32            active_instance;
+
+   addon_reg *addon_hub,
+             *addon_client;
+
+   enum world_loader_state{
+      k_world_loader_none,
+      k_world_loader_preload,
+      k_world_loader_load
+   }
+   load_state;
 }
 static world_static;