Controller
This class is a handle to a pawn. Pawns are the physical player characters, the controller is the, well, controlling entity moving it around. There are two subclasses from this class, both are important AIController and PlayerController. Controller Overview covers this in more depth.
From this class, you can control everything from godmode to the pawn that you are focusing on to the adrenaline it has.
Notes:
- Adrenaline is here, not in the pawn class.
- There is a linked list- esque set up of the controllers, allowing you to move to the next controller in the list.
Properties
Main
- Pawn Pawn
- The Pawn that this entity is controlling.
- const int PlayerNum
- The player number - per-match player number.
- float SightCounter
- Used to keep track of when to check player visibility.
- float FovAngle
- X field of view angle in degrees, usually 90.
- globalconfig float Handedness
- Left or Right.
- bool bIsPlayer
- Pawn is a player or a player-bot.
- bool bGodMode
- cheat - when true, can't be killed or hurt
AI
- const bool bLOSflag
- used for alternating LineOfSight traces
- bool bAdvancedTactics
- serpentine movement between pathnodes
- bool bCanOpenDoors
- (maybe used for matinees?)
- bool bCanDoSpecial
- No clue, experiments to try it out didn't work...
- bool bAdjusting
- adjusting around obstacle
- bool bPreparingMove
- set true while pawn sets up for a latent move
- bool bControlAnimations
- take control of animations from pawn (don't let pawn play animations based on notifications)
- bool bEnemyInfoValid
- false when change enemy, true when LastSeenPos etc updated
- bool bNotifyApex
- event NotifyJumpApex() when at apex of jump
- bool bUsePlayerHearing
- No clue
- bool bJumpOverWall
- true when jumping to clear obstacle
- bool bEnemyAcquired
- Used to get notification when a bot sees someone
- bool bSoaking
- pause and focus (anyone know what this "focus" is?) on this bot if it encounters a problem
- bool bHuntPlayer
- hunting player
- bool bAllowedToTranslocate
- bool bAllowedToImpactJump
- bool bAdrenalineEnabled
- Interesting property - may be useful for a couple of mods?
Input
- input byte bRun, bDuck, bFire, bAltFire
- Used (I think) to drive ai reactionary cycles
Spark: Those are input flags which are set in your User.ini. It seems that the engine is also checking bFire to automagically trigger the fire event, see Firing Projectile Weapons.
- vector AdjustLoc
- location to move to while adjusting around obstacle
- const Controller nextController
- chained Controller list
- float Stimulus
- Strength of stimulus - Set when stimulus happens
Navigation
- float MoveTimer
- used in matinee and in AI pathing
- Actor MoveTarget
- actor being moved toward
- vector Destination
- location being moved toward
- vector FocalPoint
- location being looked at
- Actor Focus
- actor being looked at
- Mover PendingMover
- a mover the pawn is waiting for to complete its move
- Actor GoalList[4]
- used by navigation AI - list of intermediate goals
- NavigationPoint home
- set when begin play, used for retreating and attitude checks
- float MinHitWall
- Minimum HitNormal dot Velocity.Normal to get a HitWall event from the physics
- float RespawnPredictionTime
- how far ahead to predict respawns when looking for inventory
- int AcquisitionYawRate
- how fast to move on the z axis to aquire a new target (??)
Enemy Info
- Pawn Enemy
- Pawn of my enemy
- Actor Target
- My enemy
- vector LastSeenPos
- enemy position when I last saw enemy (auto updated if EnemyNotVisible() enabled)
- vector LastSeeingPos
- position where I last saw enemy (auto updated if EnemyNotVisible enabled)
- float LastSeenTime
- Time I saw the last enemy (auto updated if EnemyNotVisible enabled)
- string VoiceType
- for speech
- float OldMessageTime
- to limit frequency of voice messages
Comments
Chemos: This page really needed to be written, and I am compiling information at the moment. I will finish all this up in a bit. (First page BTW) *phew* Typing that many "controller"s is getting quite annoying.