]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - clvm_cmds.c
new cvars: snd_startloopingsounds, snd_startnonloopingsounds
[xonotic/darkplaces.git] / clvm_cmds.c
index 580eabf21f8b19ff3136b9646c1e3215498ce05f..3c153c8f110c716efbae0d0cb0ebcd28dd87aced 100644 (file)
@@ -683,11 +683,14 @@ static void VM_CL_getlight (void)
 //[515]: SCENE MANAGER builtins
 extern qboolean CSQC_AddRenderEdict (prvm_edict_t *ed, int edictnum);//csprogs.c
 
-static void CSQC_R_RecalcView (void)
+void CSQC_R_RecalcView (void)
 {
-       extern matrix4x4_t viewmodelmatrix;
+       extern matrix4x4_t viewmodelmatrix_nobob;
+       extern matrix4x4_t viewmodelmatrix_withbob;
        Matrix4x4_CreateFromQuakeEntity(&r_refdef.view.matrix, cl.csqc_vieworigin[0], cl.csqc_vieworigin[1], cl.csqc_vieworigin[2], cl.csqc_viewangles[0], cl.csqc_viewangles[1], cl.csqc_viewangles[2], 1);
-       Matrix4x4_CreateFromQuakeEntity(&viewmodelmatrix, cl.csqc_vieworigin[0], cl.csqc_vieworigin[1], cl.csqc_vieworigin[2], cl.csqc_viewangles[0], cl.csqc_viewangles[1], cl.csqc_viewangles[2], cl_viewmodel_scale.value);
+       Matrix4x4_Copy(&viewmodelmatrix_nobob, &r_refdef.view.matrix);
+       Matrix4x4_ConcatScale(&viewmodelmatrix_nobob, cl_viewmodel_scale.value);
+       Matrix4x4_Concat(&viewmodelmatrix_withbob, &r_refdef.view.matrix, &cl.csqc_viewmodelmatrixfromengine);
 }
 
 void CL_RelinkLightFlashes(void);
@@ -720,6 +723,7 @@ void VM_CL_R_ClearScene (void)
        cl.csqc_vidvars.drawworld = r_drawworld.integer != 0;
        cl.csqc_vidvars.drawenginesbar = false;
        cl.csqc_vidvars.drawcrosshair = false;
+       CSQC_R_RecalcView();
 }
 
 //#301 void(float mask) addentities (EXT_CSQC)
@@ -3087,7 +3091,7 @@ static void VM_DrawPolygonCallback (const entity_render_t *ent, const rtlight_t
                rtexture_t *tex = polys->data_triangles[surfacelist[surfacelistindex]].texture;
                int drawflag = polys->data_triangles[surfacelist[surfacelistindex]].drawflag;
                DrawQ_ProcessDrawFlag(drawflag, polys->data_triangles[surfacelist[surfacelistindex]].hasalpha);
-               R_SetupShader_Generic(tex, NULL, GL_MODULATE, 1);
+               R_SetupShader_Generic(tex, NULL, GL_MODULATE, 1, false);
                numtriangles = 0;
                for (;surfacelistindex < numsurfaces;surfacelistindex++)
                {
@@ -4014,7 +4018,7 @@ void VM_CL_RotateMoves(void)
         * has to detect input the client sent before it received the origin
         * update, but after the warp occurred on the server, and has to adjust
         * input appropriately.
-        */
+    */
        matrix4x4_t m;
        vec3_t v = {0, 0, 0};
        vec3_t x, y, z;
@@ -4024,6 +4028,16 @@ void VM_CL_RotateMoves(void)
        CL_RotateMoves(&m);
 }
 
+// #358 void(string cubemapname) loadcubemap
+static void VM_CL_loadcubemap(void)
+{
+       const char *name;
+
+       VM_SAFEPARMCOUNT(1, VM_CL_loadcubemap);
+       name = PRVM_G_STRING(OFS_PARM0);
+       R_GetCubemap(name);
+}
+
 //============================================================================
 
 // To create a almost working builtin file from this replace:
@@ -4395,7 +4409,7 @@ VM_CL_serverkey,                          // #354 string(string key) serverkey (EXT_CSQC)
 VM_CL_videoplaying,                            // #355
 VM_findfont,                                   // #356 float(string fontname) loadfont (DP_GFX_FONTS)
 VM_loadfont,                                   // #357 float(string fontname, string fontmaps, string sizes, float slot) loadfont (DP_GFX_FONTS)
-NULL,                                                  // #358
+VM_CL_loadcubemap,                             // #358 void(string cubemapname) loadcubemap (DP_GFX_)
 NULL,                                                  // #359
 VM_CL_ReadByte,                                        // #360 float() readbyte (EXT_CSQC)
 VM_CL_ReadChar,                                        // #361 float() readchar (EXT_CSQC)