virtualvoidFaceTo(constVector&goal)=0;// orient body towards goal
virtualvoidClearFaceTo()=0;// remove body orientation goal
virtualboolIsAtMoveGoal(floaterror=20.0f)const=0;// return true if improv is standing on its movement goal
virtualboolHasLookAt()const=0;// return true if improv has a look at goal
virtualboolHasFaceTo()const=0;// return true if improv has a face to goal
virtualboolIsAtFaceGoal()const=0;// return true if improv is facing towards its face goal
virtualboolIsFriendInTheWay(constVector&goalPos)const=0;// return true if a friend is blocking our line to the given goal position
virtualboolIsFriendInTheWay(CBaseEntity*myFriend,constVector&goalPos)const=0;// return true if the given friend is blocking our line to the given goal position
virtualvoidMoveForward()=0;
virtualvoidMoveBackward()=0;
virtualvoidStrafeLeft()=0;
virtualvoidStrafeRight()=0;
virtualboolJump()=0;
virtualvoidCrouch()=0;
virtualvoidStandUp()=0;// "un-crouch"
virtualvoidTrackPath(constVector&pathGoal,floatdeltaT)=0;// move along path by following "pathGoal"
virtualvoidStartLadder(constCNavLadder*ladder,enumNavTraverseTypehow,constVector*approachPos,constVector*departPos)=0;// invoked when a ladder is encountered while following a path
virtualboolTraverseLadder(constCNavLadder*ladder,enumNavTraverseTypehow,constVector*approachPos,constVector*departPos,floatdeltaT)=0;// traverse given ladder
virtualboolGetSimpleGroundHeightWithFloor(constVector*pos,float*height,Vector*normal=nullptr)=0;// find "simple" ground height, treating current nav area as part of the floor
virtualvoidRun()=0;
virtualvoidWalk()=0;
virtualvoidStop()=0;
virtualfloatGetMoveAngle()const=0;// return direction of movement
virtualfloatGetFaceAngle()const=0;// return direction of view
virtualconstVector&GetFeet()const=0;// return position of "feet" - point below centroid of improv at feet level
virtualconstVector&GetCentroid()const=0;
virtualconstVector&GetEyes()const=0;
virtualboolIsRunning()const=0;
virtualboolIsWalking()const=0;
virtualboolIsStopped()const=0;
virtualboolIsCrouching()const=0;
virtualboolIsJumping()const=0;
virtualboolIsUsingLadder()const=0;
virtualboolIsOnGround()const=0;
virtualboolIsMoving()const=0;// if true, improv is walking, crawling, running somewhere
virtualboolCanRun()const=0;
virtualboolCanCrouch()const=0;
virtualboolCanJump()const=0;
virtualboolIsVisible(constVector&pos,booltestFOV=false)const=0;// return true if improv can see position
virtualboolIsPlayerLookingAtMe(CBasePlayer*pOther,floatcosTolerance=0.95f)const=0;// return true if 'other' is looking right at me
virtualCBasePlayer*IsAnyPlayerLookingAtMe(intteam=0,floatcosTolerance=0.95f)const=0;// return player on given team that is looking right at me (team == 0 means any team), NULL otherwise
virtualCBasePlayer*GetClosestPlayerByTravelDistance(intteam=0,float*range=nullptr)const=0;// return actual travel distance to closest player on given team (team == 0 means any team)
virtualCNavArea*GetLastKnownArea()const=0;
virtualvoidOnUpdate(floatdeltaT)=0;// a less frequent, full update 'tick'
virtualvoidOnUpkeep(floatdeltaT)=0;// a frequent, lightweight update 'tick'
virtualvoidOnReset()=0;// reset improv to initial state
virtualvoidOnGameEvent(GameEventTypeevent,CBaseEntity*pEntity,CBaseEntity*pOther)=0;// invoked when an event occurs in the game
virtualvoidOnTouch(CBaseEntity*pOther)=0;// "other" has touched us