world regions
[carveJwlIkooP6JGAAIwe30JlM.git] / entity.h
index 3fd3508eef3358ff47766b73ef2ad11cc0dddbc0..0e65c268a6c81f71ac05bb306f688532e2318ffe 100644 (file)
--- a/entity.h
+++ b/entity.h
@@ -32,6 +32,7 @@ typedef struct ent_relay ent_relay;
 typedef struct ent_cubemap ent_cubemap;
 typedef struct ent_miniworld ent_miniworld;
 typedef struct ent_prop ent_prop;
+typedef struct ent_region ent_region;
 
 enum entity_alias{
    k_ent_none        = 0,
@@ -56,7 +57,10 @@ enum entity_alias{
    k_ent_challenge   = 19,
    k_ent_relay       = 20,
    k_ent_cubemap     = 21,
-   k_ent_miniworld   = 22
+   k_ent_miniworld   = 22,
+   k_ent_prop        = 23,
+   k_ent_list        = 24,
+   k_ent_region      = 25
 };
 
 static u32 mdl_entity_id_type( u32 entity_id ){
@@ -166,10 +170,17 @@ struct ent_checkpoint{
        path_count;
 };
 
+enum ent_route_flag {
+   k_ent_route_flag_achieve_silver = 0x1,
+   k_ent_route_flag_achieve_gold   = 0x2,
+
+   k_ent_route_flag_out_of_zone    = 0x10
+};
+
 struct ent_route{
    union{
       mdl_transform transform;
-      u32 official_track_id;
+      u32 official_track_id;   /* TODO: remove this */
    }
    anon;
 
@@ -191,7 +202,7 @@ struct ent_route{
    u32 id_camera; /* v103+ */
 
    /* v104+, but always accessible */
-   u32 achievment_status;
+   u32 flags;
    f64 best_laptime;
 };
 
@@ -526,6 +537,11 @@ struct ent_prop {
    u32 submesh_start, submesh_count, flags;
 };
 
+struct ent_region {
+   mdl_transform transform;
+   u32 submesh_start, submesh_count, pstr_title, flags, zone_volume;
+};
+
 #include "world.h"
 static void entity_call( world_instance *world, ent_call *call );