From: Rudolf Polzer Date: Fri, 10 Sep 2010 12:16:08 +0000 (+0200) Subject: add a file I forgot (can do that with git too) X-Git-Tag: xonotic-v0.1.0preview~315^2~7 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=64597e3da73aca15b2b516510dc37026a69d0d6f;p=xonotic%2Fxonotic-data.pk3dir.git add a file I forgot (can do that with git too) --- 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