what was given to CSQC_UpdateView in the first place
fix bugs with getpropertyvec(VF_FOV) - it reads view.ortho_x and y
values assuming they are the original angles, so these needed to be set
correctly by the engine before invoking CSQC_UpdateView
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11410
d7cf8633-e32d-0410-b094-
e92efae38249
r_refdef.view.frustum_x = 1; // tan(45 * M_PI / 180.0);
r_refdef.view.frustum_y = 1; // tan(45 * M_PI / 180.0);
+ r_refdef.view.ortho_x = 90; // abused as angle by VM_CL_R_SetView
+ r_refdef.view.ortho_y = 90; // abused as angle by VM_CL_R_SetView
buffer1 = (unsigned char *)Mem_Alloc(tempmempool, size * size * 4);
buffer2 = (unsigned char *)Mem_Alloc(tempmempool, size * size * 3);
r_refdef.view.frustum_x *= r_refdef.frustumscale_x;
r_refdef.view.frustum_y *= r_refdef.frustumscale_y;
+ r_refdef.view.ortho_x = atan(r_refdef.view.frustum_x) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView
+ r_refdef.view.ortho_y = atan(r_refdef.view.frustum_y) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView
if(!CL_VM_UpdateView())
R_RenderView();
r_refdef.view.frustum_x *= r_refdef.frustumscale_x;
r_refdef.view.frustum_y *= r_refdef.frustumscale_y;
+ r_refdef.view.ortho_x = atan(r_refdef.view.frustum_x) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView
+ r_refdef.view.ortho_y = atan(r_refdef.view.frustum_y) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView
+
if(!CL_VM_UpdateView())
R_RenderView();
}
extern cvar_t v_flipped;
extern cvar_t r_equalize_entities_fullbright;
+r_refdef_view_t csqc_original_r_refdef_view;
+
sfx_t *S_FindName(const char *name);
int Sbar_GetSortedPlayerIndex (int index);
void Sbar_SortFrags (void);
// clear renderable entity and light lists
r_refdef.scene.numentities = 0;
r_refdef.scene.numlights = 0;
- // FIXME: restore these to the values from VM_CL_UpdateView
- r_refdef.view.x = 0;
- r_refdef.view.y = 0;
- r_refdef.view.z = 0;
- r_refdef.view.width = vid.width;
- r_refdef.view.height = vid.height;
- r_refdef.view.depth = 1;
- // FIXME: restore frustum_x/frustum_y
- r_refdef.view.useperspective = true;
- r_refdef.view.frustum_y = tan(scr_fov.value * M_PI / 360.0) * (3.0/4.0) * cl.viewzoom;
- r_refdef.view.frustum_x = r_refdef.view.frustum_y * (float)r_refdef.view.width / (float)r_refdef.view.height / vid_pixelheight.value;
- r_refdef.view.frustum_x *= r_refdef.frustumscale_x;
- r_refdef.view.frustum_y *= r_refdef.frustumscale_y;
- r_refdef.view.ortho_x = scr_fov.value * (3.0 / 4.0) * (float)r_refdef.view.width / (float)r_refdef.view.height / vid_pixelheight.value;
- r_refdef.view.ortho_y = scr_fov.value * (3.0 / 4.0);
- r_refdef.view.clear = true;
- r_refdef.view.isoverlay = false;
+ // restore the view settings to the values that VM_CL_UpdateView received from the client code
+ r_refdef.view = csqc_original_r_refdef_view;
VectorCopy(cl.csqc_vieworiginfromengine, cl.csqc_vieworigin);
VectorCopy(cl.csqc_viewanglesfromengine, cl.csqc_viewangles);
cl.csqc_vidvars.drawworld = r_drawworld.integer != 0;
return r;
}
+extern r_refdef_view_t csqc_original_r_refdef_view;
qboolean CL_VM_UpdateView (void)
{
vec3_t emptyvector;
return false;
R_TimeReport("pre-UpdateView");
CSQC_BEGIN
+ csqc_original_r_refdef_view = r_refdef.view;
//VectorCopy(cl.viewangles, oldangles);
PRVM_clientglobalfloat(time) = cl.time;
PRVM_clientglobaledict(self) = cl.csqc_server2csqcentitynumber[cl.playerentity];
//VectorCopy(oldangles, cl.viewangles);
// Dresk : Reset Dmg Globals Here
CL_VM_UpdateDmgGlobals(0, 0, emptyvector);
+ r_refdef.view = csqc_original_r_refdef_view;
CSQC_END
R_TimeReport("UpdateView");
return true;
r_refdef.view.height = r_waterstate.cameraheight;
r_refdef.view.frustum_x = 1; // tan(45 * M_PI / 180.0);
r_refdef.view.frustum_y = 1; // tan(45 * M_PI / 180.0);
+ r_refdef.view.ortho_x = 90; // abused as angle by VM_CL_R_SetView
+ r_refdef.view.ortho_y = 90; // abused as angle by VM_CL_R_SetView
if(p->camera_entity)
{