]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_screen.c
added rmesh_t and R_Mesh_AddVertex3f, R_Mesh_AddPolygon3f, R_Mesh_AddBrushMeshFromPla...
[xonotic/darkplaces.git] / cl_screen.c
index 392feb9411d517f40a8e0a82780211d2ba23f342..02632b2c9aa80a7fc9b5e104c530f3960b2ac169 100644 (file)
@@ -23,6 +23,7 @@ cvar_t scr_screenshot_jpeg_quality = {CVAR_SAVE, "scr_screenshot_jpeg_quality","
 cvar_t scr_screenshot_gamma = {CVAR_SAVE, "scr_screenshot_gamma","2.2"};
 cvar_t scr_screenshot_name = {0, "scr_screenshot_name","dp"};
 cvar_t cl_capturevideo = {0, "cl_capturevideo", "0"};
+cvar_t cl_capturevideo_sound = {0, "cl_capturevideo_sound", "0"};
 cvar_t cl_capturevideo_fps = {0, "cl_capturevideo_fps", "30"};
 cvar_t cl_capturevideo_rawrgb = {0, "cl_capturevideo_rawrgb", "0"};
 cvar_t cl_capturevideo_rawyv12 = {0, "cl_capturevideo_rawyv12", "0"};
@@ -177,7 +178,7 @@ void SCR_DrawTurtle (void)
        if (count < 3)
                return;
 
-       DrawQ_Pic (0, 0, "gfx/turtle.lmp", 0, 0, 1, 1, 1, 1, 0);
+       DrawQ_Pic (0, 0, "gfx/turtle", 0, 0, 1, 1, 1, 1, 0);
 }
 
 /*
@@ -194,7 +195,7 @@ void SCR_DrawNet (void)
        if (cls.demoplayback)
                return;
 
-       DrawQ_Pic (64, 0, "gfx/net.lmp", 0, 0, 1, 1, 1, 1, 0);
+       DrawQ_Pic (64, 0, "gfx/net", 0, 0, 1, 1, 1, 1, 0);
 }
 
 /*
@@ -215,8 +216,8 @@ void SCR_DrawPause (void)
        if (!cl.paused)
                return;
 
-       pic = Draw_CachePic ("gfx/pause.lmp", true);
-       DrawQ_Pic ((vid.conwidth - pic->width)/2, (vid.conheight - pic->height)/2, "gfx/pause.lmp", 0, 0, 1, 1, 1, 1, 0);
+       pic = Draw_CachePic ("gfx/pause", true);
+       DrawQ_Pic ((vid.conwidth - pic->width)/2, (vid.conheight - pic->height)/2, "gfx/pause", 0, 0, 1, 1, 1, 1, 0);
 }
 
 
@@ -299,7 +300,8 @@ SCR_BeginLoadingPlaque
 */
 void SCR_BeginLoadingPlaque (void)
 {
-       S_StopAllSounds ();
+       Host_StartVideo();
+       S_StopAllSounds();
        SCR_UpdateLoadingScreen();
 }
 
@@ -315,7 +317,7 @@ void R_TimeReport(char *desc)
        int length;
        int t;
 
-       if (!r_timereport_active)
+       if (!r_timereport_active || r_showtrispass)
                return;
 
        r_timereport_temp = r_timereport_current;
@@ -466,6 +468,7 @@ void CL_Screen_Init(void)
        Cvar_RegisterVariable (&scr_screenshot_jpeg_quality);
        Cvar_RegisterVariable (&scr_screenshot_gamma);
        Cvar_RegisterVariable (&cl_capturevideo);
+       Cvar_RegisterVariable (&cl_capturevideo_sound);
        Cvar_RegisterVariable (&cl_capturevideo_fps);
        Cvar_RegisterVariable (&cl_capturevideo_rawrgb);
        Cvar_RegisterVariable (&cl_capturevideo_rawyv12);
@@ -722,7 +725,7 @@ static int cl_capturevideo_soundrate = 0;
 static int cl_capturevideo_frame = 0;
 static qbyte *cl_capturevideo_buffer = NULL;
 static qfile_t *cl_capturevideo_videofile = NULL;
-static qfile_t *cl_capturevideo_soundfile = NULL;
+qfile_t *cl_capturevideo_soundfile = NULL;
 static short cl_capturevideo_rgbtoyuvscaletable[3][3][256];
 static unsigned char cl_capturevideo_yuvnormalizetable[3][256];
 //static unsigned char cl_capturevideo_rgbgammatable[3][256];
@@ -802,11 +805,15 @@ Cr = R *  .500 + G * -.419 + B * -.0813 + 128.;
                cl_capturevideo_videofile = NULL;
        }
 
-       cl_capturevideo_soundfile = FS_Open ("video/dpvideo.wav", "wb", false, true);
-
-       // wave header will be filled out when video ends
-       memset(out, 0, 44);
-       FS_Write (cl_capturevideo_soundfile, out, 44);
+       if (cl_capturevideo_sound.integer)
+       {
+               cl_capturevideo_soundfile = FS_Open ("video/dpvideo.wav", "wb", false, true);
+               // wave header will be filled out when video ends
+               memset(out, 0, 44);
+               FS_Write (cl_capturevideo_soundfile, out, 44);
+       }
+       else
+               cl_capturevideo_soundfile = NULL;
 }
 
 void SCR_CaptureVideo_EndVideo(void)
@@ -967,6 +974,8 @@ qboolean SCR_CaptureVideo_VideoFrame(int newframenum)
 
 void SCR_CaptureVideo_SoundFrame(qbyte *bufstereo16le, size_t length, int rate)
 {
+       if (!cl_capturevideo_soundfile)
+               return;
        cl_capturevideo_soundrate = rate;
        if (FS_Write (cl_capturevideo_soundfile, bufstereo16le, 4 * length) < 4 * length)
        {
@@ -988,7 +997,13 @@ void SCR_CaptureVideo(void)
                        Con_Printf("You can not change the video framerate while recording a video.\n");
                        Cvar_SetValueQuick(&cl_capturevideo_fps, cl_capturevideo_framerate);
                }
-               newframenum = (Sys_DoubleTime() - cl_capturevideo_starttime) * cl_capturevideo_framerate;
+               if (cl_capturevideo_soundfile)
+               {
+                       // preserve sound sync by duplicating frames when running slow
+                       newframenum = (Sys_DoubleTime() - cl_capturevideo_starttime) * cl_capturevideo_framerate;
+               }
+               else
+                       newframenum = cl_capturevideo_frame + 1;
                // if falling behind more than one second, stop
                if (newframenum - cl_capturevideo_frame > (int)ceil(cl_capturevideo_framerate))
                {