physics
[carveJwlIkooP6JGAAIwe30JlM.git] / world_gen.h
index 4906603eda65f04d77bc3d77a6995a1b430944cc..54857f59137ea40c3c34f84ad6004cb8ebcf49aa 100644 (file)
@@ -1,6 +1,15 @@
+/*
+ * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved
+ */
+
 #ifndef WORLD_GEN_H
 #define WORLD_GEN_H
 
+/* 
+ * FUTURE:
+ *    If we have multiple levels, write an unloader
+ */
+
 #include "world.h"
 
 static void world_add_all_if_material( m4x3f transform, scene *pscene, 
@@ -199,6 +208,26 @@ static void world_load(void)
             }
          }
       }
+      else if( pnode->classtype == k_classtype_achievement_box )
+      {
+         world.achievement_zones = 
+            buffer_reserve( world.achievement_zones,
+                            world.achievement_zones_count,
+                            &world.achievement_zones_cap, 1, 
+                            sizeof(struct achievement_zone) );
+
+         struct achievement_zone *zone = &world.achievement_zones[ 
+                                          world.achievement_zones_count ++ ];
+
+
+         struct classtype_achievement_box *box = mdl_get_entdata(mworld,pnode);
+
+         mdl_node_transform( pnode, zone->transform );
+         m4x3_invert_full( zone->transform, zone->inv_transform );
+         vg_strncpy( mdl_pstr(mworld, box->pstr_name), zone->name, 31 );
+         zone->name[31] = 0x00;
+         zone->triggered = 0;
+      }
    }
 
    world.instance_cache = buffer_fix( world.instance_cache,