+static void miniworld_icon( camera *cam, enum gui_icon icon, v3f pos, f32 size){
+ m4x3f mmdl;
+ v3_copy( cam->transform[2], mmdl[2] );
+ mmdl[2][1] = 0.0f;
+ v3_normalize( mmdl[2] );
+ v3_copy( (v3f){0,1,0}, mmdl[1] );
+ v3_cross( mmdl[1], mmdl[2], mmdl[0] );
+ m4x3_mulv( global_miniworld.mmdl, pos, mmdl[3] );
+
+ shader_model_font_uMdl( mmdl );
+ shader_model_font_uOffset( (v4f){0,0,0,20.0f*size} );
+
+ m4x4f m4mdl;
+ m4x3_expand( mmdl, m4mdl );
+ m4x4_mul( cam->mtx_prev.pv, m4mdl, m4mdl );
+ shader_model_font_uPvmPrev( m4mdl );
+
+ mdl_submesh *sm = gui.icons[ icon ];
+ if( sm )
+ mdl_draw_submesh( sm );
+}
+
+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;