update helpers/location to 'frosted' ui
[carveJwlIkooP6JGAAIwe30JlM.git] / world.h
diff --git a/world.h b/world.h
index 6ff3afbc00f295d7a459eec32d0eff75bcc7e719..efa5f9d0e8b54b8e308a7e8a095c2e364bdd9d73 100644 (file)
--- 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"
@@ -159,6 +157,7 @@ struct world_instance {
       mdl_submesh sm_geo,
                   sm_no_collide;
       u32 flags;
+      u32 alpha_tex;
    }
    * surfaces;
    u32 surface_count;
@@ -189,7 +188,8 @@ struct world_instance {
                  ent_miniworld,
                  ent_prop,
                  ent_region,
-                 ent_glider;
+                 ent_glider,
+                 ent_npc;
 
    enum skybox {
       k_skybox_default,
@@ -215,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 */
@@ -245,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;
@@ -257,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 );