X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_miniworld.c;h=2fed03137313e7549a36cfee7939cd716ca2491c;hb=72f789aa46c913ec2ffa10907b2124f8d09670e5;hp=46def88bf700f90eeacef359585da43d8762997d;hpb=2dbc6f4022802b89c934ba78e7085cc7ee81799b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_miniworld.c b/ent_miniworld.c index 46def88..2fed031 100644 --- a/ent_miniworld.c +++ b/ent_miniworld.c @@ -1,17 +1,23 @@ #include "entity.h" #include "ent_miniworld.h" #include "world_render.h" +#include "world_load.h" #include "input.h" #include "gui.h" #include "menu.h" +#include "audio.h" -static void ent_miniworld_call( world_instance *world, ent_call *call ){ +struct global_miniworld global_miniworld; + +entity_call_result 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() */ + if( call->function == 0 ) /* zone() */ + { const char *uid = mdl_pstr( &world->meta, miniworld->pstr_world ); skaterift_load_world_command( 1, (const char *[]){ uid } ); @@ -23,20 +29,30 @@ static void ent_miniworld_call( world_instance *world, ent_call *call ){ if( gui_new_helper( input_button_list[k_srbind_miniworld_resume], &text )) vg_strcat( &text, "Enter World" ); + + return k_entity_call_result_OK; } - else if( call->function == 1 ){ + else if( call->function == 1 ) + { global_miniworld.active = NULL; gui_helper_clear(); - if( miniworld->proxy ){ + if( miniworld->proxy ) + { ent_prop *prop = mdl_arritm( &world->ent_prop, mdl_entity_id_id(miniworld->proxy) ); prop->flags &= ~0x1; } + + return k_entity_call_result_OK; } + else + return k_entity_call_result_unhandled; } -static void miniworld_icon( camera *cam, enum gui_icon icon, v3f pos, f32 size){ +static void miniworld_icon( vg_camera *cam, enum gui_icon icon, + v3f pos, f32 size) +{ m4x3f mmdl; v3_copy( cam->transform[2], mmdl[2] ); mmdl[2][1] = 0.0f; @@ -58,7 +74,8 @@ static void miniworld_icon( camera *cam, enum gui_icon icon, v3f pos, f32 size){ mdl_draw_submesh( sm ); } -static void ent_miniworld_render( world_instance *host_world, camera *cam ){ +void ent_miniworld_render( world_instance *host_world, vg_camera *cam ) +{ if( host_world != &world_static.instances[k_world_purpose_hub] ) return; @@ -138,7 +155,8 @@ static void ent_miniworld_render( world_instance *host_world, camera *cam ){ } } -static void ent_miniworld_preupdate(void){ +void ent_miniworld_preupdate(void) +{ world_instance *hub = world_current_instance(), *dest = &world_static.instances[k_world_purpose_client]; @@ -177,7 +195,8 @@ static void ent_miniworld_preupdate(void){ } } -static void ent_miniworld_goback(void){ +void ent_miniworld_goback(void) +{ audio_lock(); audio_oneshot( &audio_ui[2], 1.0f, 0.0f ); audio_unlock(); @@ -186,6 +205,6 @@ static void ent_miniworld_goback(void){ global_miniworld.t = 1.0f; global_miniworld.cam = skaterift.cam; - m4x3_transform_camera( global_miniworld.mmdl, &global_miniworld.cam ); + vg_m4x3_transform_camera( global_miniworld.mmdl, &global_miniworld.cam ); world_switch_instance(0); }