1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFWeapAttach_M99.uc
2020-12-13 18:01:13 +03:00

50 lines
1.6 KiB
Ucode

//=============================================================================
// KFWeapAttach_M99
//=============================================================================
//
//=============================================================================
// Killing Floor 2
// Copyright (C) 2018 Tripwire Interactive LLC
//=============================================================================
class KFWeapAttach_M99 extends KFWeaponAttachment;
/** Spawn tracer effects for this weapon */
simulated function SpawnTracer(vector EffectLocation, vector HitLocation)
{
local ParticleSystemComponent PSC;
local vector Dir;
local float DistSQ;
local float TracerDuration;
local KFTracerInfo TracerInfo;
if (Instigator == None || Instigator.FiringMode >= TracerInfos.Length)
{
return;
}
TracerInfo = TracerInfos[Instigator.FiringMode];
if (((`NotInZedTime(self) && TracerInfo.bDoTracerDuringNormalTime)
|| (`IsInZedTime(self) && TracerInfo.bDoTracerDuringZedTime))
&& TracerInfo.TracerTemplate != none )
{
Dir = HitLocation - EffectLocation;
DistSQ = VSizeSq(Dir);
if (DistSQ > TracerInfo.MinTracerEffectDistanceSquared)
{
// Lifetime scales based on the distance from the impact point. Subtract a frame so it doesn't clip.
TracerDuration = fMin((Sqrt(DistSQ) - 100.f) / TracerInfo.TracerVelocity, 1.f);
if (TracerDuration > 0.f)
{
PSC = WorldInfo.MyEmitterPool.SpawnEmitter(TracerInfo.TracerTemplate, EffectLocation, rotator(Dir));
PSC.SetFloatParameter('Tracer_Lifetime', TracerDuration);
PSC.SetVectorParameter('Shotend', HitLocation);
}
}
}
}
defaultproperties
{
}