X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=efa5f9d0e8b54b8e308a7e8a095c2e364bdd9d73;hb=refs%2Fheads%2Fmenu2;hp=7b1074354901f8abb99718e9c09a1f5f8ab8de93;hpb=171b279a489f1b906265759b33249f61d48d3d5f;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index 7b10743..3a067db 100644 --- a/world.h +++ b/world.h @@ -1,12 +1,12 @@ /* - * Copyright (C) 2021-2023 Mt.ZERO Software, Harry Godden - All Rights Reserved + * Copyright (C) 2021-2024 Mt.ZERO Software, Harry Godden - All Rights Reserved */ -#ifndef WORLD_H -#define WORLD_H - +#pragma once #include "render.h" #include "network_msg.h" +#include "addon.h" +#include "scene.h" /* types */ @@ -33,15 +33,13 @@ struct leaderboard_cache { typedef struct world_instance world_instance; -static void skaterift_world_get_save_path( enum world_purpose which, - char buf[128] ); +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" @@ -56,7 +54,8 @@ static void skaterift_world_get_save_path( enum world_purpose which, static f32 k_day_length = 30.0f; /* minutes */ static i32 k_debug_light_indices = 0, k_debug_light_complexity= 0, - k_light_preview = 0; + k_light_preview = 0, + k_light_editor = 0; #define WORLD_SURFACE_HAS_TRAFFIC 0x1 #define WORLD_SURFACE_HAS_PROPS 0x2 @@ -135,7 +134,7 @@ struct world_instance { float probabilities[3]; v3i light_cubes; - struct framebuffer heightmap; + vg_framebuffer *heightmap; /* * Dynamically allocated when world_load is called. @@ -158,6 +157,7 @@ struct world_instance { mdl_submesh sm_geo, sm_no_collide; u32 flags; + u32 alpha_tex; } * surfaces; u32 surface_count; @@ -187,7 +187,9 @@ struct world_instance { ent_cubemap, ent_miniworld, ent_prop, - ent_region; + ent_region, + ent_glider, + ent_npc; enum skybox { k_skybox_default, @@ -213,8 +215,7 @@ struct world_instance { /* graphics */ glmesh mesh_route_lines; glmesh mesh_geo, - mesh_no_collide, - mesh_water; + mesh_no_collide; u32 cubemap_cooldown, cubemap_side; /* leaderboards */ @@ -243,7 +244,7 @@ struct world_static { enum world_purpose active_instance; u32 focused_entity; /* like skateshop, challenge.. */ f32 focus_strength; - camera focus_cam; + vg_camera focus_cam; /* challenges */ ent_objective *challenge_target; @@ -255,11 +256,19 @@ struct world_static { k_world_loader_load } load_state; + + bool clear_async_op_when_done; } -static world_static; +extern world_static; -static void world_init(void); -static world_instance *world_current_instance(void); -static void world_switch_instance( u32 index ); +struct world_load_args +{ + enum world_purpose purpose; + addon_reg *reg; +}; -#endif /* WORLD_H */ +void world_init(void); +world_instance *world_current_instance(void); +void world_switch_instance( u32 index ); +void skaterift_world_load_thread( void *_args ); +void world_update( world_instance *world, v3f pos );