From 64597e3da73aca15b2b516510dc37026a69d0d6f Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 10 Sep 2010 14:16:08 +0200 Subject: [PATCH] add a file I forgot (can do that with git too) --- qcsrc/menu/xonotic/slider_picmip.c | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 qcsrc/menu/xonotic/slider_picmip.c diff --git a/qcsrc/menu/xonotic/slider_picmip.c b/qcsrc/menu/xonotic/slider_picmip.c new file mode 100644 index 000000000..752987889 --- /dev/null +++ b/qcsrc/menu/xonotic/slider_picmip.c @@ -0,0 +1,43 @@ +#ifdef INTERFACE +CLASS(XonoticPicmipSlider) EXTENDS(XonoticTextSlider) + METHOD(XonoticPicmipSlider, configureXonoticPicmipSlider, void(entity)) + METHOD(XonoticPicmipSlider, draw, void(entity)) +ENDCLASS(XonoticPicmipSlider) +entity makeXonoticPicmipSlider(); // note: you still need to call addValue and configureXonoticTextSliderValues! +#endif + +#ifdef IMPLEMENTATION +entity makeXonoticPicmipSlider() +{ + entity me; + me = spawnXonoticPicmipSlider(); + me.configureXonoticPicmipSlider(me); + return me; +} +void XonoticPicmipSlider_configureXonoticPicmipSlider(entity me) +{ + me.configureXonoticTextSlider(me, "gl_picmip"); +} +float texmemsize() +{ + return + ( + 2500 * pow(0.5, max(0, cvar("gl_picmip") + cvar("gl_picmip_other"))) + + 1500 * pow(0.5, max(0, cvar("gl_picmip") + cvar("gl_picmip_world"))) + ) * ((cvar("r_texture_dds_load") || cvar("gl_texturecompression")) ? 0.4 : 1.0); // TC: normalmaps 50%, other 25%, few incompressible, guessing 40% as conservative average +} +void XonoticPicmipSlider_draw(entity me) +{ + float max_hard, max_soft; + max_hard = cvar("sys_memsize_virtual"); + max_soft = cvar("sys_memsize_physical"); + if(max_hard > 0) + { + while(me.value > 0 && texmemsize() > max_hard) + me.setValue(me, me.value - 1); + } + // TODO also check the soft limit! + // TODO better handling than clamping the slider! + SUPER(XonoticPicmipSlider).draw(me); +} +#endif -- 2.39.2