1
0
KF2-Dev-Scripts/UDKBase/classes/UDKPlayerController.uc
2020-12-13 18:01:13 +03:00

142 lines
5.0 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class UDKPlayerController extends GamePlayerController
native;
/** plays camera animations (mostly used for viewshakes) */
var CameraAnimInst CameraAnimPlayer;
/** The effect to play on the camera **/
var UDKEmitCameraEffect CameraEffect;
/** indicates whether this player is a dedicated server spectator (so disable rendering and don't allow it to participate at all) */
var bool bDedicatedServerSpectator;
/** makes playercontroller hear much better (used to magnify hit sounds caused by player) */
var bool bAcuteHearing;
/** current offsets applied to the camera due to camera anims, etc */
var vector ShakeOffset; // current magnitude to offset camera position from shake
var rotator ShakeRot; // current magnitude to offset camera rotation from shake
/** stores post processing settings applied by the camera animation
* applied additively to the default post processing whenever a camera anim is playing
*/
var PostProcessSettings CamOverridePostProcess;
/** additional post processing settings modifier that can be applied
* @note: defaultproperties for this are hardcoded to zeroes in C++
*/
var PostProcessSettings PostProcessModifier;
/** Actors which may be hidden dynamically when rendering (by adding to PlayerController.HiddenActors array) */
var array<Actor> PotentiallyHiddenActors;
/** If true, player is on a console (used by C++) */
var bool bConsolePlayer;
/** Custom scaling for vehicle check radius. Used by UTConsolePlayerController for example */
var float VehicleCheckRadiusScaling;
var float PulseTimer;
var bool bPulseTeamColor;
/** if true, rotate smoothly to desiredrotation */
var bool bUsePhysicsRotation;
struct native ObjectiveAnnouncementInfo
{
/** the default announcement sound to play (can be None) */
var() SoundNodeWave AnnouncementSound;
/** text displayed onscreen for this announcement */
var() localized string AnnouncementText;
};
cpptext
{
virtual UBOOL Tick( FLOAT DeltaSeconds, ELevelTick TickType );
// WWISEMODIF_START
virtual UBOOL HearSound(UAkBaseSoundObject* InSoundCue, AActor* SoundPlayer, const FVector& SoundLocation, UBOOL bStopWhenOwnerDestroyed);
// WWISEMODIF_END
virtual UBOOL MoveWithInterpMoveTrack(UInterpTrackMove* MoveTrack, UInterpTrackInstMove* MoveInst, FLOAT CurTime, FLOAT DeltaTime);
virtual void BlendPostProcessSettings(FPostProcessSettings& PPSettings, const FPostProcessSettings& PPSettingsA, const FPostProcessSettings& PPSettingsB, const FLOAT BlendWeight) const;
virtual void AddPostProcessSettings(FPostProcessSettings& PPSettings, const FPostProcessSettings& PPSettingsA) const;
virtual void ModifyPostProcessSettings(FPostProcessSettings& PPSettings) const;
virtual void UpdateHiddenActors(const FVector& ViewLocation);
virtual void PreSave();
/**
* This will score both Adhesion and Friction targets. We want the same scoring function as we
* don't want the two different systems fighting over targets that are close.
**/
virtual FLOAT ScoreTargetAdhesionFrictionTarget( const APawn* P, FLOAT MaxDistance, const FVector& CamLoc, const FRotator& CamRot ) const;
/** Determines whether this Pawn can be used for TargetAdhesion **/
virtual UBOOL IsValidTargetAdhesionFrictionTarget( APawn* P, FLOAT MaxDistance );
}
/**
* Sets the current gamma value.
*
* @param New Gamma Value, must be between 0.0 and 1.0
*/
native function SetGamma(float GammaValue);
// NVCHANGE_BEGIN_TURB: TSC - can't change this at runtime
/**
* Sets whether or not hardware physics are enabled.
*
* @param bEnabled Whether to enable the physics or not.
*/
//native function SetHardwarePhysicsEnabled(bool bEnabled);
// NVCHANGE_BEGIN_TURB: TSC - can't change this at runtime
/** @return Whether or not the user has a keyboard plugged-in. */
native simulated function bool IsKeyboardAvailable() const;
/** @return Whether or not the user has a mouse plugged-in. */
native simulated function bool IsMouseAvailable() const;
/** @param CamEmitter Clear the CameraEffect if it is the one passed in */
function RemoveCameraEffect( UDKEmitCameraEffect CamEmitter )
{
if (CameraEffect == CamEmitter)
{
CameraEffect = None;
}
}
/** Spawn ClientSide Camera Effects **/
unreliable client function ClientSpawnCameraEffect(class<UDKEmitCameraEffect> CameraEffectClass)
{
local vector CamLoc;
local rotator CamRot;
if (CameraEffectClass != None && CameraEffect == None)
{
CameraEffect = Spawn(CameraEffectClass, self);
if (CameraEffect != None)
{
GetPlayerViewPoint(CamLoc, CamRot);
CameraEffect.RegisterCamera(self);
CameraEffect.UpdateLocation(CamLoc, CamRot, FOVAngle);
}
}
}
function ClearCameraEffect()
{
if( CameraEffect != None )
{
CameraEffect.Destroy();
CameraEffect = none;
}
}
/**
* This will find the best AdhesionFriction target based on the params passed in.
**/
native function Pawn GetTargetAdhesionFrictionTarget( FLOAT MaxDistance, const out vector CamLoc, const out Rotator CamRot );