Stop reinventing lerp() all over the place.
This commit is contained in:
parent
f2af4dd14d
commit
65597c181a
10 changed files with 38 additions and 31 deletions
|
|
@ -151,7 +151,7 @@ Class ParryField : Actor
|
|||
{
|
||||
hdir = level.Vec3Diff(a.pos,a.target.Vec3Offset(0,0,a.target.height/2)).unit();
|
||||
double theta = max(FRandom[Parry](0.,1.)**2.,.1);
|
||||
dir = dir*(1.-theta)+hdir*theta;
|
||||
dir = SWWMUtility.LerpVector3(dir,hdir,theta);
|
||||
}
|
||||
// push away
|
||||
if ( a.bSEEKERMISSILE ) a.tracer = a.target;
|
||||
|
|
@ -434,7 +434,7 @@ extend Class SWWMWeapon
|
|||
// things can instantly cease to exist after taking damage (wow)
|
||||
if ( mt.hits[i].a )
|
||||
{
|
||||
if ( mt.hits[i].a.player ) mt.hits[i].a.A_QuakeEx(quakin,quakin,quakin,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.125*quakin);
|
||||
if ( mt.hits[i].a.player ) mt.hits[i].a.A_QuakeEx(quakin,quakin,quakin,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.125*quakin);
|
||||
if ( !mt.hits[i].a.bNOBLOOD && !mt.hits[i].a.bDORMANT && (raging || !mt.hits[i].a.bINVULNERABLE) )
|
||||
{
|
||||
mt.hits[i].a.TraceBleed(newdmg,invoker);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ extend Class SWWMWeapon
|
|||
double theta = clamp(15.*frametime,0.,1.); // naive, but whatever
|
||||
Vector2 oldvpos = lagvpos;
|
||||
if ( !prevframe || (lagvpos == (0,0)) ) oldvpos = lagvpos = vpos;
|
||||
else lagvpos = lagvpos*(1.-theta)+vpos*theta;
|
||||
else lagvpos = SWWMUtility.LerpVector2(lagvpos,vpos,theta);
|
||||
prevframe = MSTimeF();
|
||||
int cnum = abs(CVar.FindCVar('crosshair').GetInt());
|
||||
if ( !cnum ) return;
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ Class Hellblazer : SWWMWeapon
|
|||
for ( int i=0; i<3; i++ )
|
||||
{
|
||||
if ( !seektarget[i] ) continue;
|
||||
Vector3 tpos = seektarget[i].prev*(1.-e.FracTic)+seektarget[i].pos*e.FracTic;
|
||||
Vector3 tpos = SWWMUtility.LerpVector3(seektarget[i].prev,seektarget[i].pos,e.FracTic);
|
||||
Vector3 ndc = SWWMUtility.ProjectPoint(projdata,e.viewpos+level.Vec3Diff(e.viewpos,tpos+(0,0,seektarget[i].Height/2)));
|
||||
if ( ndc.z > 1. ) continue;
|
||||
Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc);
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ Class Wallbuster : SWWMWeapon
|
|||
double frametime = (MSTimeF()-prevframe)/1000.;
|
||||
double theta = clamp(15.*frametime,0.,1.); // naive, but whatever
|
||||
if ( !prevframe || (lagvpos == (0,0)) ) lagvpos = vpos;
|
||||
else lagvpos = lagvpos*(1.-theta)+vpos*theta;
|
||||
else lagvpos = SWWMUtility.LerpVector2(lagvpos,vpos,theta);
|
||||
Vector2 oldvpos;
|
||||
for ( int i=0; i<25; i++ )
|
||||
{
|
||||
|
|
@ -173,7 +173,7 @@ Class Wallbuster : SWWMWeapon
|
|||
vpos = SWWMUtility.NDCToViewport(sb.projdata,ndc);
|
||||
oldvpos = lagvpos25[i];
|
||||
if ( !prevframe || (lagvpos25[i] == (0,0)) ) oldvpos = lagvpos25[i] = vpos;
|
||||
else lagvpos25[i] = lagvpos25[i]*(1.-theta)+vpos*theta;
|
||||
else lagvpos25[i] = SWWMUtility.LerpVector2(lagvpos25[i],vpos,theta);
|
||||
int streak = int(max(abs(oldvpos.x-lagvpos25[i].x),abs(oldvpos.y-lagvpos25[i].y)));
|
||||
for ( int j=0; j<streak; j++ ) Screen.DrawTexture(ctex,false,int(SWWMUtility.lerp(oldvpos.x,lagvpos25[i].x,j/double(streak))),int(SWWMUtility.lerp(oldvpos.y,lagvpos25[i].y,j/double(streak))),DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol,DTA_Alpha,(j*.5)/streak);
|
||||
Screen.DrawTexture(ctex,false,int(lagvpos25[i].x),int(lagvpos25[i].y),DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol25[i]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue