rott/kf_sources/GamePlay/Classes/ViewShaker.uc
2026-07-14 20:27:09 +07:00

46 lines
1.7 KiB
Ucode

//=============================================================================
// ViewShaker: Shakes view of any playercontrollers - amb - rewrote this
// within the ShakeRadius
//=============================================================================
class ViewShaker extends Triggers;
//-----------------------------------------------------------------------------
// Variables.
var() float ShakeRadius; // radius within which to shake player views
var() vector RotMag; // how far to rot view
var() vector RotRate; // how fast to rot view
var() float RotTime; // how much time to rot the instigator's view
var() vector OffsetMag; // max view offset vertically
var() vector OffsetRate; // how fast to offset view vertically
var() float OffsetTime; // how much time to offset view
//-----------------------------------------------------------------------------
// Functions.
simulated function Trigger( actor Other, pawn EventInstigator )
{
local Controller C;
local PlayerController LocalPlayer;
LocalPlayer = Level.GetLocalPlayerController();
if ( (LocalPlayer != None) && (VSize(Location - LocalPlayer.ViewTarget.Location) < ShakeRadius) )
LocalPlayer.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime);
for ( C=Level.ControllerList; C!=None; C=C.NextController )
if ( (PlayerController(C) != None) && (C != LocalPlayer)
&& (VSize(Location - PlayerController(C).ViewTarget.Location) < ShakeRadius) )
C.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime);
}
defaultproperties
{
ShakeRadius=+2000.0
OffsetMag=(X=10,Y=10,Z=10)
OffsetRate=(X=1000,Y=1000,Z=1000)
OffsetTime=3.0
bCollideActors=false
}