diff --git a/language.version b/language.version index 8dab43984..a054fce78 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r518 \cu(Mon 31 May 16:23:12 CEST 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r518 \cu(2021-05-31 16:23:12)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r519 \cu(Tue 1 Jun 16:51:13 CEST 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r519 \cu(2021-06-01 16:51:13)\c-"; diff --git a/zscript/weapons/swwm_baseweapon_precisechair.zsc b/zscript/weapons/swwm_baseweapon_precisechair.zsc index d64fe5865..d60fa90c7 100644 --- a/zscript/weapons/swwm_baseweapon_precisechair.zsc +++ b/zscript/weapons/swwm_baseweapon_precisechair.zsc @@ -28,7 +28,7 @@ extend Class SWWMWeapon ui Vector3 cpos; ui Color ccol; ui Vector2 lagvpos; - transient ui uint prevms; + transient ui double prevframe; override void DoEffect() { @@ -48,7 +48,7 @@ extend Class SWWMWeapon { SWWMWeapon(Owner.player.PendingWeapon).cpos = cpos; SWWMWeapon(Owner.player.PendingWeapon).lagvpos = lagvpos; - SWWMWeapon(Owner.player.PendingWeapon).prevms = prevms; + SWWMWeapon(Owner.player.PendingWeapon).prevframe = prevframe; } } // extra drawing, usually scopes @@ -67,11 +67,11 @@ extend Class SWWMWeapon Vector3 ndc = SWWMUtility.ProjectPoint(sb.projdata,e.ViewPos+tdir); if ( ndc.z >= 1. ) return; Vector2 vpos = SWWMUtility.NDCToViewport(sb.projdata,ndc); - double frametime = (MSTime()-prevms)/1000.; - double theta = clamp(15.*frametime,0.,1.); // naive, but whatever - if ( !prevms || (lagvpos == (0,0)) ) lagvpos = vpos; + double frametime = ((gametic+e.fractic)-prevframe)/GameTicRate; + double theta = clamp(30.*frametime,0.,1.); // naive, but whatever + if ( !prevframe || (lagvpos == (0,0)) ) lagvpos = vpos; else lagvpos = lagvpos*(1.-theta)+vpos*theta; - prevms = MSTime(); + prevframe = gametic+e.fractic; int cnum = abs(CVar.FindCVar('crosshair').GetInt()); if ( !cnum ) return; String tn = String.Format("XHAIR%s%d",(Screen.GetWidth()<640)?"S":"B",cnum); diff --git a/zscript/weapons/swwm_cbt.zsc b/zscript/weapons/swwm_cbt.zsc index 7eb66c387..f56ffbc2a 100644 --- a/zscript/weapons/swwm_cbt.zsc +++ b/zscript/weapons/swwm_cbt.zsc @@ -161,9 +161,9 @@ Class Wallbuster : SWWMWeapon Vector3 ndc = SWWMUtility.ProjectPoint(sb.projdata,e.ViewPos+tdir); if ( ndc.z >= 1. ) return; Vector2 vpos = SWWMUtility.NDCToViewport(sb.projdata,ndc); - double frametime = (MSTime()-prevms)/1000.; - double theta = clamp(15.*frametime,0.,1.); // naive, but whatever - if ( !prevms || (lagvpos == (0,0)) ) lagvpos = vpos; + double frametime = ((gametic+e.fractic)-prevframe)/GameTicRate; + double theta = clamp(30.*frametime,0.,1.); // naive, but whatever + if ( !prevframe || (lagvpos == (0,0)) ) lagvpos = vpos; else lagvpos = lagvpos*(1.-theta)+vpos*theta; for ( int i=0; i<25; i++ ) { @@ -173,11 +173,11 @@ Class Wallbuster : SWWMWeapon ndc = SWWMUtility.ProjectPoint(sb.projdata,e.ViewPos+tdir); if ( ndc.z >= 1. ) return; vpos = SWWMUtility.NDCToViewport(sb.projdata,ndc); - if ( !prevms || (lagvpos25[i] == (0,0)) ) lagvpos25[i] = vpos; + if ( !prevframe || (lagvpos25[i] == (0,0)) ) lagvpos25[i] = vpos; else lagvpos25[i] = lagvpos25[i]*(1.-theta)+vpos*theta; 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]); } - prevms = MSTime(); + prevframe = gametic+e.fractic; } ui Vector3, Color TraceForCrosshair25( int i ) diff --git a/zscript/weapons/swwm_splode.zsc b/zscript/weapons/swwm_splode.zsc index 6e8610341..9b54db3f1 100644 --- a/zscript/weapons/swwm_splode.zsc +++ b/zscript/weapons/swwm_splode.zsc @@ -517,7 +517,7 @@ Class DualExplodiumGun : SWWMWeapon { SWWMWeapon(Owner.player.PendingWeapon).cpos = sw.cpos; SWWMWeapon(Owner.player.PendingWeapon).lagvpos = sw.lagvpos; - SWWMWeapon(Owner.player.PendingWeapon).prevms = sw.prevms; + SWWMWeapon(Owner.player.PendingWeapon).prevframe = sw.prevframe; } [sw.cpos, sw.ccol] = sw.TraceForCrosshair(); }