diff --git a/language.version b/language.version index daca5738d..ccd16199e 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r782 \cu(Fri 22 Jan 19:59:30 CET 2021)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r783 \cu(Fri 22 Jan 20:18:02 CET 2021)"; diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index 4f13a3e7c..310034928 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -2943,14 +2943,15 @@ Class DemolitionistSelfLight : Actor else tagcolor = Color(255,32,48,24); } bool curactive = activelight(); - if ( curactive && !oldactive ) - target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,Color(56,72,88),200,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE|DynamicLight.LF_SPOT,(5,0,target.player?(target.player.viewz-target.pos.z):(target.height*.93)),0,30,90,target.pitch); + // have to re-attach it repeatedly to update the pitch (wow great thanks) + if ( curactive ) + target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,Color(112,144,176),200,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE|DynamicLight.LF_SPOT,(5,0,target.player?(target.player.viewz-target.pos.z):(target.height*.93)),0,15,60,target.pitch); else if ( !curactive && oldactive ) - target.A_RemoveLight('DemoSelfLight'); + target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,0,0,0); oldactive = curactive; bool curglow = !(target.bINVISIBLE||(target.alpha <= double.epsilon)); if ( curglow && !oldglow ) target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,tagcolor,80,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE,(0,0,target.height/2)); - else if ( !curglow && oldglow ) target.A_RemoveLight('DemoSelfLight2'); + else if ( !curglow && oldglow ) target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,0,0,0); oldglow = curglow; } } @@ -3064,24 +3065,6 @@ Class LoveHeartBurstLight : PaletteLight } } -Class LoveHeartLight : PointLightAttenuated -{ - Default - { - Args 255,176,208,80; - } - override void Tick() - { - Super.Tick(); - if ( target || target.InStateSequence(target.CurState,target.FindState("Death")) ) - { - Destroy(); - return; - } - SetOrigin(target.pos,true); - } -} - Class LoveHeart : Actor { Default @@ -3210,10 +3193,7 @@ Class LoveHeart : Actor { Super.PostBeginPlay(); A_StartSound("misc/heart",CHAN_WEAPON); - //A_AttachLight('LOVELIGHT',DynamicLight.PointLight,Color(255,176,208),80,80,DYNAMICLIGHT.LF_ATTENUATE); - // can't use Attach/RemoveLight for now due to heavy performance issues - let l = Spawn("LoveHeartLight",pos); - l.target = self; + A_AttachLight('LOVELIGHT',DynamicLight.PointLight,Color(255,176,208),80,80,DYNAMICLIGHT.LF_ATTENUATE); special2 = 25; } action void A_HeartBurst() @@ -3235,6 +3215,8 @@ Class LoveHeart : Actor raging.DoHitFX(); } A_SetRenderStyle(1.,STYLE_Add); + // RemoveLight causes heavy performance issues, just overwrite with a "blank light" + A_AttachLight('LOVELIGHT',DynamicLight.PointLight,0,0,0); //A_RemoveLight('LOVELIGHT'); CheckSplash(40); A_QuakeEx(2,2,2,8,0,300,"",QF_RELATIVE|QF_SCALEDOWN);