#include "camera.h"
#include "player_model.h"
#include "input.h"
+#include "world.h"
+#include "audio.h"
VG_STATIC int localplayer_cmd_respawn( int argc, const char *argv[] )
{
}
vg_console_reg_cmd( "respawn", localplayer_cmd_respawn, NULL );
+ VG_VAR_F32( k_cam_damp );
+ VG_VAR_F32( k_cam_spring );
+ VG_VAR_F32( k_cam_punch );
+ VG_VAR_F32( k_cam_shake_strength );
+ VG_VAR_F32( k_cam_shake_trackspeed );
+ VG_VAR_I32( k_player_debug_info, flags=VG_VAR_PERSISTENT );
+
+ vg_console_reg_var( "cinema", &k_cinema, k_var_dtype_f32, 0 );
+ 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 );
}
PLAYER_API
vsnprintf( buffer, 1024, fmt, args );
va_end( args );
- ui_text( vg_uictx.cursor, buffer, size, k_text_align_right );
- vg_uictx.cursor[1] += 14*size;
+ ui_text( g_player_debugger, buffer, size, k_ui_align_left, 0 );
+ g_player_debugger[1] += size*16;
}
/*
}
PLAYER_API
-void player__use_model( player_instance *player, struct player_model *mdl )
-{
- player->playermodel = mdl;
+void player__use_model( player_instance *player, u16 reg_id ){
+ addon_cache_unwatch( k_addon_type_player, player->playermodel_view_slot );
+ player->playermodel_view_slot =
+ addon_cache_create_viewer( k_addon_type_player, reg_id );
}
PLAYER_API
}
if( button_down( k_srbind_reset ) && !player->immobile ){
- double delta = world_global.time - world_global.last_use;
+ f64 delta = world_static.time - world_static.last_use;
- if( (delta <= RESET_MAX_TIME) && (world_global.last_use != 0.0) ){
+ if( (delta <= RESET_MAX_TIME) && (world_static.last_use != 0.0) ){
player->rewinding = 1;
player->rewind_sound_wait = 1;
player->rewind_time = (double)player->rewind_length - 0.0001;
PLAYER_API
void player__pass_gate( player_instance *player, ent_gate *gate )
{
- world_routes_fracture( get_active_world(), gate,
+ world_routes_fracture( world_current_instance(), gate,
player->rb.co, player->rb.v );
player->gate_waiting = gate;
- world_routes_activate_entry_gate( get_active_world(), gate );
+ world_routes_activate_entry_gate( world_current_instance(), gate );
m4x3_mulv( gate->transport, player->tpv_lpf, player->tpv_lpf );
m3x3_mulv( gate->transport, player->cam_velocity_smooth,
player_save_rewind_frame( player );
if( gate->type == k_gate_type_nonlocel )
- world_global.active_world = gate->target;
+ world_static.active_world = gate->target;
- world_global.in_volume = 0;
+ world_volumes.inside = 0;
audio_lock();
audio_oneshot( &audio_gate_pass, 1.0f, 0.0f );
d[0] = atan2f( fwd_dir[2], fwd_dir[0] );
}
-PLAYER_API void player__im_gui( player_instance *player )
-{
- vg_uictx.cursor[0] = vg.window_x - 200;
- vg_uictx.cursor[1] = 0;
- vg_uictx.cursor[2] = 200;
- vg_uictx.cursor[3] = 200;
+PLAYER_API void player__im_gui( player_instance *player ){
+ if( !k_player_debug_info ) return;
+
+ ui_rect box = {
+ vg.window_x - 300,
+ 0,
+ 300,
+ vg.window_y
+ };
- struct ui_vert *b = ui_fill_rect( vg_uictx.cursor, 0x70000000 );
+ ui_fill( box, (ui_colour(k_ui_bg)&0x00ffffff)|0x50000000 );
- vg_uictx.cursor[0] = vg.window_x;
+ g_player_debugger[0] = box[0];
+ g_player_debugger[1] = 0;
+ g_player_debugger[2] = 300;
+ g_player_debugger[3] = 16;
player__debugtext( 1, "angles: " PRINTF_v3f( player->cam.angles ) );
player__debugtext( 1, "basis: " PRINTF_v4f( player->qbasis ) );
if( _player_im_gui[ player->subsystem ] )
_player_im_gui[ player->subsystem ]( player );
- b[2].co[1] = vg_uictx.cursor[1];
- b[3].co[1] = vg_uictx.cursor[1];
+ replay_debug_info( player );
}
VG_STATIC void global_skateshop_exit(void);
-PLAYER_API void player__spawn( player_instance *player,
- ent_spawn *rp )
-{
- v3_copy( rp->transform.co, player->rb.co );
+
+PLAYER_API void player__setpos( player_instance *player, v3f pos ){
+ v3_copy( pos, player->rb.co );
v3_zero( player->rb.v );
+ rb_update_transform( &player->rb );
+}
+
+PLAYER_API void player__spawn( player_instance *player, ent_spawn *rp ){
+ player__setpos( player, rp->transform.co );
v3_zero( player->rb.w );
q_identity( player->rb.q );
rb_update_transform( &player->rb );
player->subsystem = k_player_subsystem_walk;
player->immobile = 0;
player->gate_waiting = NULL;
+ player->rewind_length = 0;
+ player->rewind_accum = 0.0f;
+ player->rewind_gate = NULL;
+ player->rewinding = 0;
+ world_static.last_use = 0.0;
global_skateshop_exit();
}
-PLAYER_API void player__kill( player_instance *player )
-{
+PLAYER_API void player__kill( player_instance *player ){
}
+/* implementation */
+#include "player_common.c"
+#include "player_walk.c"
+#include "player_skate.c"
+#include "player_dead.c"
+#include "player_drive.c"
+#include "player_render.c"
+#include "player_ragdoll.c"
+#include "player_replay.c"
+
#endif /* PLAYER_C */