88 lines
2.8 KiB
Ucode
88 lines
2.8 KiB
Ucode
|
/**
|
||
|
* This is our base projectile class.
|
||
|
*
|
||
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
||
|
*/
|
||
|
|
||
|
class UDKProjectile extends Projectile
|
||
|
abstract
|
||
|
native
|
||
|
nativereplication;
|
||
|
|
||
|
/** for console games (wider collision w/ enemy players) */
|
||
|
var bool bWideCheck;
|
||
|
|
||
|
var float CheckRadius;
|
||
|
|
||
|
/** Acceleration magnitude. By default, acceleration is in the same direction as velocity */
|
||
|
var float AccelRate;
|
||
|
|
||
|
/** if true, the shutdown function has been called and 'new' effects shouldn't happen */
|
||
|
var bool bShuttingDown;
|
||
|
|
||
|
//=======================================================
|
||
|
// Seeking Projectile Support
|
||
|
|
||
|
/** Currently tracked target - if set, projectile will seek it */
|
||
|
var actor SeekTarget;
|
||
|
|
||
|
/** Tracking strength for normal targets.*/
|
||
|
var float BaseTrackingStrength;
|
||
|
|
||
|
/** Tracking strength for vehicle targets with bHomingTarget=true */
|
||
|
var float HomingTrackingStrength;
|
||
|
|
||
|
/** Initial direction of seeking projectile */
|
||
|
var vector InitialDir;
|
||
|
|
||
|
/** The last time a lock message was sent (to vehicle with bHomingTarget=true) */
|
||
|
var float LastLockWarningTime;
|
||
|
|
||
|
/** How long before re-sending the next Lock On message update */
|
||
|
var float LockWarningInterval;
|
||
|
|
||
|
/** TerminalVelocity for this projectile when falling */
|
||
|
var float TerminalVelocity;
|
||
|
|
||
|
/** Water buoyancy. A ratio (1.0 = neutral buoyancy, 0.0 = no buoyancy) */
|
||
|
var float Buoyancy;
|
||
|
|
||
|
/** custom gravity multiplier */
|
||
|
var float CustomGravityScaling;
|
||
|
|
||
|
/** if this projectile is fired by a vehicle passenger gun, this is the base vehicle
|
||
|
* considered the same as Instigator for purposes of bBlockedByInstigator
|
||
|
*/
|
||
|
var Vehicle InstigatorBaseVehicle;
|
||
|
|
||
|
/** Make true if want to spawn ProjectileLight. Set false in TickSpecial() once it's been determined whether Instigator is local player. Done there to make sure instigator has been replicated */
|
||
|
var bool bCheckProjectileLight;
|
||
|
|
||
|
/** if true, not blocked by vehicle shields with bIgnoreFlaggedProjectiles*/
|
||
|
var bool bNotBlockedByShield;
|
||
|
|
||
|
cpptext
|
||
|
{
|
||
|
virtual void TickSpecial( FLOAT DeltaSeconds );
|
||
|
virtual void GetNetBuoyancy(FLOAT &NetBuoyancy, FLOAT &NetFluidFriction);
|
||
|
virtual FLOAT GetGravityZ();
|
||
|
virtual UBOOL IgnoreBlockingBy(const AActor* Other) const;
|
||
|
virtual INT* GetOptimizedRepList(BYTE* InDefault, FPropertyRetirement* Retire, INT* Ptr, UPackageMap* Map, UActorChannel* Channel);
|
||
|
}
|
||
|
|
||
|
replication
|
||
|
{
|
||
|
if (bNetInitial)
|
||
|
bWideCheck, SeekTarget, InitialDir;
|
||
|
if (bNetDirty && bReplicateInstigator)
|
||
|
InstigatorBaseVehicle;
|
||
|
}
|
||
|
|
||
|
/** returns terminal velocity (max speed while falling) for this actor. Unless overridden, it returns the TerminalVelocity of the PhysicsVolume in which this actor is located.
|
||
|
*/
|
||
|
native function float GetTerminalVelocity();
|
||
|
|
||
|
/** CreateProjectileLight() called from TickSpecial() once if Instigator is local player
|
||
|
*/
|
||
|
simulated event CreateProjectileLight();
|