Core.Object | +--Engine.Actor | +--Engine.Effects | +--UnrealShare.Sparks
int
AngularDeviation
float
MaxBetweenTime
MaxBrightness
MaxBurnTime
MaxSpawnSpeed
MaxSpawnedAtOnce
MinBetweenTime
MinBrightness
MinBurnTime
MinSpawnSpeed
MinSpawnedAtOnce
NextSparkTime
NumSpawnedNow
rotator
SpawnCenterDir
i
void
MoreSparks()
00001 //============================================================================= 00002 // Sparks. 00003 //============================================================================= 00004 class Sparks extends Effects; 00005 00006 // Spawns off a number of SparkBit elements, which all die out 00007 // within a random amount of time. MZM 00008 // Reasonable defaults 00009 var() float MinBetweenTime; // 0.4 00010 var() float MaxBetweenTime; // 1.0 00011 var() int MinSpawnedAtOnce; // 1 00012 var() int MaxSpawnedAtOnce; // 3 00013 var() float MinSpawnSpeed; // 200 00014 var() float MaxSpawnSpeed; // 300 00015 var() float MinBurnTime; // 0.4 00016 var() float MaxBurnTime; // 1.0 00017 var() float MinBrightness; // 0.7 (values can only go from 0.0 -> 1.0) 00018 var() float MaxBrightness; // 1.0 " " 00019 var() rotator SpawnCenterDir; 00020 var() int AngularDeviation; // approx. 0x2000 -> 8192 00021 00022 var float NextSparkTime; 00023 var int NumSpawnedNow; 00024 var int i; 00025 00026 auto state StartState { 00027 00028 function MoreSparks () { 00029 00030 local SparkBit TempSparkBit; 00031 local rotator SpawnDir; 00032 00033 // Time to generate another SparkBit. 00034 TempSparkBit = Spawn (class 'SparkBit', , '', Location); 00035 00036 SpawnDir = SpawnCenterDir; 00037 SpawnDir.Pitch += -AngularDeviation + Rand(AngularDeviation*2); 00038 SpawnDir.Yaw += -AngularDeviation + Rand(AngularDeviation*2); 00039 TempSparkBit.Velocity = Vector(SpawnDir)*(MinSpawnSpeed + 00040 FRand()*(MaxSpawnSpeed-MinSpawnSpeed)); 00041 00042 //TempSparkBit.Velocity = Normal(VRand())*(MinSpawnSpeed + 00043 // FRand()*(MaxSpawnSpeed-MinSpawnSpeed)); 00044 TempSparkBit.BurnTime = MinBurnTime + FRand()*(MaxBurnTime-MinBurnTime); 00045 00046 // 0=dark 1=bright 00047 TempSparkBit.InitialBrightness = MinBrightness + 00048 FRand()*(MaxBrightness-MinBrightness); 00049 } 00050 00051 Begin: 00052 00053 if (minBetweenTime >= maxBetweenTime) maxBetweenTime=minBetweenTime + 0.1; 00054 00055 Loop: 00056 00057 //Log ("Making more sparks"); 00058 NumSpawnedNow = Rand(MaxSpawnedAtOnce-MinSpawnedAtOnce+1)+MinSpawnedAtOnce; 00059 for (i=0; i<NumSpawnedNow; i++) 00060 MoreSparks(); 00061 00062 NextSparkTime = FRand()*(MaxBetweenTime-MinBetweenTime)+ MinBetweenTime; 00063 //Log ("Next spark(s) in " $ NextSparkTime); 00064 Sleep (NextSparkTime); 00065 goto 'Loop'; 00066 } 00067 00068 defaultproperties 00069 { 00070 MinBetweenTime=0.400000 00071 MaxBetweenTime=1.000000 00072 MinSpawnedAtOnce=1 00073 MaxSpawnedAtOnce=3 00074 MinSpawnSpeed=200.000000 00075 MaxSpawnSpeed=300.000000 00076 MinBurnTime=0.400000 00077 MaxBurnTime=1.000000 00078 MinBrightness=0.700000 00079 MaxBrightness=1.000000 00080 bHidden=True 00081 bNetTemporary=False 00082 LifeSpan=1000.000000 00083 DrawType=DT_Mesh 00084 Mesh=LodMesh'UnrealShare.bolt1' 00085 LightBrightness=78 00086 LightHue=96 00087 LightSaturation=224 00088 LightRadius=4 00089 }