]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - menu.c
implemented framerate-dependent particle quality reduction to try to
[xonotic/darkplaces.git] / menu.c
diff --git a/menu.c b/menu.c
index 29467965802cf1c5f50e6c4c383ff0063ca50e05..a48e89aafdb9e0f0c0f8a0daf99f21428055c911 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -5070,12 +5070,34 @@ void MP_KeyEvent (int key, char ascii, qboolean downevent)
 
 void MP_Draw (void)
 {
+       // declarations that are needed right now
+       extern r_refdef_scene_t menu_scene;
+
+       int oldqualityreduction;
+       static r_refdef_scene_t clientscene;
+       clientscene = r_refdef.scene;
+       r_refdef.scene = menu_scene;
+
+       // reset the temp entities each frame
+       r_refdef.scene.numtempentities = 0;
+
+       // menu scenes do not use reduced rendering quality
+       oldqualityreduction = r_refdef.view.qualityreduction;
+       r_refdef.view.qualityreduction = 0;
+
        PRVM_Begin;
        PRVM_SetProg(PRVM_MENUPROG);
 
+       // FIXME: this really shouldnt error out lest we have a very broken refdef state...?
+       // or does it kill the server too?
        PRVM_ExecuteProgram(prog->funcoffsets.m_draw,"m_draw() required");
 
        PRVM_End;
+
+       r_refdef.view.qualityreduction = oldqualityreduction;
+
+       menu_scene = r_refdef.scene;
+       r_refdef.scene = clientscene;
 }
 
 void MP_ToggleMenu_f (void)