X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=ent_miniworld.c;h=9c439c7c797a5c7f44bd7abc233f8d7540e93560;hb=d171c9ad5de05c9ac8563fcf9f23760b93fb50f8;hp=cd79b4552626ca5dda89aac1bbcd0b7d1ef63419;hpb=7f4c71033c06954f3094c9d51219628438b80ac8;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_miniworld.c b/ent_miniworld.c index cd79b45..9c439c7 100644 --- a/ent_miniworld.c +++ b/ent_miniworld.c @@ -13,14 +13,10 @@ static void ent_miniworld_call( world_instance *world, ent_call *call ){ const char *uid = mdl_pstr( &world->meta, miniworld->pstr_world ); skaterift_load_world_command( 1, (const char *[]){ uid } ); - global_miniworld.active_id = call->id; + global_miniworld.active = miniworld; } else if( call->function == 1 ){ - - if( global_miniworld.active_id == call->id ) - global_miniworld.active_id = 0; - else - vg_warn( "bad call\n" ); + global_miniworld.active = NULL; if( miniworld->proxy ){ ent_prop *prop = mdl_arritm( &world->ent_prop, @@ -30,17 +26,19 @@ static void ent_miniworld_call( world_instance *world, ent_call *call ){ } } -static void ent_miniworld_render( world_instance *host_world ){ - u32 entity_id = global_miniworld.active_id; +static void ent_miniworld_render( world_instance *host_world, camera *cam ){ + if( host_world != &world_static.instances[k_world_purpose_hub] ) + return; + + ent_miniworld *miniworld = global_miniworld.active; - if( !entity_id ) + if( !miniworld ) return; - - ent_miniworld *miniworld = mdl_arritm( &host_world->ent_miniworld, - mdl_entity_id_id(entity_id) ); + + world_instance *dest_world = &world_static.instances[k_world_purpose_client]; int rendering = 1; - if( miniworld->purpose == k_world_purpose_invalid ) + if( dest_world->status != k_world_status_loaded ) rendering = 0; if( miniworld->proxy ){ @@ -52,24 +50,48 @@ static void ent_miniworld_render( world_instance *host_world ){ prop->flags |= 0x1; } + if( !rendering ) return; - world_instance *dest_world = &world_static.instances[miniworld->purpose]; - - m4x3f mmdl; mdl_transform_m4x3( &miniworld->transform, mmdl ); - render_world_override( dest_world, host_world, mmdl ); - + render_world_override( dest_world, host_world, mmdl, cam ); //render_world_routes( , &skaterift.cam, 1 ); } static void ent_miniworld_preupdate(void){ - if( !global_miniworld.active_id ) + if( world_static.active_instance == k_world_purpose_client ){ + if( button_down(k_srbind_mleft) ){ + global_miniworld.transition = -1; + global_miniworld.t = 1.0f; + + global_miniworld.cam = skaterift.cam; + m4x3_transform_camera( global_miniworld.mmdl, &global_miniworld.cam ); + world_switch_instance(0); + } + } + + ent_miniworld *miniworld = global_miniworld.active; + if( !miniworld ) return; - if( button_down( k_srbind_use ) ){ - + world_instance *world = world_current_instance(); + + if( global_miniworld.transition ){ + } + else { + int rendering = 1; + if( world_static.instances[k_world_purpose_client].status + == k_world_status_loaded ){ + if( button_down( k_srbind_mright ) ){ + global_miniworld.transition = 1; + global_miniworld.t = 0.0f; + global_miniworld.cam = skaterift.cam; + + mdl_transform_m4x3( &miniworld->transform, global_miniworld.mmdl ); + world_switch_instance(1); + } + } } }