Some small optimizations.

This commit is contained in:
Mari the Deer 2022-07-05 19:37:48 +02:00
commit 20a8f3304b
4 changed files with 60 additions and 26 deletions

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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