- replay_buffer = malloc( sizeof(m4x3f) * REPLAY_LENGTH * (PART_COUNT) );
-
- vg_tex2d_init( texture_list, vg_list_size( texture_list ) );
-
- rb_init( &mr_box );
- rb_init( &mrs_box );
- mrs_box.co[2] += 2.0f;
-
- vg_convar_push( (struct vg_convar){
- .name = "frame",
- .data = &replay_buffer_frame,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=REPLAY_LENGTH-1, .clamp=1 },
- .persistent = 0
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "rec",
- .data = &replay_record,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=1 },
- .persistent = 0
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "freecam",
- .data = &freecam,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=1 },
- .persistent = 1
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "debugcam",
- .data = &sv_debugcam,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=0 },
- .persistent = 1
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "debugview",
- .data = &debugview,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=0 },
- .persistent = 1
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "debugsdf",
- .data = &debugsdf,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=1 },
- .persistent = 1
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "phys",
- .data = &sv_phys,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=1 },
- .persistent = 1
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "thirdperson",
- .data = &thirdperson,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=1 },
- .persistent = 1
- });
-
- vg_convar_push( (struct vg_convar){
- .name = "div",
- .data = &clock_divider,
- .data_type = k_convar_dtype_i32,
- .opt_i32 = { .min=0, .max=1, .clamp=0 },
- .persistent = 1
- });
-
- vg_function_push( (struct vg_cmd){
- .name = "reset",
- .function = reset_player
- });
-
- v3f lightDir = { 0.1f, 0.8f, 0.2f };
- v3_normalize( lightDir );
-
- character_load( &player.mdl, "ch_default" );
- character_init_ragdoll( &player.mdl );
-
- /* Setup scene */
- scene_init( &world.geo );
- model *mworld = vg_asset_read( "models/mp_dev.mdl" );
-
- scene_add_model( &world.geo, mworld, submodel_get( mworld, "mp_dev" ),
- (v3f){0.0f,0.0f,0.0f}, 0.0f, 1.0f );
-
- scene_add_model( &world.geo, mworld, submodel_get( mworld, "terrain" ),
- (v3f){0.0f,0.0f,0.0f}, 0.0f, 1.0f );
-
- free( mworld );
- scene_upload( &world.geo );
- bvh_create( &world.geo );
-
-
- reset_player( 0, NULL );
- player_transform_update();
-
- /* Create framebuffers */
- glGenFramebuffers( 1, &render.fb_background );
- glBindFramebuffer( GL_FRAMEBUFFER, render.fb_background );
-
- glGenTextures( 1, &render.rgb_background );
- glBindTexture( GL_TEXTURE_2D, render.rgb_background );
- glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, vg_window_x, vg_window_y,
- 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
-
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
- glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D,
- render.rgb_background, 0);
-
- {
- float quad[] = { 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f,
- 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f };
-
- glGenVertexArrays( 1, &render.fsquad.vao );
- glGenBuffers( 1, &render.fsquad.vbo );
- glGenBuffers( 1, &render.fsquad.ebo );
- glBindVertexArray( render.fsquad.vao );
- glBindBuffer( GL_ARRAY_BUFFER, render.fsquad.vbo );
- glBufferData( GL_ARRAY_BUFFER, sizeof(quad), quad, GL_STATIC_DRAW );
- glBindVertexArray( render.fsquad.vao );
- glVertexAttribPointer( 0, 2, GL_FLOAT, GL_FALSE,
- sizeof(float)*2, (void*)0 );
- glEnableVertexAttribArray( 0 );
- VG_CHECK_GL();
- }