basic npc
[carveJwlIkooP6JGAAIwe30JlM.git] / world_load.c
index aaf689fa5e1a533dddfac8af5d9a789a027840a2..b741a3178e48e0f93df0e01acf4b64e70d6795e2 100644 (file)
@@ -71,6 +71,7 @@ static void world_instance_load_mdl( u32 instance_id, const char *path ){
    MDL_LOAD_ARRAY( meta, &world->ent_prop,      ent_prop,       heap );
    MDL_LOAD_ARRAY( meta, &world->ent_region,    ent_region,     heap );
    MDL_LOAD_ARRAY( meta, &world->ent_glider,    ent_glider,     heap );
+   MDL_LOAD_ARRAY( meta, &world->ent_npc,       ent_npc,        heap );
 
    mdl_array_ptr infos;
    MDL_LOAD_ARRAY( meta, &infos, ent_worldinfo, vg_mem.scratch );
@@ -184,15 +185,11 @@ static void skaterift_world_load_done( void *payload, u32 size ){
    world_static.load_state = k_world_loader_none;
 }
 
-struct world_load_args {
-   enum world_purpose purpose;
-   addon_reg *reg;
-};
-
 /*
  * Does a complete world switch using the remaining free slots
  */
-static void skaterift_world_load_thread( void *_args ){
+void skaterift_world_load_thread( void *_args )
+{
    struct world_load_args args = *((struct world_load_args *)_args);
 
    addon_reg *reg = args.reg;
@@ -280,7 +277,8 @@ static void skaterift_world_load_thread( void *_args ){
 
 /* holding pattern before we can start loading the new world, since we might be
  * waiting for audio to stop */
-static void skaterift_change_client_world_preupdate(void){
+void skaterift_change_client_world_preupdate(void)
+{
    for( u32 i=1; i<k_world_max; i++ ){
       world_instance *inst = &world_static.instances[i];
       
@@ -311,7 +309,8 @@ static void skaterift_change_client_world_preupdate(void){
 }
 
 /* places all loaded worlds into unloading state */
-static void skaterift_change_world_start( addon_reg *reg ){
+void skaterift_change_world_start( addon_reg *reg )
+{
    if( world_static.active_instance != 0 )
       vg_error( "Cannot change worlds while in non-root world\n" );
    else{
@@ -346,7 +345,7 @@ static void skaterift_change_world_start( addon_reg *reg ){
 }
 
 /* console command for the above function */
-static int skaterift_load_world_command( int argc, const char *argv[] )
+int skaterift_load_world_command( int argc, const char *argv[] )
 {
    if( !vg_loader_availible() ) 
    {
@@ -391,7 +390,8 @@ static int skaterift_load_world_command( int argc, const char *argv[] )
  *  1. to see if all audios owned by the world have been stopped
  *  2. that this is the least significant world
  */
-static int world_freeable( world_instance *world ){
+int world_freeable( world_instance *world )
+{
    if( world->status != k_world_status_unloading ) return 0;
    u8 world_id = (world - world_static.instances) + 1;
 
@@ -420,7 +420,8 @@ static int world_freeable( world_instance *world ){
 /*
  * Free all resources for world instance
  */
-static void world_free( world_instance *world ){
+void world_free( world_instance *world )
+{
    vg_info( "Free world @%p\n", world );
 
    /* free meshes */
@@ -459,7 +460,8 @@ static void world_free( world_instance *world ){
  * reset the world structure without deallocating persistent buffers 
  * TODO: Make this a memset(0), and have persistent items live in a static loc
  */
-static void world_init_blank( world_instance *world ){
+void world_init_blank( world_instance *world )
+{
    memset( &world->meta, 0, sizeof(mdl_context) );
 
    world->textures = NULL;