#include "ent_miniworld.h"
#include "gui.h"
+#include "shaders/model_entity.h"
+#include "shaders/model_character_view.h"
+#include "shaders/model_board_view.h"
+
static int localplayer_cmd_respawn( int argc, const char *argv[] ){
ent_spawn *rp = NULL, *r;
world_instance *world = world_current_instance();
vg_console_reg_var( "cinema_fixed", &k_cinema_fixed, k_var_dtype_i32, 0 );
vg_console_reg_var( "invert_y", &k_invert_y,
k_var_dtype_i32, VG_VAR_PERSISTENT );
+
+ shader_model_character_view_register();
+ shader_model_board_view_register();
+ shader_model_entity_register();
}
static void player__debugtext( int size, const char *fmt, ... ){
}
static void player__post_update(void){
- if( player_subsystems[ localplayer.subsystem ]->post_update )
- player_subsystems[ localplayer.subsystem ]->post_update();
+ struct player_subsystem_interface *sys =
+ player_subsystems[ localplayer.subsystem ];
+
+ if( sys->post_update ) sys->post_update();
+
+ SDL_AtomicLock( &air_data.sl );
+ air_data.speed = v3_length( localplayer.rb.v ) * vg.time_rate;
+ SDL_AtomicUnlock( &air_data.sl );
}
/*
*/
static void player__pass_gate( u32 id ){
world_instance *world = world_current_instance();
+ skaterift_record_frame( &skaterift.replay, 1 );
/* update boundary hash (network animation) */
u16 index = mdl_entity_id_id(id) & ~NETMSG_BOUNDARY_MASK;
world_routes_fracture( world, gate, localplayer.rb.co, localplayer.rb.v );
localplayer.gate_waiting = gate;
+ localplayer.deferred_frame_record = 1;
struct player_cam_controller *cc = &localplayer.cam_control;
m4x3_mulv( gate->transport, cc->tpv_lpf, cc->tpv_lpf );
world_static.active_instance = gate->target;
player__clean_refs();
+
+ replay_clear( &skaterift.replay );
}
- else
+ else {
world_routes_activate_entry_gate( world, gate );
+ }
v3f v0;
v3_angles_vector( localplayer.angles, v0 );
audio_lock();
audio_oneshot( &audio_gate_pass, 1.0f, 0.0f );
audio_unlock();
-
- replay_clear( &skaterift.replay );
}
static void player_apply_transport_to_cam( m4x3f transport ){
- /* FIXME: Applies to skaterift.cam directly! */
-
/* Pre-emptively edit the camera matrices so that the motion vectors
* are correct */
m4x3f transport_i;
[k_skaterift_replay] = "replay",
[k_skaterift_ent_focus] = "ent_focus",
[k_skaterift_default] = "default",
- [k_skaterift_respawning]= "map"
+ [k_skaterift_world_map] = "world map"
} [skaterift.activity] );
player__debugtext( 1, "time_rate: %.4f", skaterift.time_rate );