audio pt. 2
[vg.git] / src / vg / vg.h
index a36697b516a77ce3e7ea8298bb2c271438aeb7a9..25771ff8d142fc9ff7b180a0048172691feb78d3 100644 (file)
@@ -1,19 +1,27 @@
 /* Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved */
 
+static void vg_exiterr( const char *err );
+static void vg_exit(void);
+
 #ifndef VG_HEADER_H
 #define VG_HEADER_H
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <dirent.h>
-#include <stdint.h>
 #include <string.h>
 #include <stdarg.h>
 #include <ctype.h>
 #include <math.h>
 
-#include "glad/glad.h"
-#include "glfw/glfw3.h"
+#if defined(VG_SERVER) || defined(VG_TOOLS)
+ #define VG_NON_CLIENT
+#endif
+
+#ifndef VG_SERVER
+#include "../../dep/glad/glad.h"
+#include "../../dep/glfw/glfw3.h"
+#endif
 
 #define STB_DS_IMPLEMENTATION
 #include "stb/stb_ds.h"
 #define QOI_IMPLEMENTATION
 #include "phoboslab/qoi.h"
 
-#include "vg/vg_platform.h"
+#include "vg_stdint.h"
+#include "vg_platform.h"
 
 void vg_register_exit( void( *funcptr )(void), const char *name );
-void vg_exiterr( const char *strErr );
 
-#include "vg/vg_m.h"
-#include "vg/vg_io.h"
-#include "vg/vg_gldiag.h"
+#include "vg_m.h"
+#include "vg_io.h"
+
+#ifdef VG_STEAM
+//#include "vg_steamworks.h"
+#include "vg_steam.h"
+#endif
+
+#ifndef VG_NON_CLIENT
+#include "vg_gldiag.h"
+#endif
 
-#ifndef VG_TOOLS
+#ifndef VG_NON_CLIENT
 
 /* Engine globals */
 GLFWwindow* vg_window;
@@ -57,18 +73,14 @@ double vg_time,
        vg_time_last,
        vg_time_delta;
 
-#include "vg/vg_audio.h"
-#include "vg/vg_shader.h"
-#include "vg/vg_tex.h"
-#include "vg/vg_input.h"
-#include "vg/vg_ui.h"
-#include "vg/vg_console.h"
-#include "vg/vg_lines.h"
-#include "vg/vg_debug.h"
-
-#ifdef VG_STEAM
-#include "vg/vg_steamworks.h"
-#endif
+#include "vg_audio.h"
+#include "vg_shader.h"
+#include "vg_tex.h"
+#include "vg_input.h"
+#include "vg_ui.h"
+#include "vg_console.h"
+#include "vg_lines.h"
+#include "vg_debug.h"
 
 #ifndef VG_RELEASE
 void vg_checkgl( const char *src_info )
@@ -98,7 +110,7 @@ void vg_register_exit( void( *funcptr )(void), const char *name )
    vg_on_exit[ vg_exit_count ++ ] = funcptr;
 }
 
-void vg_exit(void)
+static void vg_exit(void)
 {
    for( int i = vg_exit_count-1; i >= 0; i -- )
    {
@@ -107,13 +119,13 @@ void vg_exit(void)
    }
    
    vg_info( "done\n" );
+   exit(0);
 }
 
-void vg_exiterr( const char *strErr )
+static void vg_exiterr( const char *err )
 {
-   vg_error( "Engine Fatal: %s\n", strErr );
+   vg_error( "Engine Fatal: %s\n", err );
    vg_exit();
-   exit(0);
 }
 
 void vg_mouse_callback( GLFWwindow* ptrW, double xpos, double ypos )
@@ -222,58 +234,62 @@ static void vg_init( int argc, char *argv[], const char *window_name )
       
    vg_register();
    vg_register_exit( &vg_free, "vg_free" );
+
+
+   vg_shaders_recompile(0,NULL);
+   vg_register_exit( &vg_shaders_free, "vg_shaders_free" );
+       vg_function_push( (struct vg_cmd){
+               .name = "shaders",
+               .function = vg_shaders_recompile
+       });
+
+   if( !vg_audio_init() )
+      vg_exit();
+   vg_register_exit( &vg_audio_free, "vg_audio_free" );
+
+   vg_start();
+
+   vg_console_init();
+   vg_register_exit( &vg_console_free, "Console" );
    
-   if( vg_shaders_compile() )
+   /* 
+    * Main gameloop
+    */
+   while( !glfwWindowShouldClose( vg_window ) )
    {
-      vg_start();
-   
-      vg_console_init();
-      vg_register_exit( &vg_console_free, "Console" );
-   
-      vg_audio_init();
-      vg_register_exit( &vg_audio_free, "vg_audio_free" );
+      v2_copy( (v2f){ 0.0f, 0.0f }, vg_mouse_wheel );
+
+      glfwPollEvents();
+      
+      #ifdef VG_STEAM
+      sw_event_loop();
+      #endif
       
-      vg_debugtools_setup();
+      vg_time_last = vg_time;
+      vg_time = glfwGetTime();
+      vg_time_delta = vg_minf( vg_time - vg_time_last, 0.1f );
+      
+      vg_update_inputs();
+      vg_update();
+      vg_render();
+      
+      vg_lines_drawall((float*)vg_pv);
       
-      /* 
-       * Main gameloop
-       */
-      while( !glfwWindowShouldClose( vg_window ) )
       {
-         v2_copy( (v2f){ 0.0f, 0.0f }, vg_mouse_wheel );
-
-         glfwPollEvents();
-         
-         #ifdef VG_STEAM
-         sw_event_loop();
-         #endif
+         ui_begin( &ui_global_ctx, vg_window_x, vg_window_y );
+         ui_set_mouse( &ui_global_ctx, vg_mouse[0], vg_mouse[1], 
+               vg_get_button_state( "primary" ) );
          
-         vg_time_last = vg_time;
-         vg_time = glfwGetTime();
-         vg_time_delta = vg_minf( vg_time - vg_time_last, 0.1f );
+         audio_debug_ui( vg_pv );
+         vg_ui();
+         vg_console_draw();
          
-         vg_update_inputs();
-         vg_update();
-         vg_render();
-         
-         vg_lines_drawall((float*)vg_pv);
-         
-         {
-            ui_begin( &ui_global_ctx, vg_window_x, vg_window_y );
-            ui_set_mouse( &ui_global_ctx, vg_mouse[0], vg_mouse[1], 
-                  vg_get_button_state( "primary" ) );
-            
-            vg_ui();
-            vg_console_draw();
-            vg_debugtools_draw();
-            
-            ui_resolve( &ui_global_ctx );
-            ui_draw( &ui_global_ctx, NULL );
-         }
-         
-         glfwSwapBuffers( vg_window );
-         VG_CHECK_GL();
+         ui_resolve( &ui_global_ctx );
+         ui_draw( &ui_global_ctx, NULL );
       }
+      
+      glfwSwapBuffers( vg_window );
+      VG_CHECK_GL();
    }
    
    vg_exit();