#define VG_MSG_V1_SUPPORT
#define VG_LOG_SOURCE_INFO
#include "vg/vg.h"
-
-#include "common.h"
#include "world.h"
#include "addon.h"
enum async_operation{
k_async_op_none,
k_async_op_clientloading,
- k_async_op_world_preloading,
- k_async_op_world_loading,
k_async_op_world_scan,
k_async_op_world_load_preview,
k_async_op_board_scan,
k_async_op_player_scan,
k_async_op_board_load,
k_async_op_write_savedata,
- k_workshop_form_op_loading_model,
- k_workshop_form_op_downloading_submission,
- k_workshop_form_op_publishing_update,
}
- async_op;
-}
-static skaterift = { .async_op = k_async_op_clientloading };
+ op;
-/* Skaterift api */
-static void skaterift_change_world_start( void );
-static int skaterift_change_world_command( int argc, const char *argv[] );
+ f32 time_rate;
+ camera cam;
+
+ replay_buffer replay;
+ replay_frame *resume_target;
+ f64 resume_begin;
+ f32 resume_transition;
-/*
- * Start a new operation or crash if we are already running one. you can avoid
- * crashing the game by checking the async status yourself before calling.
- */
-VG_STATIC void skaterift_begin_op( enum async_operation op )
-{
- if( vg_thread_purpose() == k_thread_purpose_loader ){
- vg_fatal_error( "Can't do that here\n" );
+ enum replay_control {
+ k_replay_control_scrub,
+ k_replay_control_play,
+ k_replay_control_resume
}
+ replay_control;
+ f32 track_velocity;
- if( skaterift.async_op != k_async_op_none ){
- vg_fatal_error( "Async executing op(%d), tried to start op(%d)\n",
- skaterift.async_op, op );
- }
-
- skaterift.async_op = op;
- vg_info( "Starting op( %d )\n", op );
-}
+ camera replay_freecam;
+ int freecam;
+ v3f freecam_v, freecam_w;
-/*
- * Switch operation for those who have multiple parts
- */
-VG_STATIC void skaterift_shift_op( enum async_operation op )
-{
- if( skaterift.async_op == k_async_op_none ){
- vg_fatal_error( "No current op, cannot shift operation (%d)\n", op );
+ enum skaterift_activity {
+ k_skaterift_default = 0x00,
+ k_skaterift_replay = 0x01,
+ k_skaterift_ent_focus = 0x02,
+ k_skaterift_menu = 0x04,
+ k_skaterift_respawning = 0x08
}
-
- skaterift.async_op = op;
- vg_info( "Shifting to op( %d )\n", op );
-}
+ activity;
-VG_STATIC void skaterift_end_op(void);
-VG_STATIC void async_skaterift_end_op( void *data, u32 size ){
- skaterift_end_op();
+ f64 last_autosave;
}
+static skaterift = { .op = k_async_op_clientloading, .time_rate = 1.0f };
-/*
- * Finished operation, otheres can now run
- */
-VG_STATIC void skaterift_end_op(void)
-{
- if( vg_thread_purpose() == k_thread_purpose_loader ){
- vg_async_call( async_skaterift_end_op, NULL, 0 );
- }
- else{
- vg_info( "Finishing op( %d )\n", skaterift.async_op );
- skaterift.async_op = k_async_op_none;
- }
-}
+/* Skaterift api */
+static void skaterift_change_world_start( addon_reg *reg );
+static int skaterift_change_world_command( int argc, const char *argv[] );
#endif /* SKATERIFT_H */