69 lines
1.7 KiB
Ucode
69 lines
1.7 KiB
Ucode
//-----------------------------------------------------------
|
|
//
|
|
//-----------------------------------------------------------
|
|
class DoorGib extends Actor
|
|
Abstract;
|
|
|
|
var() float DampenFactor;
|
|
var Sound HitSounds[2];
|
|
|
|
var float NewGibSize;
|
|
var() float ScaleFactor; // Scale factor < 1 = larger chunks.
|
|
|
|
simulated function PostBeginPlay()
|
|
{
|
|
RandSpin( 64000 );
|
|
}
|
|
simulated final function RandSpin(float spinRate)
|
|
{
|
|
DesiredRotation = RotRand(True);
|
|
RotationRate.Yaw = spinRate * 2 *FRand() - spinRate;
|
|
RotationRate.Pitch = spinRate * 2 *FRand() - spinRate;
|
|
RotationRate.Roll = spinRate * 2 *FRand() - spinRate;
|
|
}
|
|
simulated function Landed( Vector HitNormal )
|
|
{
|
|
HitWall( HitNormal, None );
|
|
}
|
|
simulated function HitWall( Vector HitNormal, Actor Wall )
|
|
{
|
|
local float Speed, MinSpeed;
|
|
|
|
Velocity = DampenFactor * ((Velocity dot HitNormal) * HitNormal*(-2.0) + Velocity);
|
|
RandSpin(100000);
|
|
Speed = VSize(Velocity);
|
|
if ( Level.DetailMode == DM_Low )
|
|
MinSpeed = 250;
|
|
else MinSpeed = 150;
|
|
if(Speed > MinSpeed)
|
|
{
|
|
if( (Level.NetMode != NM_DedicatedServer) && !Level.bDropDetail )
|
|
{
|
|
if ( (LifeSpan < 7.3) && (Level.DetailMode != DM_Low) )
|
|
PlaySound(HitSounds[Rand(2)]);
|
|
}
|
|
}
|
|
|
|
if( Speed < 20 )
|
|
{
|
|
bBounce = False;
|
|
SetPhysics(PHYS_None);
|
|
}
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
DampenFactor=0.500000
|
|
HitSounds(0)=none//Sound'PlayerSounds.Final.Giblets1' KFTODO: Replace this
|
|
HitSounds(1)=none//Sound'PlayerSounds.Final.Giblets2' KFTODO: Replace this
|
|
ScaleFactor=0.700000
|
|
Physics=PHYS_Falling
|
|
RemoteRole=ROLE_None
|
|
LifeSpan=15.000000
|
|
TransientSoundVolume=100.000000
|
|
bCollideWorld=True
|
|
bBounce=True
|
|
bFixedRotationDir=True
|
|
Mass=120.000000
|
|
}
|