UnrealI
Class MagmaBurst

source: e:\games\UnrealTournament\UnrealI\Classes\MagmaBurst.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Keypoint
         |
         +--UnrealI.RockSlide
            |
            +--UnrealI.MagmaBurst
Direct Known Subclasses:None

class MagmaBurst
extends UnrealI.RockSlide

//============================================================================= // MagmaBurst. //=============================================================================
Variables
 int AngularDeviation
           approx. 0x2000 -> 8192
 float MaxBrightness
           1.0 " "
 float MaxBurnTime
           1.0
 float MaxSpawnSpeed
           300
 int MaxSpawnedAtOnce
           3
 float MinBrightness
           0.7 (values can only go from 0.0 -> 1.0)
 float MinBurnTime
           0.4
 float MinSpawnSpeed
           200
 int MinSpawnedAtOnce
           1
 rotator SpawnCenterDir
           1.0 " "


Function Summary
 void MakeRock()
 void MoreMagma()
 void Trigger(Actor Other, Pawn EventInstigator)



Source Code


00001	//=============================================================================
00002	// MagmaBurst.
00003	//=============================================================================
00004	class MagmaBurst extends Rockslide;
00005	    
00006	// Spawns off a number of Magma elements, which all die out
00007	// within a random amount of time.  This code modified from 
00008	// Sparks.  MZM
00009									// Reasonable defaults
00010	var() int      MinSpawnedAtOnce;	// 1
00011	var() int      MaxSpawnedAtOnce;	// 3
00012	var() float    MinSpawnSpeed;		// 200
00013	var() float    MaxSpawnSpeed;		// 300
00014	var() float    MinBurnTime;		// 0.4
00015	var() float    MaxBurnTime;		// 1.0
00016	var() float    MinBrightness;		// 0.7	(values can only go from 0.0 -> 1.0)
00017	var() float    MaxBrightness;		// 1.0    "							   "
00018	var() rotator  SpawnCenterDir;
00019	var() int      AngularDeviation;	// approx. 0x2000 -> 8192
00020	
00021	function MoreMagma () 
00022	{
00023		local vector    SpawnLoc;
00024		local Magma 	   TempMagma;
00025		local FlameBall TempFlame;
00026		local rotator  SpawnDir;
00027	
00028		SpawnLoc = Location - (CubeDimensions*0.5);
00029		SpawnLoc.X += FRand()*CubeDimensions.X;
00030		SpawnLoc.Y += FRand()*CubeDimensions.Y;
00031		SpawnLoc.Z += FRand()*CubeDimensions.Z;
00032	
00033		// Time to generate another Magma Rock.
00034		TempMagma = Spawn (class 'Magma', , '', SpawnLoc);
00035		
00036		// Spawn a lava burst as the magma flies out
00037		TempFlame = Spawn (class 'FlameBall', , '', SpawnLoc);
00038	
00039		SpawnDir = SpawnCenterDir;
00040		SpawnDir.Pitch += -AngularDeviation + Rand(AngularDeviation*2);
00041		SpawnDir.Yaw   += -AngularDeviation + Rand(AngularDeviation*2);
00042		TempMagma.SetRotation(SpawnDir);
00043		TempMagma.RotationRate = RotRand();
00044		TempMagma.Speed    = (MinSpawnSpeed + 
00045		                       FRand()*(MaxSpawnSpeed-MinSpawnSpeed));
00046	
00047		TempMagma.BurnTime = MinBurnTime + FRand()*(MaxBurnTime-MinBurnTime);
00048	
00049		// 0=dark  1=bright
00050		TempMagma.InitialBrightness = MinBrightness + 
00051				     			     FRand()*(MaxBrightness-MinBrightness);
00052	
00053		TempMagma.DrawScale = (MaxScaleFactor-MinScaleFactor)*FRand()+MinScaleFactor;
00054	}
00055	
00056	
00057	state() Active 
00058	{
00059		function MakeRock()
00060		{
00061			local int i, NumSpawnedNow;
00062	
00063			NumSpawnedNow = Rand(MaxSpawnedAtOnce-MinSpawnedAtOnce+1)+MinSpawnedAtOnce;
00064			for (i=0; i<NumSpawnedNow; i++)
00065				MoreMagma();
00066		}
00067	}
00068	
00069	
00070	auto state() Triggered 
00071	{
00072		function Trigger (actor Other, pawn EventInstigator) 
00073		{
00074			GotoState ('Active');
00075		}
00076	}
00077	
00078	defaultproperties
00079	{
00080	     MinSpawnedAtOnce=1
00081	     MaxSpawnedAtOnce=4
00082	     MinSpawnSpeed=200.000000
00083	     MaxSpawnSpeed=1000.000000
00084	     MinBurnTime=20.000000
00085	     MaxBurnTime=25.000000
00086	     MinBrightness=190.000000
00087	     MaxBrightness=240.000000
00088	     SpawnCenterDir=(Pitch=20000)
00089	     AngularDeviation=36000
00090	     CubeDimensions=(X=60.000000,Y=60.000000,Z=60.000000)
00091	     MinBetweenTime=0.700000
00092	     MaxBetweenTime=1.700000
00093	     MinScaleFactor=0.600000
00094	     MaxScaleFactor=1.300000
00095	     Tag=MagmaTest1
00096	}

End Source Code