From 20a8f3304bc4f677da59fca58d75306e3c80fc65 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Tue, 5 Jul 2022 19:37:48 +0200 Subject: [PATCH] Some small optimizations. --- language.version | 4 +- zscript/handler/swwm_handler_debugrender.zsc | 3 +- zscript/swwm_player.zsc | 9 +-- zscript/swwm_player_fx.zsc | 70 +++++++++++++++----- 4 files changed, 60 insertions(+), 26 deletions(-) diff --git a/language.version b/language.version index 31e4a8c77..39ee16cb2 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r154 \cu(Tue 5 Jul 19:27:32 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r154 \cu(2022-07-05 19:27:32)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r155 \cu(Tue 5 Jul 19:37:48 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r155 \cu(2022-07-05 19:37:48)\c-"; diff --git a/zscript/handler/swwm_handler_debugrender.zsc b/zscript/handler/swwm_handler_debugrender.zsc index d42cf3936..3b9327004 100644 --- a/zscript/handler/swwm_handler_debugrender.zsc +++ b/zscript/handler/swwm_handler_debugrender.zsc @@ -112,8 +112,7 @@ extend Class SWWMHandler if ( a.bINVISIBLE && !(a is 'DynamicLight') ) continue; if ( (a is 'Inventory') && Inventory(a).Owner ) continue; if ( (a is 'SWWMPickupFlash') && (a.CurState == a.FindState('Pickup')) ) continue; - if ( (a is 'SWWMShadow') || (a is 'GhostArtifactX') || (a is 'DemolitionistSelfLight') || (a is 'HeadpatTracker') || (a is 'SWWMExtendedItemHitbox') - || (a is 'SWWMTeleportLine') || (a is 'SWWMTeleportDest') ) continue; + if ( (a is 'SWWMShadow') || (a is 'GhostArtifactX') || (a is 'HeadpatTracker') || (a is 'SWWMExtendedItemHitbox') || (a is 'SWWMTeleportLine') || (a is 'SWWMTeleportDest') ) continue; if ( a.Distance3DSquared(e.Camera) > 1000000 ) continue; DrawActor(e,a); } diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index e49405cd2..30284602c 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -56,7 +56,7 @@ Class Demolitionist : PlayerPawn transient double lastbump; transient CVar bumpstr; - Actor selflight; + DemolitionistSelfLight selflight; Actor oldencroached; Vector3 oldencroachedpos; int encroachtics; @@ -952,7 +952,8 @@ Class Demolitionist : PlayerPawn } if ( !selflight ) { - selflight = Spawn("DemolitionistSelfLight",pos); + selflight = new("DemolitionistSelfLight"); + selflight.ChangeStatNum(STAT_USER); selflight.target = self; selflight.Tick(); } @@ -1254,7 +1255,7 @@ Class Demolitionist : PlayerPawn for ( int i=-1; i<=1; i+=2 ) for ( int j=1; j<4; j++ ) { a = Spawn("DashTrail",Vec3Angle(15,angle+i*140,35)); - a.target = self; + a.master = self; a.vel = (RotateVector((j,0),angle+i*160),0)-(0,0,1)*j; a.vel -= vel*.5; } @@ -1577,7 +1578,7 @@ Class Demolitionist : PlayerPawn for ( int i=-1; i<=1; i+=2 ) for ( int j=1; j<4; j++ ) { a = Spawn("DashTrail",Vec3Angle(10,angle+i*140,40)); - a.target = self; + a.master = self; a.vel = .5*(RotateVector((j,0),angle+i*160),0)-(0,0,1)*j; a.vel -= vel*.5; } diff --git a/zscript/swwm_player_fx.zsc b/zscript/swwm_player_fx.zsc index 65dcb0c02..a1a0dfbb4 100644 --- a/zscript/swwm_player_fx.zsc +++ b/zscript/swwm_player_fx.zsc @@ -200,14 +200,16 @@ Class DashTrail : Actor +DONTSPLASH; +NOTELEPORT; +NOINTERACTION; + +MASTERNOSEE; FloatBobPhase 0; } override void PostBeginPlay() { Super.PostBeginPlay(); SetState(FindState("Spawn")+Random[ExploS](0,7)); + if ( waterlevel > 0 ) return; let t = Spawn("DashTrail2",level.Vec3Offset(pos,vel*.3)); - t.target = target; + t.master = master; t.vel = vel*1.2; let s = Spawn("SWWMSmoke",level.Vec3Offset(pos,vel*1.6)); s.vel = vel*.8; @@ -218,9 +220,17 @@ Class DashTrail : Actor } override void Tick() { - Super.Tick(); - // hack - if ( target && (players[consoleplayer].Camera == target) ) Warp(target,pos.x,pos.y,pos.z,0,WARPF_ABSOLUTEPOSITION|WARPF_COPYINTERPOLATION); + if ( isFrozen() ) return; + prev = pos; + SetOrigin(level.Vec3Offset(pos,vel),true); + UpdateWaterLevel(); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } } States { @@ -248,6 +258,7 @@ Class DashTrail2 : Actor +DONTSPLASH; +NOTELEPORT; +NOINTERACTION; + +MASTERNOSEE; FloatBobPhase 0; } override void PostBeginPlay() @@ -257,9 +268,17 @@ Class DashTrail2 : Actor } override void Tick() { - Super.Tick(); - // hack - if ( target && (players[consoleplayer].Camera == target) ) Warp(target,pos.x,pos.y,pos.z,0,WARPF_ABSOLUTEPOSITION|WARPF_COPYINTERPOLATION); + if ( isFrozen() ) return; + prev = pos; + SetOrigin(level.Vec3Offset(pos,vel),true); + UpdateWaterLevel(); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } } States { @@ -293,6 +312,19 @@ Class DemolitionistRadiusShockwaveTail : Actor +NOTELEPORT; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + prev = pos; + SetOrigin(level.Vec3Offset(pos,vel),true); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -454,6 +486,17 @@ Class DemolitionistShockwave : Actor } } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -463,22 +506,13 @@ Class DemolitionistShockwave : Actor } // not an actual light, just handles the attach/detach -Class DemolitionistSelfLight : Actor +Class DemolitionistSelfLight : Thinker { bool oldactive; bool oldglow; transient Color tagcolor; + Actor target; - Default - { - Radius .1; - Height 0.; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOINTERACTION; - FloatBobPhase 0; - } bool activelight() { // active all the time except when invisible or in certain