1
0
KF2-Dev-Scripts/Engine/Classes/ParticleModuleBeamNoise.uc

140 lines
4.3 KiB
Ucode
Raw Permalink Normal View History

2020-12-13 15:01:13 +00:00
/**
* ParticleModuleBeamNoise
*
* This module implements noise for a beam emitter.
*
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class ParticleModuleBeamNoise extends ParticleModuleBeamBase
native(Particle)
editinlinenew
hidecategories(Object);
/** Is low frequency noise enabled. */
var(LowFreq) bool bLowFreq_Enabled;
/** The frequency of noise points. */
var(LowFreq) int Frequency;
/**
* If not 0, then the frequency will select a random value in the range
* [Frequency_LowRange..Frequency]
*/
var(LowFreq) int Frequency_LowRange;
/** The noise point ranges. */
var(LowFreq) rawdistributionvector NoiseRange;
/** A scale factor that will be applied to the noise range. */
var(LowFreq) rawdistributionfloat NoiseRangeScale;
/**
* If TRUE, the NoiseRangeScale will be grabbed based on the emitter time.
* If FALSE, the NoiseRangeScale will be grabbed based on the particle time.
*/
var(LowFreq) bool bNRScaleEmitterTime;
/** The speed with which to move each noise point. */
var(LowFreq) rawdistributionvector NoiseSpeed;
/** Whether the noise movement should be smooth or 'jerky'. */
var(LowFreq) bool bSmooth;
/** Default target-point information to use if the beam method is endpoint. */
var(LowFreq) float NoiseLockRadius;
/** INTERNAL - Whether the noise points should be locked. */
var const bool bNoiseLock;
/** Whether the noise points should be oscillate. */
var(LowFreq) bool bOscillate;
/** How long the noise points should be locked - 0.0 indicates forever. */
var(LowFreq) float NoiseLockTime;
/** The tension to apply to the tessellated noise line. */
var(LowFreq) float NoiseTension;
/** If TRUE, calculate tangents at each noise point. */
var(LowFreq) bool bUseNoiseTangents;
/** The strength of noise tangents, if enabled. */
var(LowFreq) rawdistributionfloat NoiseTangentStrength;
/** The amount of tessellation between noise points. */
var(LowFreq) int NoiseTessellation;
/**
* Whether to apply noise to the target point (or end of line in distance mode...)
* If TRUE, the beam could potentially 'leave' the target...
*/
var(LowFreq) bool bTargetNoise;
/**
* The distance at which to deposit noise points.
* If 0.0, then use the static frequency value.
* If not, distribute noise points at the given distance, up to the static Frequency value.
* At that point, evenly distribute them along the beam.
*/
var(LowFreq) float FrequencyDistance;
/** If TRUE, apply the noise scale to the beam. */
var(LowFreq) bool bApplyNoiseScale;
/**
* The scale factor to apply to noise range.
* The lookup value is determined by dividing the number of noise points present by the
* maximum number of noise points (Frequency).
*/
var(LowFreq) rawdistributionfloat NoiseScale;
cpptext
{
virtual void Spawn(FParticleEmitterInstance* Owner, INT Offset, FLOAT SpawnTime);
virtual void Update(FParticleEmitterInstance* Owner, INT Offset, FLOAT DeltaTime);
virtual void SetToSensibleDefaults(UParticleEmitter* Owner);
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent);
void GetNoiseRange(FVector& NoiseMin, FVector& NoiseMax);
}
defaultproperties
{
Frequency=0
Begin Object Class=DistributionVectorConstant Name=DistributionNoiseRange
Constant=(X=50,Y=50,Z=50)
End Object
NoiseRange=(Distribution=DistributionNoiseRange)
Begin Object Class=DistributionFloatConstant Name=DistributionNoiseRangeScale
Constant=1.0
End Object
NoiseRangeScale=(Distribution=DistributionNoiseRangeScale)
NoiseLockRadius=1.0
Begin Object Class=DistributionVectorConstant Name=DistributionNoiseSpeed
Constant=(X=50,Y=50,Z=50)
End Object
NoiseSpeed=(Distribution=DistributionNoiseSpeed)
bSmooth=false
bNoiseLock=false
bOscillate=false
NoiseLockTime=0.0
NoiseTension=0.5
Begin Object Class=DistributionFloatConstant Name=DistributionNoiseTangentStrength
Constant=250.0
End Object
NoiseTangentStrength=(Distribution=DistributionNoiseTangentStrength)
NoiseTessellation=1
bTargetNoise=false
Begin Object Class=DistributionFloatConstantCurve Name=DistributionNoiseScale
End Object
NoiseScale=(Distribution=DistributionNoiseScale)
}