X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=efa5f9d0e8b54b8e308a7e8a095c2e364bdd9d73;hb=refs%2Fheads%2Fmaster;hp=98b9df90bc7e120bfea347fcad2e088037b444cc;hpb=1d8d9366022c064ef56d80d463c90a79721c6243;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h deleted file mode 100644 index 98b9df9..0000000 --- a/world.h +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2021-2023 Mt.ZERO Software, Harry Godden - All Rights Reserved - */ - -#ifndef WORLD_H -#define WORLD_H - -#include "render.h" -#include "network_msg.h" - -/* types - */ - -enum world_geo_type{ - k_world_geo_type_solid = 0, - k_world_geo_type_nonsolid = 1, - k_world_geo_type_water = 2 -}; - -enum world_purpose{ - k_world_purpose_hub = 0, - k_world_purpose_client = 1, - k_world_max -}; - -struct leaderboard_cache { - enum request_status status; - f64 cache_time; - u8 *data; - u32 data_len; -}; - -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" -#include "world_gen.h" -#include "world_info.h" -#include "world_load.h" -#include "world_physics.h" -#include "world_render.h" -#include "world_sfd.h" -#include "world_volumes.h" -#include "world_water.h" -#include "world_audio.h" -#include "world_routes.h" - -/* console variables */ - -static f32 k_day_length = 30.0f; /* minutes */ -static i32 k_debug_light_indices = 0, - k_debug_light_complexity= 0, - k_light_preview = 0; - - -struct world_instance { - /* Fixed items - * ------------------------------------------------------- - */ - - void *heap; - enum world_status{ - k_world_status_unloaded = 0, - k_world_status_loading = 1, - k_world_status_loaded = 2, - k_world_status_unloading = 3 /* dont spawn sounds and stuff */ - } - status; - - struct{ - boxf depthbounds; - int depth_computed; - - float height; - int enabled; - v4f plane; - } - water; - - f64 time; - - /* STD140 */ - struct ub_world_lighting{ - v4f g_cube_min, - g_cube_inv_range; - - v4f g_water_plane, - g_depth_bounds; - - v4f g_daysky_colour; - v4f g_nightsky_colour; - v4f g_sunset_colour; - v4f g_ambient_colour; - v4f g_sunset_ambient; - v4f g_sun_colour; - v4f g_sun_dir; - v4f g_board_0; - v4f g_board_1; - - float g_water_fog; - float g_time; - float g_realtime; - float g_shadow_length; - float g_shadow_spread; - - float g_time_of_day; - float g_day_phase; - float g_sunset_phase; - - int g_light_preview; - int g_shadow_samples; - - int g_debug_indices; - int g_debug_complexity; - } - ub_lighting; - GLuint ubo_lighting; - int ubo_bind_point; - - GLuint tbo_light_entities, - tex_light_entities, - tex_light_cubes; - - float probabilities[3]; - - v3i light_cubes; - struct framebuffer heightmap; - - /* - * Dynamically allocated when world_load is called. - * - * the following arrays index somewhere into this linear - * allocator - * -------------------------------------------------------------------------- - */ - - /* - * Main world .mdl - */ - mdl_context meta; - - GLuint *textures; - u32 texture_count; - - struct world_surface{ - mdl_material info; - mdl_submesh sm_geo, - sm_no_collide; - } - * surfaces; - u32 surface_count; - - ent_worldinfo info; - mdl_array_ptr ent_spawn, - ent_gate, - ent_light, - ent_route_node, - ent_path_index, - ent_checkpoint, - ent_route, - ent_water, - - ent_audio_clip, - ent_audio, - ent_volume, - ent_traffic, - ent_skateshop, - ent_marker, - ent_camera, - ent_swspreview, - ent_ccmd, - ent_objective, - ent_challenge, - ent_relay, - ent_cubemap; - - ent_gate *rendering_gate; - - /* logic - * ---------------------------------------------------- - */ - - /* world geometry */ - scene_context scene_geo, - scene_no_collide, - scene_lines; - - /* spacial mappings */ - 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; - - /* leaderboards */ - struct leaderboard_cache *leaderboard_cache; -}; - -struct world_static { - /* - * Allocated as system memory - * -------------------------------------------------------------------------- - */ - void *heap; - - u32 current_run_version; - double time, rewind_from, rewind_to, last_use; - - u32 active_trigger_volumes[8]; - u32 active_trigger_volume_count; - - addon_reg *instance_addons[ k_world_max ]; - world_instance instances[ k_world_max ]; - - enum world_purpose active_instance; - u32 focused_entity; /* like skateshop, challenge.. */ - f32 focus_strength; - camera focus_cam; - - /* challenges */ - ent_objective *challenge_target; - f32 challenge_timer; - - 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 */