RuneI
Class RunePolyobj

source: c:\runehov\RuneI\Classes\RunePolyobj.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Brush
         |
         +--Engine.Polyobj
            |
            +--RuneI.RunePolyobj
Direct Known Subclasses:AttachPolyobj, DDObstacle, WindmillPolyobj

class RunePolyobj
extends Engine.Polyobj

//============================================================================= // RunePolyobj. //=============================================================================

Function Summary
 void Explode(vector Momentum)
 void PreBeginPlay()



Source Code


00001	//=============================================================================
00002	// RunePolyobj.
00003	//=============================================================================
00004	class RunePolyobj expands Polyobj;
00005	
00006	
00007	var(Sounds) Sound DestroySound;
00008	
00009	
00010	function PreBeginPlay()
00011	{
00012		switch (matter)
00013		{
00014			case MATTER_WOOD:
00015			case MATTER_BREAKABLEWOOD:
00016				if (OpeningSound == None)		OpeningSound =		Sound'DoorsSnd.Wood.doorwoodlayer04';
00017				if (OpenedSound == None)		OpenedSound =		Sound'DoorsSnd.Metal.doormetalslam02';
00018				if (ClosingSound == None)		ClosingSound =		Sound'DoorsSnd.Wood.doorwoodslam10';
00019				if (ClosedSound == None)		ClosedSound =		Sound'DoorsSnd.Wood.doorwoodlocked03';
00020				if (MoveAmbientSound == None)	MoveAmbientSound =	Sound'DoorsSnd.Wood.doorwoodmove02';
00021				break;
00022			case MATTER_METAL:
00023				if (OpeningSound == None)		OpeningSound =		Sound'DoorsSnd.Metal.doormetalslam05';
00024				if (OpenedSound == None)		OpenedSound =		Sound'DoorsSnd.Wood.doorwoodlayer03';
00025				if (ClosingSound == None)		ClosingSound =		Sound'DoorsSnd.Metal.doormetalslam04';
00026				if (ClosedSound == None)		ClosedSound =		Sound'DoorsSnd.Wood.doorwoodslam07';
00027				if (MoveAmbientSound == None)	MoveAmbientSound =	Sound'DoorsSnd.Metal.doormetalmove01';
00028				break;
00029			case MATTER_STONE:
00030			case MATTER_BREAKABLESTONE:
00031			default:
00032				if (OpeningSound == None)		OpeningSound =		Sound'DoorsSnd.Stone.doorstoneslam01';
00033				if (OpenedSound == None)		OpenedSound =		Sound'DoorsSnd.Wood.doorwoodslam10';
00034				if (ClosingSound == None)		ClosingSound =		Sound'DoorsSnd.Stone.doorstoneslam01';
00035				if (ClosedSound == None)		ClosedSound =		Sound'DoorsSnd.Wood.doorwoodslam06';
00036				if (MoveAmbientSound == None)	MoveAmbientSound =	Sound'DoorsSnd.Stone.doorstonemove04';
00037				break;
00038		}
00039	
00040		Super.PreBeginPlay();
00041	}
00042	
00043	function Explode(vector Momentum)
00044	{
00045		local DebrisCloud c;
00046	
00047		// Spawn appropriate debris based on matter type
00048		if (DebrisType == None)
00049		{
00050			switch(matter)
00051			{
00052				case MATTER_FLESH:
00053					DebrisType = class'debrisflesh';
00054					PlaySound(Sound'WeaponsSnd.impflesh.impactflesh02', SLOT_Pain);
00055					break;
00056				case MATTER_WOOD:
00057					DebrisType = class'debriswood';
00058					PlaySound(Sound'WeaponsSnd.impcrashes.crashwood01', SLOT_Pain);
00059					break;
00060				case MATTER_ICE:
00061					DebrisType = class'debrisice';
00062					PlaySound(Sound'WeaponsSnd.impcrashes.crashglass02', SLOT_Pain);
00063					break;
00064				case MATTER_STONE:
00065					DebrisType = class'debrisstone';
00066					PlaySound(Sound'WeaponsSnd.impcrashes.crashxstone01', SLOT_Pain);
00067					break;
00068				case MATTER_EARTH:
00069					DebrisType = class'debrisstone';
00070					PlaySound(Sound'WeaponsSnd.impcrashes.crashxstone01', SLOT_Pain);
00071					break;
00072				default:
00073					break;
00074			}
00075		}
00076		if (DestroySound == None)
00077		{
00078			switch(matter)
00079			{
00080				case MATTER_FLESH:
00081					DestroySound=Sound'WeaponsSnd.impflesh.impactflesh02';
00082					break;
00083				case MATTER_WOOD:
00084					DestroySound=Sound'WeaponsSnd.impcrashes.crashwood01';
00085					break;
00086				case MATTER_ICE:
00087					DestroySound=Sound'WeaponsSnd.impcrashes.crashglass02';
00088					break;
00089				case MATTER_STONE:
00090					DestroySound=Sound'WeaponsSnd.impcrashes.crashxstone01';
00091					break;
00092				case MATTER_EARTH:
00093					DestroySound=Sound'WeaponsSnd.impcrashes.crashxstone01';
00094					break;
00095			}
00096		}
00097	
00098		PlaySound(DestroySound, SLOT_Pain);
00099	
00100		// Spawn cloud
00101		if (DebrisSpawnRadius == 0)
00102			DebrisSpawnRadius = GetCollisionRadius();
00103		c = Spawn(class'DebrisCloud');
00104		c.SetRadius(DebrisSpawnRadius);
00105	
00106		// Allow Polyobj to spawn
00107		Super.Explode(Momentum);
00108	}
00109	
00110	defaultproperties
00111	{
00112	}

End Source Code