chaos pt 1
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_miniworld.c
diff --git a/ent_miniworld.c b/ent_miniworld.c
new file mode 100644 (file)
index 0000000..414b2f6
--- /dev/null
@@ -0,0 +1,36 @@
+#include "entity.h"
+#include "ent_miniworld.h"
+#include "world_render.h"
+
+static void ent_miniworld_call( world_instance *world, ent_call *call ){
+   ent_miniworld *miniworld = mdl_arritm( &world->ent_miniworld, 
+                                          mdl_entity_id_id(call->id) );
+
+   int world_id = world - world_static.instances;
+
+   if( call->function == 0 ){ /* zone() */
+      const char *uid = mdl_pstr( &world->meta, miniworld->pstr_world );
+      skaterift_load_world_command( 1, (const char *[]){ uid } );
+
+      global_miniworld.active_id = call->id;
+   }
+}
+
+static void ent_miniworld_render( world_instance *host_world ){
+   u32 entity_id = global_miniworld.active_id;
+
+   if( !entity_id )
+      return;
+   
+   ent_miniworld *miniworld = mdl_arritm( &host_world->ent_miniworld, 
+                                          mdl_entity_id_id(entity_id) );
+
+   if( miniworld->purpose == k_world_purpose_invalid )
+      return;
+
+   m4x3f mmdl;
+   mdl_transform_m4x3( &miniworld->transform, mmdl );
+   render_world_override( &world_static.instances[miniworld->purpose], mmdl );
+
+   //render_world_routes( , &skaterift.cam, 1 );
+}