/* 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;
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 )
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 -- )
{
}
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 )
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();