140 lines
4.3 KiB
Ucode
140 lines
4.3 KiB
Ucode
|
/**
|
||
|
* 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)
|
||
|
}
|