update helpers/location to 'frosted' ui
[carveJwlIkooP6JGAAIwe30JlM.git] / world_entity.h
index 1e5e70c684d55e4ace42df0749ce31d008a602fb..c954052a4149ff924c0ddef42588e723c8630dac 100644 (file)
@@ -1,44 +1,46 @@
-#ifndef WORLD_ENTITY_H
-#define WORLD_ENTITY_H
-
+#pragma once
 #include "world.h"
 #include "entity.h"
-#include "bvh.h"
-#include "save.h"
+#include "vg/vg_bvh.h"
 #include "vg/vg_msg.h"
 
-static void world_gen_entities_init( world_instance *world );
-static ent_spawn *world_find_spawn_by_name( world_instance *world, 
-                                               const char *name );
-static ent_spawn *world_find_closest_spawn( world_instance *world, 
-                                               v3f position );
-static void world_entity_start( world_instance *world, vg_msg *sav );
-static void world_entity_serialize( world_instance *world, vg_msg *sav );
-
-static void ent_volume_call( world_instance *world, ent_call *call );
-static void ent_audio_call( world_instance *world, ent_call *call );
-static void ent_ccmd_call( world_instance *world, ent_call *call );
-
-static void entity_bh_expand_bound( void *user, boxf bound, u32 item_index );
-static float entity_bh_centroid( void *user, u32 item_index, int axis );
-static void entity_bh_swap( void *user, u32 ia, u32 ib );
-static void entity_bh_debug( void *user, u32 item_index );
-static void entity_bh_closest( void *user, u32 item_index, v3f point,
-                                  v3f closest );
-
-static void world_entity_focus( u32 entity_id );
-static void world_entity_focus_preupdate(void);
-static void world_entity_focus_render(void);
-static void world_entity_unfocus();
-static void world_entity_focus_camera( world_instance *world, u32 uid );
-
-static bh_system bh_system_entity_list = {
-   .expand_bound = entity_bh_expand_bound,
-   .item_centroid = entity_bh_centroid,
-   .item_closest = entity_bh_closest,
-   .item_swap = entity_bh_swap,
-   .item_debug = entity_bh_debug,
-   .cast_ray = NULL
+typedef struct ent_focus_context ent_focus_context;
+struct ent_focus_context
+{
+   world_instance *world;
+   u32 index; /* Array index of the focused entity */
+   bool active;
 };
 
-#endif /* WORLD_ENTITY_H */
+void world_gen_entities_init( world_instance *world );
+ent_spawn *world_find_spawn_by_name( world_instance *world, 
+                                        const char *name );
+ent_spawn *world_find_closest_spawn( world_instance *world, 
+                                        v3f position );
+void world_default_spawn_pos( world_instance *world, v3f pos );
+void world_entity_start( world_instance *world, vg_msg *sav );
+void world_entity_serialize( world_instance *world, vg_msg *sav );
+
+entity_call_result ent_volume_call( world_instance *world, ent_call *call );
+entity_call_result ent_audio_call( world_instance *world, ent_call *call );
+entity_call_result ent_ccmd_call( world_instance *world, ent_call *call );
+
+void entity_bh_expand_bound( void *user, boxf bound, u32 item_index );
+float entity_bh_centroid( void *user, u32 item_index, int axis );
+void entity_bh_swap( void *user, u32 ia, u32 ib );
+void entity_bh_debug( void *user, u32 item_index );
+void entity_bh_closest( void *user, u32 item_index, v3f point,
+                           v3f closest );
+
+void world_entity_set_focus( u32 entity_id );
+void world_entity_focus_modal(void);
+
+void world_entity_exit_modal(void);
+void world_entity_clear_focus(void);
+
+void world_entity_focus_preupdate(void);
+void world_entity_focus_render(void);
+void world_entity_focus_camera( world_instance *world, u32 uid );
+void update_ach_models(void);
+
+extern bh_system bh_system_entity_list;