trail rendering basics
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index cdef5a41c4f5b9ba236981ecca7036b313fc7a08..82aa54cd4e9f6d31c64be86ee88265be5c49edee 100644 (file)
@@ -2,7 +2,7 @@
  * =============================================================================
  *
  * Copyright  .        . .       -----, ,----- ,---.   .---.
- * 2021-2023  |\      /| |           /  |      |    | |    /|
+ * 2021-2024  |\      /| |           /  |      |    | |    /|
  *            | \    / | +--        /   +----- +---'  |   / |
  *            |  \  /  | |         /    |      |   \  |  /  |
  *            |   \/   | |        /     |      |    \ | /   |
@@ -14,6 +14,7 @@
 #define SR_NETWORKED
 #define VG_AUDIO_FORCE_COMPRESSED
 #define SDL_MAIN_HANDLED
+#define SR_ALLOW_REWIND_HUB
 
 #ifndef VG_RELEASE
  #define VG_DEVWINDOW
@@ -48,7 +49,6 @@
 #include "entity.c"
 #include "workshop.c"
 #include "addon.c"
-#include "highscores.c"
 #include "save.c"
 #include "world_map.c"
 #include "network.c"
@@ -58,6 +58,9 @@
 #include "particle.c"
 #include "player_effects.c"
 #include "freecam.c"
+#include "testing.c"
+#include "trail.h"
+#include "trail.c"
 
 static int k_tools_mode = 0;
 
@@ -196,6 +199,8 @@ static void skaterift_load_player_content(void){
    replay_clear( &skaterift.replay );
 
    particle_alloc( &particles_grind, 300 );
+   particle_alloc( &particles_env, 200 );
+   trail_alloc( &trails_test, 200 );
 
    player_load_animation_reference( "models/ch_none.mdl" );
    player_model_load( &localplayer.fallback_model, "models/ch_none.mdl" );
@@ -229,6 +234,8 @@ static void vg_load(void){
    vg_loader_step( addon_system_init, NULL );
    vg_loader_step( workshop_init, NULL );
    vg_loader_step( skateshop_init, NULL );
+   vg_loader_step( ent_tornado_init, NULL );
+   vg_loader_step( testing_init, NULL );
   
    vg_loader_step( skaterift_load_player_content, NULL );
 
@@ -324,6 +331,7 @@ static void vg_fixed_update(void){
    world_routes_fixedupdate( world_current_instance() );
    player__update();
    vehicle_update_fixed();
+   testing_update();
 }
 
 static void vg_post_update(void){
@@ -502,6 +510,15 @@ static void render_scene(void){
    //particle_system_debug( &particles_grind );
    particle_system_prerender( &particles_grind );
    particle_system_render( &particles_grind, &skaterift.cam );
+   
+   ent_tornado_pre_update();
+   particle_system_update( &particles_env, vg.time_delta );
+   particle_system_prerender( &particles_env );
+   particle_system_render( &particles_env, &skaterift.cam );
+
+   trail_system_update( &trails_test, vg.time_delta, 
+                        localplayer.rb.co, localplayer.rb.to_world[1], 1.0f );
+   trail_system_debug( &trails_test );
 
    /* 
     * render transition 
@@ -673,6 +690,35 @@ static void vg_render(void){
 static void vg_gui(void){
    if( skaterift.op == k_async_op_clientloading ) return;
 
+   if( k_tools_mode ){
+      ui_rect null;
+      ui_rect screen = { 0, 0, vg.window_x, vg.window_y };
+      ui_rect panel = { 0, 0, 1000, 700 };
+      ui_rect_center( screen, panel );
+      vg_ui.wants_mouse = 1;
+
+      ui_fill( panel, ui_colour( k_ui_bg+1 ) );
+      ui_outline( panel, 1, ui_colour( k_ui_bg+7 ), 0 );
+
+      ui_rect_pad( panel, (ui_px[2]){ 8, 8 } );
+
+      static i32 example;
+      ui_enum( panel, "example enum", vg_settings_vsync_enum, 3, &example );
+
+      static f32 val = 30.0f;
+      ui_slider( panel, "Slider", 0.0f, 100.0f, &val, NULL );
+
+      ui_dev_colourview();
+
+      static v4f colour = { 0.5f, 0.6f, 0.1f, 1.0f };
+      ui_colourpicker( panel, "hello", colour );
+
+      return;
+   }
+
+   if( k_light_editor )
+      imgui_world_light_edit( world_current_instance() );
+
    vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id;
    render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio );