]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - csprogs.c
fix interpretation of text brightness/contrast cvars when a color multiplier is set
[xonotic/darkplaces.git] / csprogs.c
index b90838c31edab4af705dac8b0a4b2e85b54d7cc7..2bf194178b004845dfa98f8a192d5ca041344deb 100644 (file)
--- a/csprogs.c
+++ b/csprogs.c
@@ -224,6 +224,8 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed)
                entrender->flags |= RENDER_SHADOW;
        if (entrender->flags & RENDER_VIEWMODEL)
                entrender->flags |= RENDER_NOSELFSHADOW;
+       if (entrender->effects & EF_NOSELFSHADOW)
+               entrender->flags |= RENDER_NOSELFSHADOW;
 
        // make the other useful stuff
        CL_UpdateRenderEntity(entrender);
@@ -350,6 +352,46 @@ void CL_VM_Parse_StuffCmd (const char *msg)
                csqc_progsize.flags = sizeflags;
                return;
        }
+
+       if(cls.demoplayback)
+       if(!strncmp(msg, "curl --clear_autodownload\ncurl --pak --forthismap --as ", 55))
+       {
+               // special handling for map download commands
+               // run these commands IMMEDIATELY, instead of waiting for a client frame
+               // that way, there is no black screen when playing back demos
+               // I know this is a really ugly hack, but I can't think of any better way
+               // FIXME find the actual CAUSE of this, and make demo playback WAIT
+               // until all maps are loaded, then remove this hack
+
+               char buf[MAX_INPUTLINE];
+               const char *p, *q;
+               size_t l;
+
+               p = msg;
+
+               for(;;)
+               {
+                       q = strchr(p, '\n');
+                       if(q)
+                               l = q - p;
+                       else
+                               l = strlen(p);
+                       if(l > sizeof(buf) - 1)
+                               l = sizeof(buf) - 1;
+                       strlcpy(buf, p, l + 1); // strlcpy needs a + 1 as it includes the newline!
+
+                       Cmd_ExecuteString(buf, src_command);
+
+                       p += l;
+                       if(*p == '\n')
+                               ++p; // skip the newline and continue
+                       else
+                               break; // end of string or overflow
+               }
+               Cmd_ExecuteString("curl --clear_autodownload", src_command); // don't inhibit CSQC loading
+               return;
+       }
+
        if(!cl.csqc_loaded)
        {
                Cbuf_AddText(msg);