Crosshair rendering tweaks.
This commit is contained in:
parent
a9add84ecd
commit
820f10c9f8
2 changed files with 11 additions and 5 deletions
|
|
@ -121,13 +121,19 @@ extend Class SWWMHandler
|
|||
double cs = crosshairscale;
|
||||
double sz = 1.;
|
||||
if ( cs > 0. ) sz = Screen.GetHeight()*cs/200.;
|
||||
if ( crosshairgrow ) sz *= StatusBar.CrosshairSize;
|
||||
bool bGrowMe = crosshairgrow;
|
||||
if ( bGrowMe ) sz *= StatusBar.CrosshairSize*StatusBar.CrosshairSize;
|
||||
sz = max(1.,round(sz)); // ensure integer scaling of crosshair texture
|
||||
Vector2 oddfix = (0,0); // offset for odd-sized textures when scaling by an even number
|
||||
if ( int(ts.x)%2 ) oddfix.x = -floor(sz/2.)+1.;
|
||||
if ( int(ts.y)%2 ) oddfix.y = -floor(sz/2.)+1.;
|
||||
SWWMUtility.PrepareProjData(tprojdata,e.ViewPos,e.ViewAngle,e.ViewPitch,e.ViewRoll,players[consoleplayer].fov);
|
||||
Vector2 actpos[MAX_CROSSHAIRS];
|
||||
for ( int i=0; i<MAX_CROSSHAIRS; i++ )
|
||||
{
|
||||
Vector3 cpos = tpos[i];
|
||||
Color ccol = tcol[i];
|
||||
if ( bGrowMe ) ccol = SWWMUtility.LerpColor(ccol,0xFFFFFFFF,clamp(StatusBar.CrosshairSize-1.,0.,1.));
|
||||
Vector3 tdir = (e.ViewPos-cpos);
|
||||
// project (but account for rare corner case where distance is zero)
|
||||
Vector3 ndc = (tdir.length()<=double.epsilon)?(0,0,0):SWWMUtility.ProjectPoint(tprojdata,cpos);
|
||||
|
|
@ -153,8 +159,8 @@ extend Class SWWMHandler
|
|||
tactive[i] = false;
|
||||
alph = clamp(dist/max(2,streak+2),0.,1.); // this should make the merge less jarring
|
||||
}
|
||||
for ( int i=0; i<streak; i++ ) Screen.DrawTexture(ctex,false,int(SWWMUtility.lerp(oldvpos.x,lagvpos.x,i/double(streak))),int(SWWMUtility.lerp(oldvpos.y,lagvpos.y,i/double(streak))),DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol,DTA_Alpha,((i*.5)/streak)*alph);
|
||||
Screen.DrawTexture(ctex,false,int(lagvpos.x),int(lagvpos.y),DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol,DTA_Alpha,alph);
|
||||
for ( int i=0; i<streak; i++ ) Screen.DrawTexture(ctex,false,int(SWWMUtility.lerp(oldvpos.x,lagvpos.x,i/double(streak)))+oddfix.x,int(SWWMUtility.lerp(oldvpos.y,lagvpos.y,i/double(streak)))+oddfix.y,DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol,DTA_Alpha,((i*.5)/streak)*alph);
|
||||
Screen.DrawTexture(ctex,false,int(lagvpos.x)+oddfix.x,int(lagvpos.y)+oddfix.y,DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol,DTA_Alpha,alph);
|
||||
}
|
||||
prevframe = curframe;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue