2 #include "ent_miniworld.h"
3 #include "world_render.h"
6 static void ent_miniworld_call( world_instance
*world
, ent_call
*call
){
7 ent_miniworld
*miniworld
= mdl_arritm( &world
->ent_miniworld
,
8 mdl_entity_id_id(call
->id
) );
10 int world_id
= world
- world_static
.instances
;
12 if( call
->function
== 0 ){ /* zone() */
13 const char *uid
= mdl_pstr( &world
->meta
, miniworld
->pstr_world
);
14 skaterift_load_world_command( 1, (const char *[]){ uid
} );
16 global_miniworld
.active
= miniworld
;
18 else if( call
->function
== 1 ){
19 global_miniworld
.active
= NULL
;
21 if( miniworld
->proxy
){
22 ent_prop
*prop
= mdl_arritm( &world
->ent_prop
,
23 mdl_entity_id_id(miniworld
->proxy
) );
29 static void ent_miniworld_render( world_instance
*host_world
, camera
*cam
){
30 if( host_world
!= &world_static
.instances
[k_world_purpose_hub
] )
33 ent_miniworld
*miniworld
= global_miniworld
.active
;
38 world_instance
*dest_world
= &world_static
.instances
[k_world_purpose_client
];
41 if( dest_world
->status
!= k_world_status_loaded
)
44 if( miniworld
->proxy
){
45 ent_prop
*prop
= mdl_arritm( &host_world
->ent_prop
,
46 mdl_entity_id_id(miniworld
->proxy
) );
58 mdl_transform_m4x3( &miniworld
->transform
, mmdl
);
59 render_world_override( dest_world
, host_world
, mmdl
, cam
);
60 render_world_routes( dest_world
, host_world
, mmdl
, cam
, 0, 1 );
63 static void ent_miniworld_preupdate(void){
64 if( world_static
.active_instance
== k_world_purpose_client
){
65 if( button_down(k_srbind_mleft
) ){
66 global_miniworld
.transition
= -1;
67 global_miniworld
.t
= 1.0f
;
69 global_miniworld
.cam
= skaterift
.cam
;
70 m4x3_transform_camera( global_miniworld
.mmdl
, &global_miniworld
.cam
);
71 world_switch_instance(0);
75 ent_miniworld
*miniworld
= global_miniworld
.active
;
79 world_instance
*world
= world_current_instance();
81 if( global_miniworld
.transition
){
85 if( world_static
.instances
[k_world_purpose_client
].status
86 == k_world_status_loaded
){
87 if( button_down( k_srbind_mright
) ){
88 global_miniworld
.transition
= 1;
89 global_miniworld
.t
= 0.0f
;
90 global_miniworld
.cam
= skaterift
.cam
;
92 mdl_transform_m4x3( &miniworld
->transform
, global_miniworld
.mmdl
);
93 world_switch_instance(1);