From 00653e446d6b1310fa89d3aace70800f9fef4122 Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 20 Nov 2023 14:25:31 +0000 Subject: [PATCH] chaos pt 3 --- blender_export.py | 6 +- ent_miniworld.c | 153 +++++++++++++++++++++++++++++++------- ent_miniworld.h | 4 + entity.h | 3 +- input.h | 8 ++ maps_src/dev_hub/main.mdl | Bin 226408 -> 211064 bytes menu.h | 3 +- models_src/rs_icons.mdl | Bin 40752 -> 41400 bytes player.c | 1 - player_replay.c | 3 + respawn.c | 2 + shaders/scene_override.fs | 2 +- shaders/scene_override.h | 2 +- skaterift.c | 22 +----- skaterift.h | 2 +- world.c | 2 +- world_entity.c | 7 +- world_gate.c | 4 - world_gate.h | 2 +- world_render.c | 23 ++---- world_render.h | 3 +- world_routes.c | 3 +- 22 files changed, 172 insertions(+), 83 deletions(-) diff --git a/blender_export.py b/blender_export.py index 36ca368..4b7cf7f 100644 --- a/blender_export.py +++ b/blender_export.py @@ -528,7 +528,7 @@ class ent_cubemap(Structure):#{ class ent_miniworld(Structure):#{ _fields_ = [("transform",mdl_transform), ("pstr_world",c_uint32), - ("purpose",c_int32), + ("camera",c_uint32), ("proxy",c_uint32)] sr_functions = { 0: 'zone', 1: 'leave' } @@ -1972,6 +1972,7 @@ def sr_compile( collection ): compile_obj_transform( obj, miniworld.transform ) miniworld.pstr_world = sr_compile_string( obj_data.world ) miniworld.proxy = sr_entity_id( obj_data.proxy ) + miniworld.camera = sr_entity_id( obj_data.camera ) sr_ent_push( miniworld ) #} elif ent_type == 'ent_prop':#{ @@ -2624,6 +2625,9 @@ class SR_OBJECT_ENT_MINIWORLD(bpy.types.PropertyGroup): proxy: bpy.props.PointerProperty( \ type=bpy.types.Object, name='proxy', \ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_prop'])) + camera: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Camera", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera'])) #} class SR_UL_ROUTE_NODE_LIST(bpy.types.UIList): diff --git a/ent_miniworld.c b/ent_miniworld.c index 08e7093..802bd8b 100644 --- a/ent_miniworld.c +++ b/ent_miniworld.c @@ -2,6 +2,8 @@ #include "ent_miniworld.h" #include "world_render.h" #include "input.h" +#include "gui.h" +#include "menu.h" static void ent_miniworld_call( world_instance *world, ent_call *call ){ ent_miniworld *miniworld = mdl_arritm( &world->ent_miniworld, @@ -13,6 +15,7 @@ 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 } ); + mdl_transform_m4x3( &miniworld->transform, global_miniworld.mmdl ); global_miniworld.active = miniworld; } else if( call->function == 1 ){ @@ -26,6 +29,28 @@ static void ent_miniworld_call( world_instance *world, ent_call *call ){ } } +static void miniworld_icon( camera *cam, enum gui_icon icon, v3f pos ){ + 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} ); + + 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; @@ -54,44 +79,118 @@ static void ent_miniworld_render( world_instance *host_world, camera *cam ){ if( !rendering ) return; - m4x3f mmdl; - mdl_transform_m4x3( &miniworld->transform, mmdl ); - render_world_override( dest_world, host_world, mmdl, cam ); - render_world_routes( dest_world, host_world, mmdl, cam, 0, 1 ); -} + render_world_override( dest_world, host_world, global_miniworld.mmdl, cam, + global_miniworld.dest_spawn ); + render_world_routes( dest_world, host_world, + global_miniworld.mmdl, cam, 0, 1 ); -static void ent_miniworld_preupdate(void){ - 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); + /* icons + * ---------------------*/ + font3d_bind( &gui.font, k_font_shader_default, 0, NULL, cam ); + mesh_bind( &gui.icons_mesh ); + + glActiveTexture( GL_TEXTURE0 ); + glBindTexture( GL_TEXTURE_2D, gui.icons_texture ); + shader_model_font_uTexMain( 0 ); + shader_model_font_uColour( (v4f){1,1,1,1} ); + + for( u32 i=0; ient_challenge); i++ ){ + ent_challenge *challenge = mdl_arritm( &dest_world->ent_challenge, i ); + + enum gui_icon icon = k_gui_icon_exclaim; + if( challenge->status ) + icon = k_gui_icon_tick; + + miniworld_icon( cam, icon, challenge->transform.co ); + } + + for( u32 i=0; ient_skateshop); i++ ){ + ent_skateshop *shop = mdl_arritm( &dest_world->ent_skateshop, i ); + if( shop->type == k_skateshop_type_boardshop ){ + miniworld_icon( cam, k_gui_icon_board, shop->transform.co ); } + else if( shop->type == k_skateshop_type_worldshop ){ + miniworld_icon( cam, k_gui_icon_world, shop->transform.co ); + } + } + + for( u32 i=0; ient_route); i++ ){ + ent_route *route = mdl_arritm( &dest_world->ent_route, i ); + + v4f colour; + v4_copy( route->colour, colour ); + v3_muls( colour, 1.6666f, colour ); + shader_model_font_uColour( colour ); + miniworld_icon( cam, k_gui_icon_rift_run, route->board_transform[3] ); } +} + +static void ent_miniworld_preupdate(void){ + world_instance *hub = world_current_instance(), + *dest = &world_static.instances[k_world_purpose_client]; ent_miniworld *miniworld = global_miniworld.active; - if( !miniworld ) + + if( (localplayer.subsystem != k_player_subsystem_walk) || + (global_miniworld.transition) || + (world_static.active_instance != k_world_purpose_hub) || + (!miniworld) || + (dest->status != k_world_status_loaded) ){ + + if( global_miniworld.mode ){ + global_miniworld.mode = 0; + menu.disable_open = 0; + srinput.state = k_input_state_resume; + } return; + } - world_instance *world = world_current_instance(); + if( button_down( k_srbind_miniworld_resume ) ){ + global_miniworld.mode = 0; + global_miniworld.transition = 1; + global_miniworld.t = 0.0f; + global_miniworld.cam = skaterift.cam; + + if( global_miniworld.dest_spawn ){ + v3_copy( global_miniworld.dest_spawn->transform.co, + dest->player_co ); + } - if( global_miniworld.transition ){ + world_switch_instance(1); + global_miniworld.dest_spawn = NULL; + srinput.state = k_input_state_resume; + menu.disable_open = 0; } 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); + if( global_miniworld.mode == 1 ){ + if( button_down(k_srbind_mback) ){ + global_miniworld.mode = 0; + global_miniworld.dest_spawn = NULL; + menu.disable_open = 0; + srinput.state = k_input_state_resume; + } + else { + m4x3f mmdl_inv; + m4x3_invert_full( global_miniworld.mmdl, mmdl_inv ); + v3f lco; + m4x3_mulv( mmdl_inv, localplayer.rb.co, lco ); + global_miniworld.dest_spawn = world_find_closest_spawn( dest, lco ); + } + } + else { + if( button_down( k_srbind_miniworld_teleport ) ){ + global_miniworld.mode = 1; + menu.disable_open = 1; } } } } + +static void ent_miniworld_goback(void){ + 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); +} diff --git a/ent_miniworld.h b/ent_miniworld.h index 2be6141..73d0c46 100644 --- a/ent_miniworld.h +++ b/ent_miniworld.h @@ -6,14 +6,18 @@ struct { ent_miniworld *active; int transition; + int mode; f32 t; m4x3f mmdl; camera cam; + + ent_spawn *dest_spawn; } static global_miniworld; static void ent_miniworld_call( world_instance *world, ent_call *call ); static void ent_miniworld_render( world_instance *host_world, camera *cam ); +static void ent_miniworld_goback(void); #endif /* ENT_MINIWORLD_H */ diff --git a/entity.h b/entity.h index 7cfce58..612ad61 100644 --- a/entity.h +++ b/entity.h @@ -504,8 +504,7 @@ struct ent_call{ struct ent_miniworld { mdl_transform transform; u32 pstr_world; - - i32 purpose_DELTED; + u32 camera; u32 proxy; }; diff --git a/input.h b/input.h index fc8f7c9..e66bdc6 100644 --- a/input.h +++ b/input.h @@ -34,6 +34,10 @@ enum sr_bind{ k_srbind_home, k_srbind_lobby, k_srbind_chat, + + k_srbind_miniworld_teleport, + k_srbind_miniworld_resume, + k_srbind_max, }; @@ -97,6 +101,10 @@ static vg_input_op *input_button_list[] = { [k_srbind_sit] = INPUT_BASIC( SDLK_z, SDL_CONTROLLER_BUTTON_B ), [k_srbind_lobby] = INPUT_BASIC( SDLK_TAB, SDL_CONTROLLER_BUTTON_DPAD_LEFT ), [k_srbind_chat ] = (vg_input_op[]){ vg_keyboard, SDLK_y, vg_end }, + +[k_srbind_miniworld_resume] = INPUT_BASIC( SDLK_e, SDL_CONTROLLER_BUTTON_A ), +[k_srbind_miniworld_teleport]= INPUT_BASIC( SDLK_r, SDL_CONTROLLER_BUTTON_X ), + [k_srbind_max]=NULL }; diff --git a/maps_src/dev_hub/main.mdl b/maps_src/dev_hub/main.mdl index 44881ec7bc8479d5396fa4b862340299f7b9df14..4798e481c3e9ff36daebffea9e7a389c7a62ba69 100644 GIT binary patch delta 14849 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 F{|`fQmT&+7 delta 20616 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 diff --git a/menu.h b/menu.h index 8da5026..8691f08 100644 --- a/menu.h +++ b/menu.h @@ -11,6 +11,7 @@ #include "workshop.h" #include "respawn.h" #include "gui.h" +#include "ent_miniworld.h" #define MENU_STACK_SIZE 8 @@ -247,7 +248,7 @@ static void menu_trigger_item( ent_menuitem *item ){ else if( MDL_CONST_PSTREQ( &menu.model, q, "reset" ) ){ menu_close(); - respawn_begin_chooser(); + ent_miniworld_goback(); } else if( MDL_CONST_PSTREQ( &menu.model, q, "credits" ) ){ diff --git a/models_src/rs_icons.mdl b/models_src/rs_icons.mdl index 296df3fba5fff966fb1fec659814053447f61f41..5cb97695e4025b83bba41015131cd84fe3f57625 100644 GIT binary patch delta 4653 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 vg_list_size(world_static.instances) ){ vg_error( "Instance ID out of range (%u)\n", index ); diff --git a/world_entity.c b/world_entity.c index d34ed6e..c5c2fc7 100644 --- a/world_entity.c +++ b/world_entity.c @@ -92,10 +92,9 @@ static void world_entity_focus_render(void){ ent_skateshop *skateshop = mdl_arritm( &world->ent_skateshop, index ); skateshop_render( skateshop ); } - else if( type == k_ent_challenge ){ - } - else if( type == k_ent_route ){ - } + else if( type == k_ent_challenge ){} + else if( type == k_ent_route ){} + else if( type == k_ent_miniworld ){} else { vg_fatal_error( "Programming error\n" ); } diff --git a/world_gate.c b/world_gate.c index bc21e95..accdc06 100644 --- a/world_gate.c +++ b/world_gate.c @@ -65,10 +65,6 @@ static void world_gates_init(void) world_gates.sm_marker[i] = *sm; } - mdl_mesh *icosphere = mdl_find_mesh( &mgate, "rs_icosphere" ); - world_gates.sm_icosphere = - *((mdl_submesh *)mdl_arritm( &mgate.submeshs, icosphere->submesh_start )); - mdl_async_load_glmesh( &mgate, &world_gates.mesh ); mdl_close( &mgate ); } diff --git a/world_gate.h b/world_gate.h index a8decac..2201f76 100644 --- a/world_gate.h +++ b/world_gate.h @@ -11,7 +11,7 @@ struct world_gates{ glmesh mesh; - mdl_submesh sm_surface, sm_marker[4], sm_icosphere; + mdl_submesh sm_surface, sm_marker[4]; camera cam; v3f userportal_co; diff --git a/world_render.c b/world_render.c index b63d8a7..8d7e546 100644 --- a/world_render.c +++ b/world_render.c @@ -798,11 +798,7 @@ static void world_prerender( world_instance *world ){ state->g_debug_indices = k_debug_light_indices; state->g_light_preview = k_light_preview; state->g_debug_complexity = k_debug_light_complexity; - - if( skaterift.activity == k_skaterift_respawning ) - state->g_time_of_day = 0.1f; - else - state->g_time_of_day = vg_fractf( world->time ); + state->g_time_of_day = vg_fractf( world->time ); state->g_day_phase = cosf( state->g_time_of_day * VG_PIf * 2.0f ); state->g_sunset_phase= cosf( state->g_time_of_day * VG_PIf * 4.0f + VG_PIf ); @@ -963,7 +959,8 @@ static void render_world_override_pass( world_instance *world, static void render_world_override( world_instance *world, world_instance *lighting_source, m4x3f mmdl, - camera *cam ){ + camera *cam, + ent_spawn *dest_spawn ){ struct world_pass pass = { .cam = cam, .fn_bind_textures = bindpoint_override, @@ -974,9 +971,6 @@ static void render_world_override( world_instance *world, }; shader_scene_override_use(); -#if 0 - respawn_chooser_shader_uniforms(); -#endif shader_scene_override_uTexGarbage(0); shader_scene_override_uTexMain(1); shader_scene_override_uPv( pass.cam->mtx.pv ); @@ -1003,13 +997,10 @@ static void render_world_override( world_instance *world, v3_copy( world->player_co, uPlayerPos ); - m4x3f mmdl_inv; - m4x3_invert_full( mmdl, mmdl_inv ); - v3f localized; - m4x3_mulv( mmdl_inv, localplayer.rb.co, localized ); - ent_spawn *spawn = world_find_closest_spawn( world, localized ); - if( spawn ) - v3_copy( spawn->transform.co, uSpawnPos ); + if( dest_spawn && (v3_dist2(dest_spawn->transform.co,uPlayerPos) > 0.1f) ) + v3_copy( dest_spawn->transform.co, uSpawnPos ); + else + v3_add( uPlayerPos, (v3f){0,-1,0}, uSpawnPos ); uPlayerPos[3] = v3_dist(uPlayerPos,uSpawnPos); uSpawnPos[3] = 1.0f/uPlayerPos[3]; diff --git a/world_render.h b/world_render.h index 3837068..b02116e 100644 --- a/world_render.h +++ b/world_render.h @@ -83,7 +83,8 @@ static void bind_terrain_noise(void); static void render_world_override( world_instance *world, world_instance *lighting_source, m4x3f mmdl, - camera *cam ); + camera *cam, + ent_spawn *dest_spawn ); #define WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( WORLD, SHADER ) \ world_link_lighting_ub( WORLD, _shader_##SHADER.id ); \ diff --git a/world_routes.c b/world_routes.c index d710e5e..5f6d283 100644 --- a/world_routes.c +++ b/world_routes.c @@ -612,8 +612,7 @@ static void world_routes_update( world_instance *world ){ for( u32 i=0; ient_route); i++ ){ ent_route *route = mdl_arritm( &world->ent_route, i ); - int target = (route->active_checkpoint == 0xffff? 0: 1) || - skaterift.activity == k_skaterift_respawning; + int target = route->active_checkpoint == 0xffff? 0: 1; route->factive = vg_lerpf( route->factive, target, 0.6f*vg.time_frame_delta ); } -- 2.25.1