virtualvoidFaceTo(constVector&goal)=0;// orient body towards goal
virtualvoidClearFaceTo(void)=0;// remove body orientation goal
virtualboolIsAtMoveGoal(floaterror=20.0f)const=0;// return true if improv is standing on its movement goal
virtualboolHasLookAt(void)const=0;// return true if improv has a look at goal
virtualboolHasFaceTo(void)const=0;// return true if improv has a face to goal
virtualboolIsAtFaceGoal(void)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(void)=0;
virtualvoidMoveBackward(void)=0;
virtualvoidStrafeLeft(void)=0;
virtualvoidStrafeRight(void)=0;
virtualboolJump(void)=0;
virtualvoidCrouch(void)=0;
virtualvoidStandUp(void)=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=NULL)=0;// find "simple" ground height, treating current nav area as part of the floor
virtualvoidRun(void)=0;
virtualvoidWalk(void)=0;
virtualvoidStop(void)=0;
virtualfloatGetMoveAngle(void)const=0;// return direction of movement
virtualfloatGetFaceAngle(void)const=0;// return direction of view
virtualconstVector&GetFeet(void)const=0;// return position of "feet" - point below centroid of improv at feet level
virtualconstVector&GetCentroid(void)const=0;
virtualconstVector&GetEyes(void)const=0;
virtualboolIsRunning(void)const=0;
virtualboolIsWalking(void)const=0;
virtualboolIsStopped(void)const=0;
virtualboolIsCrouching(void)const=0;
virtualboolIsJumping(void)const=0;
virtualboolIsUsingLadder(void)const=0;
virtualboolIsOnGround(void)const=0;
virtualboolIsMoving(void)const=0;// if true, improv is walking, crawling, running somewhere
virtualboolCanRun(void)const=0;
virtualboolCanCrouch(void)const=0;
virtualboolCanJump(void)const=0;
virtualboolIsVisible(constVector&pos,booltestFOV=false)const=0;// return true if improv can see position
virtualboolIsPlayerLookingAtMe(CBasePlayer*other,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=NULL)const=0;// return actual travel distance to closest player on given team (team == 0 means any team)
virtualCNavArea*GetLastKnownArea(void)const=0;
virtualvoidOnUpdate(floatdeltaT)=0;// a less frequent, full update 'tick'
virtualvoidOnUpkeep(floatdeltaT)=0;// a frequent, lightweight update 'tick'
virtualvoidOnReset(void)=0;// reset improv to initial state
virtualvoidOnGameEvent(GameEventTypeevent,CBaseEntity*entity,CBaseEntity*other)=0;// invoked when an event occurs in the game
virtualvoidOnTouch(CBaseEntity*other)=0;// "other" has touched us