X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=d35f0646b6ec1e8ed76b4d789e2f57bac4a74793;hb=430081b929e41735f0036ded51e186f5bacdbce3;hp=d6f80412bb97f00336614b124198b905d2fcd058;hpb=342fcbf6fda017bdd38d56ce0fa7c9e59e589f3b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index d6f8041..d35f064 100644 --- 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; @@ -154,7 +163,12 @@ struct world_instance { ent_skateshop, ent_marker, ent_camera, - ent_swspreview; + ent_swspreview, + ent_ccmd, + ent_objective, + ent_challenge, + ent_relay, + ent_cubemap; ent_gate *rendering_gate; @@ -168,15 +182,16 @@ 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; glmesh mesh_geo, mesh_no_collide, mesh_water; + u32 cubemap_cooldown, cubemap_side; rb_object rb_geo; }; @@ -191,14 +206,33 @@ struct world_static { u32 current_run_version; double time, rewind_from, rewind_to, last_use; - int in_volume; + u32 active_trigger_volumes[8]; + u32 active_trigger_volume_count; + + world_instance instances[4]; + i32 active_instance; + u32 focused_entity; /* like skateshop, challenge.. */ + f32 focus_strength; + camera focus_cam; - world_instance worlds[4]; - u32 active_world; + /* challenges */ + ent_objective *challenge_target; + f32 challenge_timer; + + 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; static void world_init(void); static world_instance *world_current_instance(void); +static void world_set_active_instance( u32 index ); #endif /* WORLD_H */