Client: Replace rogue setproperty calls with ones talking to our g_view object

This commit is contained in:
Marco Cawthorne 2022-08-05 21:15:19 -07:00
parent 81b4bc042f
commit 6d8273331a
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
15 changed files with 95 additions and 103 deletions

View File

@ -48,6 +48,9 @@ NSView
NSClient m_client;
vector m_vecClientAngle;
bool m_bSetClientAngle;
void(void) NSView;
/* the only method we we want to call setproperty() */
@ -75,8 +78,10 @@ NSView
virtual void(vector) SetCameraOrigin;
virtual void(vector) SetCameraAngle;
virtual void(vector) SetClientAngle;
virtual void(int) SetSeatID;
virtual void(float) SetAFOV;
virtual float(void) GetAFOV;
virtual vector(void) GetHUDCanvasSize;
virtual vector(void) GetHUDCanvasPos;
@ -92,4 +97,4 @@ NSView
NSView g_viewSeats[4];
/* the current seat run for each draw call, for each player. always use talk to this! */
NSView g_view;
NSView g_view;

View File

@ -39,6 +39,14 @@ NSView::SetupView(void)
setproperty(VF_ANGLES, angles);
}
/* the view may not have gotten the chance to set the client angle early on */
/* honestly this could be handled a lot better, but I don't know of a more reliable solution right now */
if (m_bSetClientAngle == true || cltime <= 0.5) {
setproperty(VF_ANGLES, m_vecClientAngle);
setproperty(VF_CL_VIEWANGLES, m_vecClientAngle);
m_bSetClientAngle = false;
}
m_vecLastOrigin = origin;
}
@ -72,7 +80,6 @@ NSView::StairSmooth(void)
endpos[2] = origin[2];
}
//setproperty(VF_ORIGIN, endpos);
origin = endpos;
}
}
@ -119,6 +126,13 @@ NSView::GetCameraAngle(void)
return angles;
}
void
NSView::SetClientAngle(vector new_angle)
{
m_vecClientAngle = new_angle;
m_bSetClientAngle = true;
}
void
NSView::SetViewMode(viewmode_e new_mode)
{
@ -149,6 +163,12 @@ NSView::SetAFOV(float new_fov)
m_flFieldOfView = new_fov;
}
float
NSView::GetAFOV(void)
{
return m_flFieldOfView;
}
vector
NSView::GetHUDCanvasPos(void)
{
@ -224,10 +244,7 @@ NSView::UpdateView(void)
cl.UpdateIntermissionCam();
}
SetCameraOrigin(cl.GetEyePos());
SetCameraAngle(view_angles);
StairSmooth();
AddPunchAngle(cl.punchangle);
SetAFOV(cvar("fov") * pl.viewzoom);
@ -316,7 +333,7 @@ NSView::UpdateView(void)
/* move this into NSClient methods */
cl.PostFrame();
#if 0
#if 1
Font_DrawText(m_vecPosition + [8,8], "NSView Debug Information", FONT_CON);
Font_DrawText(m_vecPosition + [8,20], sprintf("Seat: %i", m_iSeat), FONT_CON);
Font_DrawText(m_vecPosition + [8,32], sprintf("FOV: %d", m_flFieldOfView), FONT_CON);

View File

@ -101,8 +101,8 @@ CMD_setpos(void)
void
CMD_setang(void)
{
setproperty(VF_CL_VIEWANGLES, stov(argv(1)));
setproperty(VF_ANGLES, stov(argv(1)));
g_view.SetCameraAngle(stov(argv(1)));
g_view.SetClientAngle(stov(argv(1)));
}
void

View File

@ -119,14 +119,14 @@ drawpic3d(vector worldpos, string mat, vector sz, vector rgb, float alpha)
drawpic3d_visible(vector p1) {
vector delta;
float fov;
vector p2 = getproperty(VF_ORIGIN);
vector ang = getproperty(VF_CL_VIEWANGLES);
vector p2 = g_view.GetCameraOrigin();
vector ang = g_view.GetCameraAngle();
makevectors(ang);
delta = normalize (p1 - p2);
fov = delta * v_forward;
if (fov > (getproperty(VF_AFOV)/180)) {
if (fov > (g_view.GetAFOV()/180)) {
traceline(p2, p1, MOVE_WORLDONLY, self);
if (trace_fraction == 1.0) {
return (1);

View File

@ -259,7 +259,13 @@ CSQC_UpdateView(float w, float h, float focus)
pSeat = &g_seats[s];
pSeatLocal = &g_seatslocal[s];
g_view = g_viewSeats[s];
setproperty(VF_ACTIVESEAT, (float)s);
pSeat->m_ePlayer = findfloat(world, ::entnum, player_localentnum);
if (pSeat->m_ePlayer == world)
continue;
cl = (NSClient)pSeat->m_ePlayer;
/* set up our single/split viewport */

View File

@ -115,8 +115,8 @@ Event_Parse(float type)
a[0] = readfloat();
a[1] = readfloat();
a[2] = readfloat();
setproperty(VF_CL_VIEWANGLES, a);
setproperty(VF_ANGLES, a);
g_view.SetCameraAngle(a);
g_view.SetClientAngle(a);
break;
case EV_SHAKE:
if (me.classname == "spectator")

View File

@ -88,9 +88,9 @@ CMap_Shoot(void)
print("^3Cubemap processing...\n");
g_vecCubePos = tmp.origin;
g_dCubeSize = (float)tmp.m_iSize;
setproperty(VF_CL_VIEWANGLES, [0,0,0]);
setproperty(VF_ANGLES, [0,0,0]);
g_view.SetClientAngle([0,0,0]);
g_view.SetCameraAngle([0,0,0]);
strReflectcube = sprintf(
"env/%s_%d_%d_%d",

View File

@ -37,7 +37,6 @@ func_illusionary:NSRenderableEntity
virtual float(entity, float) SendEntity;
virtual void(entity, int) Trigger;
#else
virtual float() predraw;
virtual void(void) Init;
#endif
};
@ -90,23 +89,6 @@ func_illusionary::Respawn(void)
}
}
#else
float
func_illusionary::predraw(void)
{
vector vecPlayer;
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
if (checkpvs(vecPlayer, this) == FALSE) {
return (PREDRAW_NEXT);
}
super::predraw();
addentity(self);
return (PREDRAW_NEXT);
}
void
func_illusionary::Init(void)
@ -120,12 +102,11 @@ func_illusionary::Init(void)
}
precache_model(model);
setmodel(this, model);
setorigin(this, origin);
SetModel(model);
SetOrigin(origin);
SetAngles([0,0,0]);
SetMovetype(MOVETYPE_NONE);
SetSolid(SOLID_NOT);
angles = [0,0,0];
if (skin == -1 && m_iRenderMode == RM_TEXTURE)
SetRenderMode(RM_TRIGGER);

View File

@ -37,7 +37,6 @@ func_wall:NSRenderableEntity
virtual float(entity, float) SendEntity;
virtual void(entity, int) Trigger;
#else
virtual float() predraw;
virtual void(void) Init;
#endif
};
@ -86,24 +85,6 @@ func_wall::Respawn(void)
ClearAngles();
}
#else
float
func_wall::predraw(void)
{
vector vecPlayer;
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
if (checkpvs(vecPlayer, this) == FALSE) {
return (PREDRAW_NEXT);
}
super::predraw();
addentity(self);
return (PREDRAW_NEXT);
}
void
func_wall::Init(void)
{
@ -116,11 +97,11 @@ func_wall::Init(void)
}
precache_model(model);
setmodel(this, model);
setorigin(this, origin);
movetype = MOVETYPE_PUSH;
solid = SOLID_BSP;
angles = [0,0,0];
SetModel(model);
SetOrigin(origin);
SetAngles([0,0,0]);
SetMovetype(MOVETYPE_NONE);
SetSolid(SOLID_NOT);
MakeStatic();
}

View File

@ -187,7 +187,8 @@ prop_vehicle_driveable::UpdateView(void)
vecEnd = vecStart + (v_forward * -256) + [0,0,16] + (v_right * 4);
other = world;
traceline(vecStart, vecEnd, MOVE_OTHERONLY, this);
setproperty(VF_ORIGIN, trace_endpos + (v_forward * 16));
g_view.SetCameraOrigin(trace_endpos + (v_forward * 16));
g_view.SetClientAngle(view_angles);
}
void

View File

@ -96,8 +96,8 @@ trigger_camera::ReceiveEntity(float flNew, float flFlags)
else
pSeat->m_flCameraTime = time + flWait;
setproperty(VF_CL_VIEWANGLES, angles);
setproperty(VF_ANGLES, angles);
g_view.SetCameraAngle(angles);
g_view.SetClientAngle(angles);
}
classname = "trigger_camera";

View File

@ -85,8 +85,8 @@ NSClient::ClientInputFrame(void)
void
NSClient::UpdateAliveCam(void)
{
setproperty(VF_ORIGIN, pSeat->m_vecPredictedOrigin + view_ofs);
setproperty(VF_ANGLES, view_angles + punchangle);
g_view.SetCameraOrigin(GetEyePos());
g_view.SetCameraAngle(view_angles);
}
void
@ -94,9 +94,9 @@ NSClient::UpdateDeathcam(void)
{
/* death cam */
view_angles[2] = 45.0f;
setproperty(VF_ORIGIN, pSeat->m_vecPredictedOrigin);
setproperty(VF_CL_VIEWANGLES, view_angles);
setproperty(VF_ANGLES, view_angles);
g_view.SetCameraOrigin(GetEyePos());
g_view.SetCameraAngle(view_angles);
}
void
@ -104,8 +104,8 @@ NSClient::UpdateIntermissionCam(void)
{
view_angles = pSeat->m_vecCameraAngle;
view_angles += [sin(time), sin(time * 1.5f)] * 0.1f;
setproperty(VF_ORIGIN, pSeat->m_vecCameraOrigin);
setproperty(VF_CL_VIEWANGLES, view_angles);
g_view.SetCameraOrigin(pSeat->m_vecCameraOrigin);
g_view.SetCameraAngle(view_angles);
}
float

View File

@ -153,11 +153,12 @@ NSClientPlayer::OnRemoveEntity(void)
void
NSClientPlayer::UpdateAliveCam(void)
{
setproperty(VF_ORIGIN, pSeat->m_vecPredictedOrigin + view_ofs);
g_view.SetCameraOrigin(GetEyePos());
g_view.SetCameraAngle(view_angles);
if (vehicle) {
NSVehicle veh = (NSVehicle)vehicle;
if (veh.UpdateView)
veh.UpdateView();
} else if (health) {
@ -166,12 +167,12 @@ NSClientPlayer::UpdateAliveCam(void)
vector vStart = [pSeat->m_vecPredictedOrigin[0], pSeat->m_vecPredictedOrigin[1], pSeat->m_vecPredictedOrigin[2] + 16] + (v_right * 4);
vector vEnd = vStart + (v_forward * -48) + [0,0,16] + (v_right * 4);
traceline(vStart, vEnd, FALSE, self);
setproperty(VF_ORIGIN, trace_endpos + (v_forward * 5));
g_view.SetCameraOrigin(trace_endpos + (v_forward * 5));
}
}
Shake_Update(this);
setproperty(VF_ANGLES, view_angles + punchangle);
g_view.AddPunchAngle(punchangle);
}
/*

View File

@ -83,7 +83,6 @@ NSEntity::WaterLevel(void)
return waterlevel;
}
/*
============
NSEntity::VisibleVec
@ -234,7 +233,7 @@ void
NSEntity::RendererRestarted(void)
{
};
}
/*
============
@ -481,21 +480,25 @@ NSEntity::ParentUpdate(void)
m_eTouchLast = __NULL__;
}
}
entity
NSEntity::GetParent(void)
{
return find(world, ::targetname, m_parent);
}
void
NSEntity::SetParent(string name)
{
m_parent = name;
}
void
NSEntity::SetParentAttachment(string name)
{
m_parent_attachment = name;
}
void
NSEntity::ClearParent(void)
{
@ -508,6 +511,7 @@ NSEntity::RestoreAngles(void)
{
angles = GetSpawnAngles();
}
void
NSEntity::ClearAngles(void)
{
@ -519,19 +523,19 @@ void
NSEntity::SetOwner(entity newOwner)
{
owner = newOwner;
};
}
void
NSEntity::SetVelocity(vector vecNew)
{
velocity = vecNew;
};
}
void
NSEntity::SetTouch(void() newTouch)
{
touch = newTouch;
};
}
/* we want to really use those set functions because they'll notify of any
* networking related changes. otherwise we'll have to keep track of copies
@ -561,6 +565,7 @@ NSEntity::SetSolid(float newSolid)
{
solid = newSolid;
}
void
NSEntity::SetScale(float newScale)
{
@ -784,7 +789,6 @@ NSEntity::GetFlags(void)
return flags;
}
vector
NSEntity::GetSpawnOrigin(void)
{
@ -1016,7 +1020,7 @@ NSEntity::Destroy(void)
nextthink = time + 0.01;
else
nextthink = time;
};
}
void
NSEntity::Spawned(void)

View File

@ -713,6 +713,7 @@ NSRenderableEntity::Respawn(void)
void
NSRenderableEntity::Show(void)
{
/* this needs to be more useful */
}
void
@ -728,11 +729,9 @@ NSRenderableEntity::Hide(void)
void
NSRenderableEntity::SetEffects(float newEffects)
{
if (newEffects == effects)
return;
effects = newEffects;
}
void
NSRenderableEntity::SetFrame(float newFrame)
{
@ -742,22 +741,19 @@ NSRenderableEntity::SetFrame(float newFrame)
frame = newFrame;
frame1time = 0.0f;
}
void
NSRenderableEntity::SetSkin(float newSkin)
{
if (newSkin == skin)
return;
skin = newSkin;
}
void
NSRenderableEntity::SetBody(int newBody)
{
if (newBody == m_iBody)
return;
m_iBody = newBody;
}
void
NSRenderableEntity::SetScale(float newScale)
{
@ -771,33 +767,24 @@ NSRenderableEntity::SetScale(float newScale)
void
NSRenderableEntity::SetRenderFX(float newFX)
{
if (newFX == m_iRenderFX)
return;
m_iRenderFX = newFX;
}
void
NSRenderableEntity::SetRenderMode(float newMode)
{
if (newMode == m_iRenderMode)
return;
m_iRenderMode = newMode;
}
void
NSRenderableEntity::SetRenderAmt(float newAmt)
{
if (newAmt == m_flRenderAmt)
return;
m_flRenderAmt = newAmt;
}
void
NSRenderableEntity::SetRenderColor(vector newColor)
{
if (newColor == m_vecRenderColor)
return;
m_vecRenderColor = newColor;
}
@ -836,41 +823,49 @@ NSRenderableEntity::GetRenderMode(void)
{
return m_iRenderMode;
}
float
NSRenderableEntity::GetRenderFX(void)
{
return m_iRenderFX;
}
float
NSRenderableEntity::GetRenderAmt(void)
{
return m_flRenderAmt;
}
vector
NSRenderableEntity::GetRenderColor(void)
{
return m_vecRenderColor;
}
float
NSRenderableEntity::GetBoneControl1(void)
{
return m_flBoneControl1;
}
float
NSRenderableEntity::GetBoneControl2(void)
{
return m_flBoneControl2;
}
float
NSRenderableEntity::GetBoneControl3(void)
{
return m_flBoneControl3;
}
float
NSRenderableEntity::GetBoneControl4(void)
{
return m_flBoneControl4;
}
float
NSRenderableEntity::GetBoneControl5(void)
{
@ -892,6 +887,7 @@ NSRenderableEntity::Save(float handle)
SaveFloat(handle, "rendermode", m_iRenderMode);
SaveFloat(handle, "renderfx", m_iRenderFX);
}
void
NSRenderableEntity::Restore(string strKey, string strValue)
{