projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
TODO about preupdate call style
[carveJwlIkooP6JGAAIwe30JlM.git]
/
world.h
diff --git
a/world.h
b/world.h
index c412a88097cc3bb98ba044f0a08df45c4dc49764..49d1aaea690849f6fb32bfb3e645901940d9d33d 100644
(file)
--- a/
world.h
+++ b/
world.h
@@
-1,11
+1,12
@@
/*
/*
- * Copyright (C) 2021-202
3
Mt.ZERO Software, Harry Godden - All Rights Reserved
+ * Copyright (C) 2021-202
4
Mt.ZERO Software, Harry Godden - All Rights Reserved
*/
*/
-#ifndef WORLD_H
-#define WORLD_H
-
+#pragma once
#include "render.h"
#include "render.h"
+#include "network_msg.h"
+#include "addon.h"
+#include "scene.h"
/* types
*/
/* types
*/
@@
-16,14
+17,29
@@
enum world_geo_type{
k_world_geo_type_water = 2
};
k_world_geo_type_water = 2
};
+enum world_purpose{
+ k_world_purpose_invalid = -1,
+ 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;
typedef struct world_instance world_instance;
+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"
/* 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_physics.h"
#include "world_render.h"
#include "world_sfd.h"
@@
-31,20
+47,26
@@
typedef struct world_instance world_instance;
#include "world_water.h"
#include "world_audio.h"
#include "world_routes.h"
#include "world_water.h"
#include "world_audio.h"
#include "world_routes.h"
+#include "world_routes_ui.h"
/* console variables */
static f32 k_day_length = 30.0f; /* minutes */
static i32 k_debug_light_indices = 0,
k_debug_light_complexity= 0,
/* 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;
+ k_light_preview = 0,
+ k_light_editor = 0;
+#define WORLD_SURFACE_HAS_TRAFFIC 0x1
+#define WORLD_SURFACE_HAS_PROPS 0x2
struct world_instance {
/* Fixed items
* -------------------------------------------------------
*/
struct world_instance {
/* Fixed items
* -------------------------------------------------------
*/
+ v4f player_co;
+
void *heap;
enum world_status{
k_world_status_unloaded = 0,
void *heap;
enum world_status{
k_world_status_unloaded = 0,
@@
-65,6
+87,7
@@
struct world_instance {
water;
f64 time;
water;
f64 time;
+ f32 tar_min, tar_max;
/* STD140 */
struct ub_world_lighting{
/* STD140 */
struct ub_world_lighting{
@@
-133,6
+156,7
@@
struct world_instance {
mdl_material info;
mdl_submesh sm_geo,
sm_no_collide;
mdl_material info;
mdl_submesh sm_geo,
sm_no_collide;
+ u32 flags;
}
* surfaces;
u32 surface_count;
}
* surfaces;
u32 surface_count;
@@
-156,9
+180,20
@@
struct world_instance {
ent_camera,
ent_swspreview,
ent_ccmd,
ent_camera,
ent_swspreview,
ent_ccmd,
+ ent_objective,
ent_challenge,
ent_challenge,
- ent_unlock,
- ent_relay;
+ ent_relay,
+ ent_cubemap,
+ ent_miniworld,
+ ent_prop,
+ ent_region,
+ ent_glider,
+ ent_npc;
+
+ enum skybox {
+ k_skybox_default,
+ k_skybox_space
+ } skybox;
ent_gate *rendering_gate;
ent_gate *rendering_gate;
@@
-181,11
+216,13
@@
struct world_instance {
glmesh mesh_geo,
mesh_no_collide,
mesh_water;
glmesh mesh_geo,
mesh_no_collide,
mesh_water;
+ u32 cubemap_cooldown, cubemap_side;
- rb_object rb_geo;
+ /* leaderboards */
+ struct leaderboard_cache *leaderboard_cache;
- ent_challenge *challenge_target;
-
f32 challenge_timer
;
+ /* ui */
+
struct route_ui *routes_ui
;
};
struct world_static {
};
struct world_static {
@@
-201,11
+238,17
@@
struct world_static {
u32 active_trigger_volumes[8];
u32 active_trigger_volume_count;
u32 active_trigger_volumes[8];
u32 active_trigger_volume_count;
- world_instance instances[4];
- i32 active_instance;
+ 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;
+ vg_camera focus_cam;
- addon_reg *addon_hub,
- *addon_client;
+ /* challenges */
+ ent_objective *challenge_target;
+ f32 challenge_timer;
enum world_loader_state{
k_world_loader_none,
enum world_loader_state{
k_world_loader_none,
@@
-213,10
+256,19
@@
struct world_static {
k_world_loader_load
}
load_state;
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);
+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 );