mirror of
https://github.com/nzp-team/glquake.git
synced 2025-04-22 17:44:22 +00:00
separate viewmodel fov
This commit is contained in:
parent
bf4df2b74f
commit
c96974d03d
7 changed files with 35 additions and 36 deletions
BIN
.DS_Store
vendored
BIN
.DS_Store
vendored
Binary file not shown.
BIN
nzportable.3dsx
BIN
nzportable.3dsx
Binary file not shown.
BIN
nzportable.elf
BIN
nzportable.elf
Binary file not shown.
|
@ -112,6 +112,7 @@ typedef struct {
|
|||
//johnfitz
|
||||
|
||||
extern cvar_t gl_ztrick;
|
||||
extern cvar_t scr_fov_viewmodel;
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -697,8 +698,17 @@ void R_DrawAliasModel (entity_t *e)
|
|||
// double size of eyes, since they are really hard to see in gl
|
||||
glScalef (paliashdr->scale[0]*2, paliashdr->scale[1]*2, paliashdr->scale[2]*2);
|
||||
} else {
|
||||
glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1], paliashdr->scale_origin[2]);
|
||||
glScalef (paliashdr->scale[0], paliashdr->scale[1], paliashdr->scale[2]);
|
||||
|
||||
// Special handling of view model to keep FOV from altering look. Pretty good. Not perfect but rather close.
|
||||
if (e == &cl.viewent && scr_fov_viewmodel.value) {
|
||||
float scale = 1.0f / tan (DEG2RAD (scr_fov.value / 2.0f)) * scr_fov_viewmodel.value / 90.0f;
|
||||
glTranslatef (paliashdr->scale_origin[0] * scale, paliashdr->scale_origin[1], paliashdr->scale_origin[2]);
|
||||
glScalef (paliashdr->scale[0] * scale, paliashdr->scale[1], paliashdr->scale[2]);
|
||||
} else {
|
||||
glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1], paliashdr->scale_origin[2]);
|
||||
glScalef (paliashdr->scale[0], paliashdr->scale[1], paliashdr->scale[2]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
anim = (int)(cl.time*10) & 3;
|
||||
|
|
|
@ -82,7 +82,8 @@ float scr_conlines; // lines of console to display
|
|||
float oldscreensize, oldfov;
|
||||
|
||||
cvar_t scr_viewsize = {"viewsize","100", true};
|
||||
cvar_t scr_fov = {"fov","80"}; // 10 - 170
|
||||
cvar_t scr_fov = {"fov","90"}; // 10 - 170
|
||||
cvar_t scr_fov_viewmodel = {"r_viewmodel_fov","70"};
|
||||
cvar_t scr_conspeed = {"scr_conspeed","300"};
|
||||
cvar_t scr_centertime = {"scr_centertime","2"};
|
||||
cvar_t scr_showram = {"showram","1"};
|
||||
|
@ -576,6 +577,7 @@ static void SCR_CalcRefdef (void)
|
|||
if (scr_viewsize.value > 120)
|
||||
Cvar_Set ("viewsize","120");
|
||||
|
||||
|
||||
// bound field of view
|
||||
if (scr_fov.value < 10)
|
||||
Cvar_Set ("fov","10");
|
||||
|
@ -673,6 +675,7 @@ void SCR_Init (void)
|
|||
{
|
||||
|
||||
Cvar_RegisterVariable (&scr_fov);
|
||||
Cvar_RegisterVariable (&scr_fov_viewmodel);
|
||||
Cvar_RegisterVariable (&scr_viewsize);
|
||||
Cvar_RegisterVariable (&scr_conspeed);
|
||||
Cvar_RegisterVariable (&scr_showram);
|
||||
|
@ -1387,6 +1390,7 @@ int GetWeaponZoomAmmount (void)
|
|||
}
|
||||
float zoomin_time;
|
||||
int original_fov;
|
||||
int original_view_fov;
|
||||
void SCR_UpdateScreen (void)
|
||||
{
|
||||
static float oldscr_viewsize;
|
||||
|
@ -1421,65 +1425,50 @@ void SCR_UpdateScreen (void)
|
|||
//
|
||||
if (cl.stats[STAT_ZOOM] == 1)
|
||||
{
|
||||
/*if (zoomin_time == 0 && !original_fov)
|
||||
{
|
||||
original_fov = scr_fov.value;
|
||||
zoomin_time = Sys_FloatTime () + 0.01;
|
||||
Cvar_SetValue ("fov", scr_fov.value - 2.5);
|
||||
|
||||
}
|
||||
else if (zoomin_time < Sys_FloatTime ())
|
||||
{
|
||||
int tempfloat = original_fov - GetWeaponZoomAmmount();
|
||||
if (scr_fov.value > tempfloat)
|
||||
{
|
||||
zoomin_time = Sys_FloatTime () + 0.01;
|
||||
Cvar_SetValue ("fov", scr_fov.value - 2.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
Cvar_SetValue ("fov", tempfloat);
|
||||
zoomin_time = 0;
|
||||
}
|
||||
}*/
|
||||
if(!original_fov)
|
||||
if(!original_fov) {
|
||||
original_fov = scr_fov.value;
|
||||
original_view_fov = scr_fov_viewmodel.value;
|
||||
}
|
||||
|
||||
if(scr_fov.value > (GetWeaponZoomAmmount() + 1))//+1 for accounting for floating point inaccurraces
|
||||
{
|
||||
scr_fov.value += ((original_fov - GetWeaponZoomAmmount()) - scr_fov.value) * 0.25;
|
||||
scr_fov_viewmodel.value += ((original_view_fov - GetWeaponZoomAmmount()) - scr_fov_viewmodel.value) * 0.25;
|
||||
Cvar_SetValue("fov",scr_fov.value);
|
||||
Cvar_SetValue("r_viewmodel_fov", scr_fov_viewmodel.value);
|
||||
}
|
||||
}
|
||||
else if (cl.stats[STAT_ZOOM] == 2)
|
||||
{
|
||||
Cvar_SetValue ("fov", 30);
|
||||
Cvar_SetValue ("r_viewmodel_fov", 30);
|
||||
zoomin_time = 0;
|
||||
}
|
||||
else if (cl.stats[STAT_ZOOM] == 3)
|
||||
{
|
||||
if(!original_fov)
|
||||
if(!original_fov) {
|
||||
original_fov = scr_fov.value;
|
||||
//original_fov = scr_fov.value;
|
||||
original_view_fov = scr_fov_viewmodel.value;
|
||||
}
|
||||
|
||||
scr_fov.value += (original_fov - 10 - scr_fov.value) * 0.3;
|
||||
scr_fov_viewmodel.value += (original_view_fov - 10 - scr_fov_viewmodel.value) * 0.3;
|
||||
Cvar_SetValue("fov",scr_fov.value);
|
||||
Cvar_SetValue("r_viewmodel_fov", scr_fov_viewmodel.value);
|
||||
}
|
||||
else if (cl.stats[STAT_ZOOM] == 0 && original_fov != 0)
|
||||
{
|
||||
/*zoomin_time = Sys_FloatTime () + 0.01;
|
||||
Cvar_SetValue ("fov", scr_fov.value + 2.5);
|
||||
if (scr_fov.value == original_fov)
|
||||
{
|
||||
zoomin_time = 0;
|
||||
original_fov = 0;
|
||||
}*/
|
||||
if(scr_fov.value < (original_fov + 1))//+1 for accounting for floating point inaccuracies
|
||||
{
|
||||
scr_fov.value += (original_fov - scr_fov.value) * 0.25;
|
||||
scr_fov_viewmodel.value += (original_view_fov - scr_fov_viewmodel.value) * 0.25;
|
||||
Cvar_SetValue("fov",scr_fov.value);
|
||||
Cvar_SetValue("r_viewmodel_fov", scr_fov_viewmodel.value);
|
||||
}
|
||||
else
|
||||
{
|
||||
original_fov = 0;
|
||||
original_view_fov = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,8 +29,6 @@ int nanmask = 255<<23;
|
|||
|
||||
/*-----------------------------------------------------------------*/
|
||||
|
||||
#define DEG2RAD( a ) ( a * M_PI ) / 180.0F
|
||||
|
||||
void ProjectPointOnPlane( vec3_t dst, const vec3_t p, const vec3_t normal )
|
||||
{
|
||||
float d;
|
||||
|
|
|
@ -46,6 +46,8 @@ extern int nanmask;
|
|||
#define VectorAdd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];}
|
||||
#define VectorCopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];}
|
||||
|
||||
#define DEG2RAD( a ) ( a * M_PI ) / 180.0F
|
||||
|
||||
void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc);
|
||||
|
||||
vec_t _DotProduct (vec3_t v1, vec3_t v2);
|
||||
|
|
Loading…
Reference in a new issue