A whole fat load of micro-optimizations.

Okuplok still lags like fuck, unfortunately.
This commit is contained in:
Mari the Deer 2022-06-17 22:36:51 +02:00
commit b6f631f6e9
15 changed files with 369 additions and 280 deletions

View file

@ -3009,6 +3009,7 @@ Class MykradvoX : GhostArtifactX
{
Super.PostBeginPlay();
A_StartSound("powerup/mykradvoamb",CHAN_VOICE,CHANF_LOOP,attenuation:2.);
WorldOffset = (0,0,16);
}
override void Tick()
{
@ -3024,9 +3025,13 @@ Class MykradvoX : GhostArtifactX
FloatBobPhase = target.FloatBobPhase;
A_SetScale(.16+.01*sin(GetAge()*4));
if ( !bsprite ) bsprite = GetSpriteIndex('XZW0');
bool bOldInvis = bInvisible;
bInvisible = target.bInvisible||(target.sprite!=bsprite);
SetState(SpawnState+bInvisible);
A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.);
if ( bInvisible != bOldInvis )
{
SetState(SpawnState+bInvisible);
A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.);
}
}
States
{
@ -3043,6 +3048,11 @@ Class MykradvoX2 : GhostArtifactX
{
+ROLLSPRITE;
}
override void PostBeginPlay()
{
Super.PostBeginPlay();
WorldOffset = (0,0,16+special2);
}
override void Tick()
{
if ( !target )
@ -3050,17 +3060,19 @@ Class MykradvoX2 : GhostArtifactX
Destroy();
return;
}
prev = target.prev+(0,0,16+special2);
prev = target.prev;
vel = target.vel;
if ( (target.pos != pos+(0,0,16+special2)) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+(0,0,16+special2)+vel,true);
if ( (target.pos != pos) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+vel,true);
if ( angle != target.angle ) A_SetAngle(target.angle,SPF_INTERPOLATE);
A_SetPitch(sin(GetAge()*special1*8)*5,SPF_INTERPOLATE);
A_SetRoll(cos(GetAge()*special1*8)*5,SPF_INTERPOLATE);
FloatBobPhase = target.FloatBobPhase;
A_SetScale(1.+.05*cos(GetAge()*4)*special1);
if ( !bsprite ) bsprite = GetSpriteIndex('XZW0');
bool bOldInvis = bInvisible;
bInvisible = target.bInvisible||(target.sprite!=bsprite);
SetState(SpawnState+bInvisible);
if ( bInvisible != bOldInvis )
SetState(SpawnState+bInvisible);
}
States
{
@ -3429,6 +3441,7 @@ Class AngerySigilX : GhostArtifactX
{
Super.PostBeginPlay();
A_StartSound("powerup/devastationamb",CHAN_VOICE,CHANF_LOOP,attenuation:2.);
WorldOffset = (0,0,20);
}
override void Tick()
{
@ -3437,15 +3450,19 @@ Class AngerySigilX : GhostArtifactX
Destroy();
return;
}
prev = target.prev+(0,0,20);
prev = target.prev;
vel = target.vel;
if ( (target.pos != pos+(0,0,20)) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+(0,0,20)+vel,true);
if ( (target.pos != pos) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+vel,true);
if ( angle != target.angle ) A_SetAngle(target.angle,SPF_INTERPOLATE);
FloatBobPhase = target.FloatBobPhase;
if ( !bsprite ) bsprite = GetSpriteIndex('XZW1');
bool bOldInvis = bInvisible;
bInvisible = target.bInvisible||(target.sprite!=bsprite);
SetState(SpawnState+bInvisible);
A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.);
if ( bInvisible != bOldInvis )
{
SetState(SpawnState+bInvisible);
A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.);
}
}
States
{
@ -3701,6 +3718,7 @@ Class DivineSpriteX : GhostArtifactX
{
Super.PostBeginPlay();
A_StartSound("powerup/divineamb",CHAN_VOICE,CHANF_LOOP,attenuation:2.);
WorldOffset = (0,0,16);
}
override void Tick()
{
@ -3709,15 +3727,19 @@ Class DivineSpriteX : GhostArtifactX
Destroy();
return;
}
prev = target.prev+(0,0,16);
prev = target.prev;
vel = target.vel;
if ( (target.pos != pos+(0,0,16)) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+(0,0,16)+vel,true);
if ( (target.pos != pos) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+vel,true);
if ( angle != target.angle ) A_SetAngle(target.angle,SPF_INTERPOLATE);
FloatBobPhase = target.FloatBobPhase;
if ( !bsprite ) bsprite = GetSpriteIndex('XZW1');
bool bOldInvis = bInvisible;
bInvisible = target.bInvisible||(target.sprite!=bsprite);
SetState(SpawnState+bInvisible);
A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.);
if ( bOldInvis != bInvisible )
{
SetState(SpawnState+bInvisible);
A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.);
}
}
States
{