Pawn
This is the parent class for all Controlled entities in the game engine, whether they are controlled by human players or AI. Their purpose is to represent the visual and physical elements of the entity, while the Controller class handles their decision making, Adrenaline, etc.
Properties
Main
- byte DamageDirIntensity[4]
- HitFXData HitFx[8]
- float SkillModifier
- Skill modifier (same scale as game difficulty, 0 - 7)
AI
- name AIScriptTag
- Tag of AIScript which should be associated with this pawn
- float Alertness
- -1 to 1 →Used within specific states for varying reaction to stimuli
- bool bAdjacentZoneHearing
- Can hear any sound in adjacent zone (if close enough to hear)
- bool bLOSHearing
- Can hear sounds from line-of-sight sources (which are close enough to hear)
- bool bMuffledHearing
- Can hear sounds through walls (but muffled - sound distance increased to double plus 4x the distance through walls
- float HearingThreshold
- Max distance at which a makenoise(1.0) loudness sound can be heard
- float PeripheralVision
- Cosine of limits of peripheral vision.
- float SightRadius
- Maximum seeing distance.
AnimTweaks
- float BlendChangeTime
- Time to blend between movement animations
Shield
- float ShieldStrength (transient)
- Current shielding (having been activated)
Hidden
- name LandAnims[4]
- name TakeoffAnims[4]
- name AirAnims[4]
- name WalkAnims[4]
- name CrouchAnims[4]
- name DodgeAnims[4]
- name DoubleJumpAnims[4]
- float AccelRate
- Max acceleration rate
- float AirControl
- Amount of AirControl available to the pawn
- float AirSpeed
- The maximum flying speed.
- name AirStillAnim
- NavigationPoint Anchor
- Current nearest path object.
- name AnimAction
- Use for replicating anims
- float AppliedBob
- float AvgPhysicsTime (const)
- Physics updating time monitoring (for AI monitoring reaching destinations)
- float BackwardStrafeBias
- Bias of strafe blending in backward direction
- bool bAmbientCreature
- AIs will ignore me
- float BaseEyeHeight
- Base eye height above collision center.
- float BaseMovementRate
- FIXME - temp - used for scaling movement
- bool bAutoFire
- Used for third person weapon anims/effects
- bool bAvoidLedges
- Don't get too close to ledges
- bool bCachedRelevant
- Network relevancy caching flag
- bool bCanClimbLadders
- bool bCanDoubleJump
- bool bCanFly
- bool bCanJump
- Movement capabilities - used by AI
- bool bCanStrafe
- bool bCanSwim
- bool bCanWalk
- bool bClientCollision
- Used on clients when temporarily turning off collision
- bool bCrawler
- Crawling - pitch and roll based on surface pawn is on
- bool bDirectHitWall
- Always call pawn hitwall directly (no controller notifyhitwall)
- bool bDoTorsoTwist
- bool bHideRegularHUD
- bool bInitializeAnimation
- bool bInvulnerableBody
- bool bIsCrouched (const)
- Set by physics to specify that pawn is currently crouched
- bool bIsFemale
- bool bJumpCapable
- bool bJustLanded
- Used by eyeheight adjustment
- class<Effects> BloodEffect
- bool bNoJumpAdjust
- Set to tell controller not to modify velocity of a jump/fall
- bool bNoTeamBeacon
- Never display team beacon for this pawn
- bool bNoVelocityUpdate (const)
- Used by C++ physics
- bool bNoWeaponFiring
- float Bob (globalconfig)
- float bobtime
- bool bPhysicsAnimUpdate
- bool bPlayedDeath
- bool bReducedSpeed (const)
- Used by movement natives
- bool bReverseRun (const)
- bool bRollToDesired
- Update roll when turning to desired rotation (normally false)
- bool bSimGravityDisabled (const)
- Used on network clients
- bool bSimulateGravity (const)
- Simulate gravity for this pawn on network clients when predicting position (true if pawn is walking or falling)
- bool bSpecialHUD
- bool bSteadyFiring
- Used for third person weapon anims/effects
- bool bThumped
- bool bTryToUnCrouch (const)
- When auto-crouch during movement, continually try to uncrouch
- bool bUpAndOut
- Used by swimming
- bool bUpdatingDisplay
- To avoid infinite recursion through inventory setdisplay
- bool bWaitForAnim
- True if the pawn is playing an important non-looping animation (eg. landing/dodge) and doesn't feel like being interrupted
- bool bWantsToCrouch
- If true crouched (physics will automatically reduce collision height to CrouchHeight)
- bool bWarping
- Set when travelling through warpzone (so shouldn't telefrag)
- bool bWasCrouched
- bool bWasOnGround
- bool bWasWalking
- bool bWeaponBob
- vector ConstantAcceleration
- Acceleration added to pawn when falling
- Controller Controller
- class<AIController> ControllerClass
- Default class to use when pawn is controlled by AI (can be modified by an AIScript)
- float CrouchedPct
- Percent of running speed that crouched walking speed is
- float CrouchHeight
- CollisionHeight when crouching
- float CrouchRadius
- CollisionRadius when crouching
- name CrouchTurnLeftAnim
- name CrouchTurnRightAnim
- float DamageScaling
- float DesiredSpeed
- float DestinationOffset
- Used to vary destination over NavigationPoints
- float DodgeSpeedFactor
- Dodge speed moved here so animation knows the diff between a jump and a dodge
- float DodgeSpeedZ
- float FindAnchorFailedTime
- Last time a FindPath() attempt failed to find an anchor.
- byte FlashCount
- Used for third person weapon anims/effects
- vector Floor (const)
- Normal of floor pawn is standing on (only used by PHYS_Spider and PHYS_Walking)
- int FootRot (const)
- Torso twisting/looking stuff
- bool FootStill (const)
- bool FootTurning (const)
- float ForwardStrafeBias
- Bias of strafe blending in forward direction
- float GroundSpeed
- The maximum ground speed.
- name HeadBone
- float HeadScale
- PhysicsVolume HeadVolume
- Physics volume of head
- int Health (travel)
- Health: 100 = normal maximum
- float HealthMax
- class<DamageType> HitDamageType
- Damage type of last hit (for playing hit/death anims)
- int HitFxTicker (transient)
- name IdleCrouchAnim
- name IdleRestAnim
- name IdleSwimAnim
- float IdleTime
- name IdleWeaponAnim
- WeaponAttachment code will set this one
- float JumpZ
- Vertical acceleration w/ jump
- float LadderSpeed
- Ladder climbing speed
- float LandBob
- name LandMovementState
- A state of the PlayerController or a derived class which is applied when the player is not within a water block. This will in effect set the default movement state for the pawn.
- NavigationPoint LastAnchor (const)
- Old nearest path object
- float LastPainSound
- float LastPainTime
- Last time pawn played a takehit animation (updated in PlayHit())
- PlayerController LastRealViewer
- PlayerStart LastStartSpot
- Used to avoid spawn camping
- float LastStartTime
- float LastValidAnchorTime
- Last time a valid anchor was found
- Actor LastViewer
- class<Effects> LowGoreBlood
- float MaxDesiredSpeed
- float MaxFallSpeed
- Max speed pawn can land without taking damage (also limits what paths AI can use)
- float MeleeRange
- Max range for melee attack (not including collision radii)
- string MenuName (localized)
- Name used for this pawn type in menus (e.g. player selection)
- float MovementBlendStartTime
- Used for delaying the start of run blending
- float NetRelevancyTime
- float NextPathRadius
- Radius of next path in route
- float noise1loudness (const)
- All the noise* variables are for remembering the location and position of the last noises propagated.
- Pawn noise1other (const)
- vector noise1spot (const)
- float noise1time (const)
- float noise2loudness (const)
- Pawn noise2other (const)
- vector noise2spot (const)
- float noise2time (const)
- vector OldAcceleration
- int OldAnimDir (const)
- EPhysics OldPhysics
- float OldRotYaw
- Used for determining if pawn is turning
- vector OldVelocity (const)
- Velocity at last update
- float OldZ
- Old Z height - used for eyeheight smoothing
- LadderVolume OnLadder
- Ladder currently being climbed
- CompressedPosition? PawnPosition (transient)
- Weapon PendingWeapon
- Will become weapon once current weapon is put down
- PlayerReplicationInfo PlayerReplicationInfo
- class<DamageType> ReducedDamageType
- Which damagetype this creature is protected from (used by AI)
- name RootBone
- Powerups? SelectedItem (travel)
- Currently selected inventory item
- vector SerpentineDir
- Serpentine direction
- float SerpentineDist
- float SerpentineTime
- How long to stay straight before strafing again
- Projector Shadow
- float SoundDampening
- float SpawnTime
- name SpineBone1
- name SpineBone2
- float SplashTime
- Time of last splash
- vector TakeHitLocation
- Location of last hit (for playing hit/death anims)
- name TakeoffStillAnim
- array<name> TauntAnims
- Array of names of taunt anim that can be played by this character. First 4 assumed to be orders.
- string TauntAnimNames[8] (localized)
- Text description of taunt anims
- vector TearOffMomentum
- Momentum to apply when torn off (bTearOff == true)
- int TurnDir (const)
- name TurnLeftAnim
- name TurnRightAnim
- Turning anims when standing in place (scaled by turn speed)
- float UnCrouchTime (const)
- When auto-crouch during movement, continually try to uncrouch once this decrements to zero
- float UnderWaterTime
- How much time pawn can go without air (in seconds)
- byte ViewPitch
- Something to replicate so we can see which way remote clients are looking
- vector WalkBob
- float WalkingPct
- Percent of running speed that walking speed is
- name WaterMovementState
- A state of the PlayerController or a derived class which is applied when the player is within a water block.
- float WaterSpeed
- The maximum swimming speed.
- Weapon Weapon (travel)
- The pawn's current weapon.
Structs
struct HitFXData { var() Name Bone : var() class<DamageType> damtype : var() bool bSever : var() Rotator rotDir : }
Functions
- SetTwistLook( int twist, int look ) (simulated, native)
- int Get4WayDirection() (simulated, native)
- bool ReachedDestination( Actor Goal) (native)
- returns true if the pawn has reached Goal.
- ForceCrouch() (native)
- Forces the pawn to crouch.
- Weapon GetDemoRecordingWeapon() (simulated)
- Fire( optional float F )
- Fires the pawn's current weapon
- DrawHUD( Canvas Canvas )
- bool SpecialCalcView( out actor ViewActor, out vector CameraLocation, out rotator CameraRotation )
- string GetHumanReadableName() (simulated)
- PlayTeleportEffect( bool bOut, bool bSound )
- PossessedBy( Controller C )
- Called when the pawn is possessed by a Controller
- UnPossessed()
- Called when a Controller gives up control of the pawn.
- bool PointOfView() (simulated)
- False means first person view, True means third person view.
- BecomeViewTarget()
- DropToGround()
- bool CanGrabLadder()
- Returns true if this pawn can currently grab a ladder.
- bool CanSplash()
- ClimbLadder( LadderVolume L )
- Called when the pawn starts climbing a ladder.
- EndClimbLadder( LadderVolume OldLadder )
- Called when the pawn is done climbing a ladder.
- DisplayDebug( Canvas Canvas, out float YL, out float YPos ) (simulated)
- This displays the debug information seen with the console command "showdebug"
- vector CalcDrawOffset( Inventory Inv) (simulated)
- Compute offset for drawing an inventory item.
- vector CameraShake()
- vector ModifiedPlayerViewOffset( Inventory Inv )
- vector WeaponBob( float BobDamping )
- CheckBob( float DeltaTime, vector Y )
- bool IsPlayerPawn() (simulated)
- Returns true if this pawn is controlled by a player/bot.
- bool WasPlayerPawn() (simulated)
- Returns true if this pawn was previously controlled by a player/bot.
- bool IsHumanControlled() (simulated)
- Returns true if this pawn is being controlled by a human player.
- bool IsLocallyControlled() (simulated)
- Returns true if this pawn is being controlled locally (by the computer calling the function).
- bool IsFirstPerson() (simulated)
- Returns true if viewing this pawn in first person view.
- rotator GetViewRotation() (simulated)
- SetViewRotation( rotator NewRotation ) (simulated)
- bool InGodMode() (final)
- Returns true if this pawn is in God mode (invulnerable)
- bool NearMoveTarget()
- Returns true if pawn is near it's Controller's MoveTarget.
- bool PressingFire() (simulated, final)
- bool PressingAltFire() (simulated, final)
- Actor GetMoveTarget()
- Returns the pawn's Controller's MoveTarget.
- SetMoveTarget( Actor NewTarget)
- Sets the pawn's Controller's MoveTarget.
- bool LineOfSightTo( Actor Other)
- rotator AdjustAim( Ammunition FiredAmmunition, vector projStart, int aimerror) (simulated, final)
- Actor ShootSpecial( Actor A)
- float AdjustedStrength()
- return a value (typically 0 to 1) adjusting pawn's perceived strength if under some special influence (like berserk)
- HandlePickup( Pickup pick )
- ReceiveLocalizedMessage( class<LocalMessage> Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject )
- Trigger( Actor Other, Pawn EventInstigator)
- bool CanTrigger( Trigger T )
- Returns true if the pawn can be triggered.
- CreateInventory( string InventoryClassName )
- Spawns an Inventory of class InventoryClassName and gives it to this pawn.
- GiveWeapon( string aClassName )
- SetDisplayProperties( ERenderStyle NewStyle, Material NewTexture, bool bLighting )
- SetDefaultDisplayProperties()
- FinishedInterpolation()
- JumpOutOfWater( vector jumpDir )
- Called to set the pawn's velocity and acceleration as he jumps out of water.
- ShouldCrouch( bool Crouch )
- Called by the pawn's Controller when it wants to crouch.
- RestartPlayer()
- AddVelocity( vector NewVelocity )
- KilledBy( Pawn EventInstigator )
Events
- SetHeadScale( float NewScale ) (simulated)
- Sets the scaling of the head of the pawn (used in the BigHead mutator)
- SetWalking( bool bNewIsWalking )
- ClientMessage( coerce string S, optional Name Type )
- ModifyVelocity( float DeltaTime, vector OldVelocity ) (simulated)
- called by physics before applying new velocity for this tick. Velocity,Acceleration, etc. have been updated by the physics, but location hasn't.
- EndCrouch( float HeightAdjust )
- Called by physics when the pawn begins crouching.
- StartCrouch( float HeightAdjust )
- Called by physics when the pawn ends crouching.
- PlayDying( class<DamageType> DamageType, vector HitLoc ) (simulated)
- UT2004: This function seems to be called natively on clientside. It's ROLE on clientside seems to be set to ROLE_Authority before. Although there is a ClientDying() method in Pawn, it is overwritten in xPawn and does therefore NOT call the controller's ClientDying() which "could" call PlayDying(). Controller.PlayDying() is not simulated, it wouldn't be called anyways. Magic ladies and gentlemen.
Known Subclasses
Pawn +- RedeemerWarhead (UT200x) +- KVehicle (UT2003 only) +- Scout +- ScriptedPawn (UT only) +- UnrealPawn | +- xIntroPawn >> (UT200x) | +- xPawn (UT200x) | +- Monster >> | +- xMutantPawn (UT2004) +- Vehicle (UT2004 only) >> +- ASVehicle >> +- KVehicle >> +- ONSWeaponPawn >> +- SVehicle >>
Related Topics
- UScriptAnimPawn - UScript controlled Pawn Animation
- Controller Overview
Discussion
Mysterial: Whew! Even though the Class Wikifier did half the work, that still took a while! I'll get to the functions and other stuff later.
Eyaw_Nayr: This class is probably one of the most important in the game. We should include things like how to modify pawns, etc ... Essentially we just need more details.
mono_eric3: Am I correct in thinking the movement animations are handled natively? Does anyone know of a way to prevent them playing, or at least have some sort of input in what is played (apart from setting those default variables of course). It would be nice if this page could be extended to cover natives and what can be done about them in the pawn class.
SuperApe: Those default properties (MovementAnims, etc) combine with the UnrealPawn and xPawn properties to make the full list of available anims. Within Actor, bAnimOwner dictates whether the Owner is in charge of the animations. Controller.bControllAnimations dictatates that the controller is in charge, rather than the Pawn notifications. It seems you could prevent movement animations from playing (on a player) simply by removing the values from those Pawn (UnrealPawn and xPawn) animation properties. Marked up properties, functions, etc.
SuperApe: Is the property bRollToDesired obsolete or broken? Has anyone use this property set to True succesfully? While True, it seems to disable bRotateToDesired, at least with PHYS_Flying.