//============================================================================= // KFViewShaker: extends ViewShaker with optional replication //============================================================================= class KFViewShaker extends ViewShaker; var() bool bReplicateShake; simulated function Trigger( actor Other, pawn EventInstigator ) { local Controller C; local PlayerController LocalPlayer, PC; local KFPlayerController KFPC; LocalPlayer = Level.GetLocalPlayerController(); if( (LocalPlayer != None) && (VSize(Location - LocalPlayer.ViewTarget.Location) < ShakeRadius) ) { LocalPlayer.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime); } if( bReplicateShake ) { for( C = Level.ControllerList; C != None; C = C.NextController ) { KFPC = KFPlayerController(C); if( (KFPC != None) && (C != LocalPlayer) && (VSize(Location - KFPC.ViewTarget.Location) < ShakeRadius) ) { KFPC.ClientShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime); } } } else { for( C = Level.ControllerList; C != None; C = C.NextController ) { PC = PlayerController(C); if( (PC != None) && (C != LocalPlayer) && (VSize(Location - PC.ViewTarget.Location) < ShakeRadius) ) { PC.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime); } } } }