===== helper_ai.hps ===== Helper functions for AI ---- == Agent_SetStaticCollider == void Agent_SetStaticCollider(const tString &in asAgentName, bool abX) Set if the agent will collide with the environment (objects and stuff will still collide with it!) * **asAgentName**: name of the agent. Wildcard supported. * **abX**: If the character should be static and NOT move about. ---- == Agent_SetSensesActive == void Agent_SetSensesActive(const tString &in asAgentName, bool abX) Set if the agent should have its senses (hearing/vision/etc) enabled. Usually implemented on a specific basis. * **asAgentName**: name of the agent. Wildcard supported. * **abX**: If the senses should be active. ---- == Agent_RevealPlayerPosition == void Agent_RevealPlayerPosition(const tString &in asAgentName, bool bForceRedetect=false) Reveals the player's current position to the agent. * **asAgentName**: name of the agent. Wildcard supported. * **bForceRedetect**: true = forces the agent to detect the player again. ---- == Agent_SetViewRangeMul == void Agent_SetViewRangeMul(const tString &in asAgentName, float afRangeMul) Sets the view range multiplier of the specified agent * **asAgentName**: name of the agent. Wildcard supported. * **afRangeMul**: the range multiplier to set. ---- == Agent_FaceEntity == void Agent_FaceEntity(const tString &in asAgentName, const tString &in asLookAtTarget) Instantly sets the yaw of the agent to make it look at the specified entity. * **asAgentName**: name of the agent. Wildcard supported. * **asLookAtTarget**: name of entity to look at. ---- == Agent_TeleportFeetToEntity == void Agent_TeleportFeetToEntity(const tString &in asAgentName, const tString &in asTargetName) Teleport the agent's foot position to a specific other entity. * **asAgentName**: name of the entity to teleport. * **asTargetName**: name of the entity to teleport to. ---- == Agent_SetAutoDisableWhenOutOfSightActive == void Agent_SetAutoDisableWhenOutOfSightActive(const tString &in asAgentName, bool abActive, float afMinDistance) When active, the agent will be a disabled (SetActive(false)) when a certain distance away from the player and no longer seen. * **asAgentName**: name of the agent.Wildcard supported. * **abActive**: if the disabling is active * **afMinDistance**: The minimum distance from the player for this to happen. ---- == Agent_SetAutoDisableCallback == void Agent_SetAutoDisableCallback(const tString &in asAgentName, const tString &in asCallbackFunc) Sets the function that is called when the disabling made by Agent_SetAutoDisableWhenOutOfSightActive happens * **asAgentName**: name of the agent.Wildcard supported. * **asCallbackFunc**: Function called when the disabling happens. syntax: void f(const tString&in asEntityName) ---- == Agent_PlayerDetected == bool Agent_PlayerDetected(const tString &in asAgentName) Checks if the agent has dected the player * **asAgentName**: name of the agent. ---- == CharMover_SetDirection == void CharMover_SetDirection(const tString &in asEntityName, eLuxCharMoveDirection aDir) Sets the direction used by a character * **asEntityName**: name of the entity with the CharMover. * **aDir**: direction that the character will face when walking ---- == CharMover_TurnToEntity == void CharMover_TurnToEntity(const tString &in asEntityName, const tString &in asTurnToEntityName, const tString &in asTurnedToGoalCallbackFunc="") Turns the character to a specifc entity. Broadcasts the entity message eLuxEntityMessage_TurningDone when done. * **asEntityName**: name of the entity with the CharMover. * **asTurnToEntityName**: the entity which center will be turn towards * **asTurnedToGoalCallbackFunc**: function called when it has turned to the goal. Syntax: void Func(const tString& in asEntityName) ---- == CharMover_TurnInstantlyToEntity == void CharMover_TurnInstantlyToEntity(const tString &in asEntityName, const tString &in asTurnToEntityName) Turns the character directly to a specifc entity. Broadcasts the entity message eLuxEntityMessage_TurningDone when done. * **asEntityName**: name of the entity with the CharMover. * **asTurnToEntityName**: the entity which center will be turn towards ---- == CharMover_MoveToEntity == void CharMover_MoveToEntity(const tString &in asEntityName, const tString &in asMoveToEntityName, const cVector3f &in avOffset=cVector3f(0)) Moves the character to a entity. Note that for non-flying characters, goal position should be the feet postion. * **asEntityName**: name of the entity with the CharMover. * **asMoveToEntityName**: the entity which center will be turn towards * **avOffset**: an offset for the move postion. ---- == CharMover_MoveToPos == void CharMover_MoveToPos(const tString &in asEntityName, const cVector3f &in avPosition) Moves the character to a position. Note that for non-flying characters, goal position should be the feet postion. * **asEntityName**: name of the entity with the CharMover. * **avPosition**: position to move to ---- == CharMover_SetSpeedState == void CharMover_SetSpeedState(const tString &in asEntityName, int alIndex) Sets the speed state of the character. * **asEntityName**: name of the entity with the CharMover. * **alIndex**: speed state index ---- == CharMover_SetUseMoveStateAnimations == void CharMover_SetUseMoveStateAnimations(const tString &in asEntityName, bool abX) If the charmover should change animations depending based on movement. * **asEntityName**: name of the entity with the CharMover. * **abX**: if charmover shouuld take care of animations ---- == CharMover_PlayAnimation == void CharMover_PlayAnimation(const tString &in asEntityName, const tString &in asAnimName, float afFadeTime=0.3f, bool abLoop=false, bool abPlayTransition=true, const tString &in asCallback="") ---- == CharMover_StopTurning == void CharMover_StopTurning(const tString &in asEntityName) Stops any turning in the charmover * **asEntityName**: name of the entity with the CharMover. ---- == CharMover_SetTurnRate == void CharMover_SetTurnRate(const tString &in asEntityName, float afMinBreakAngle, float afBreakAngleMul, float afTurnSpeedMul, float afTurnSpeedMax) Sets the turning behavior of the charmover. * **asEntityName**: name of the entity with the CharMover. * **afMinBreakAngle**: the minimum angle at which the charmover should slow down when turning. * **afBreakAngleMul**: value multiplied by the angle to calculate how much the charmover should slow down when turning. * **afTurnSpeedMul**: value multiplied by the angle to calculate how fast the charmover should turn. * **afTurnSpeedMax**: the max turn speed. ---- == CharMover_SetMaxForwardSpeed == void CharMover_SetMaxForwardSpeed(const tString &in asEntityName, float afMaxSpeed) Sets the max forward speed of the CharMover. * **asEntityName**: name of the entity with the CharMover. * **afMaxSpeed**: max forward speed to set. ---- == CharMover_SetWallAvoidanceActive == void CharMover_SetWallAvoidanceActive(const tString &in asEntityName, bool abX) Enables or disables wall avoidance on the specified CharMover. * **asEntityName**: name of the entity with the CharMover. * **abX**: the state to set. ---- == Pathfinder_MoveTo == void Pathfinder_MoveTo(const tString &in asEntityName, const cVector3f &in avPos, const tString &in asCallbackFunc, float afUpdateFreq=0, bool abExactStopAtEnd=true, const tString &in asResultCallbackFunc="") Moves an entity containing a Pathfinder component to a position. The entity message eLuxEntityMessage_EndOfPath is broadcasted when complete. * **asEntityName**: name of the entity with the pathfinder. * **avPos**: position to move to. * **asCallbackFunc**: The name of callback called when end is reach. Syntax: void Func(const tString& in asEntityName, bool abReachedEnd) * **afUpdateFreq**: The number of times per second that the path will be updated. O or below means never update. * **abExactStopAtEnd**: If the goal position should be hit exactly. * **asResultCallbackFunc**: The name of callback called when the pathfinding has been performed. Syntax: void Func(bool abSuccesful) ---- == Pathfinder_MoveToNode == void Pathfinder_MoveToNode(const tString &in asEntityName, const tString &in asNodeName, const tString &in asCallbackFunc="", float afUpdateFreq=0, bool abExactStopAtEnd=true, const tString &in asResultCallbackFunc="") Moves an entity containing a Pathfinder component to a node. The entity message eLuxEntityMessage_EndOfPath is broadcasted when complete. * **asEntityName**: name of the entity with the pathfinder. * **asNodeName**: name of the node to move to. * **asCallbackFunc**: The name of callback called when end is reach. Syntax: void Func(const tString& in asEntityName, bool abReachedEnd) * **afUpdateFreq**: The number of times per second that the path will be updated. O or below means never update. * **abExactStopAtEnd**: If the goal node should be hit exactly. * **asResultCallbackFunc**: The name of callback called when the pathfinding has been performed. Syntax: void Func(bool abSuccesful) ---- == Pathfinder_MoveToEntity == void Pathfinder_MoveToEntity(const tString &in asPathfinderName, const tString &in asEntityName, const tString &in asCallbackFunc, float afUpdateFreq=0, bool abExactStopAtEnd=true, const cVector3f &in avGoalPosOffset=cVector3f(0), const tString &in asResultCallbackFunc="") Moves an entity containing a Pathfinder component to a entity. The entity message eLuxEntityMessage_EndOfPath is broadcasted when complete. * **asPathfinderName**: name of the entity with the pathfinder. * **asEntityName**: name of the entity to move to. * **asCallbackFunc**: The name of callback called when end is reach. Syntax: void Funcconst * **afUpdateFreq**: The number of times per second that the path will be updated. O or below means never update. * **abExactStopAtEnd**: If the goal entity should be hit exactly. * **avGoalPosOffset**: if the goal pos should be offset * **asResultCallbackFunc**: The name of callback called when the pathfinding has been performed. Syntax: void Func(bool abSuccesful) ---- == Pathfinder_Stop == void Pathfinder_Stop(const tString &in asEntityName) Stops any movement. * **asEntityName**: name of the entity with the pathfinder. ---- == Pathfinder_SetEndCallback == void Pathfinder_SetEndCallback(const tString &in asEntityName, const tString &in asCallbackFunc) Sets the callback for when the pathfinder has reached its goal. * **asEntityName**: name of the entity with the pathfinder. * **asCallbackFunc**: The name of callback called when end is reach. Syntax: void Funcconst ---- == Pathfinder_IsMoving == bool Pathfinder_IsMoving(const tString &in asEntityName) Checks if the pathfinder is currently moving. * **asEntityName**: name of the entity with the pathfinder. ---- == Pathfinder_Track_Clear == void Pathfinder_Track_Clear(const tString &in asEntityName) Clears all track nodes and stops track. * **asEntityName**: name of the entity with the pathfinder. ---- == Pathfinder_Track_Add == void Pathfinder_Track_Add(const tString &in asEntityName, const tString &in asNodeName, float afMinWaitTime=0, float afMaxWaitTime=-1, const tString &in asAnimName="", bool abLoopAnim=false) Adds a track node to be followed. * **asEntityName**: name of the entity with the pathfinder. * **asNodeName**: Name of the path node to be added. * **afMinWaitTime**: minimum time before the entity moves to the next node. * **afMaxWaitTime**: maximum time before the entity moves to the next node. If <0, then the value will be same as afMinWaitTime * **asAnimName**: animation played when at node, per entity. * **abLoopAnim**: if the animtion should be looped, per entity. ---- == Pathfinder_Track_Start == void Pathfinder_Track_Start(const tString &in asEntityName, bool abLoop=false, float afUpdateFreq=1.0f, const tString &in asEndOfTrackCallback="") Starts a track * **asEntityName**: name of the entity with the pathfinder. * **abLoop**: if the path should loop * **afUpdateFreq**: the frequency at which the path is recculated * **asEndOfTrackCallback**: Callback called when path is over. Syntax: void MyFunc(const tString& in asEntityName) ---- == Pathfinder_Track_Stop == void Pathfinder_Track_Stop(const tString &in asEntityName) Stops the current track. * **asEntityName**: name of the entity with the pathfinder. ---- == BarkMachine_SetActive == void BarkMachine_SetActive(const tString &in asEntityName, bool abActive) Sets if the barkmachine is active (this will only affect random sounds) * **asEntityName**: name of the entity with the barkmachine. * **abActive**: if active or not. ---- == BarkMachine_PlayVoice == void BarkMachine_PlayVoice(const tString &in asEntityName, const tString &in asSubject, int alPrio, float afMinDistance=-1, float afMaxDistance=-1, float afMaxPlayerListeningRange=-1) Plays a voice subject as a bark * **asEntityName**: name of the entity with the barkmachine. * **asSubject**: the name of the voice subject * **alPrio**: the prio of the voice, if there is already one playing in the same scene prio must be higher for this to play. * **afMinDistance**: The distance where volume starts getting quiet. If below 0, default is used. * **afMaxDistance**: The maximum hearing range. If below 0, default is used. * **afMaxPlayerListeningRange**: The maximum that subtitles are displayed. If below 0, default is used. ---- == HeadTracker_SetActive == void HeadTracker_SetActive(const tString &in asEntityName, bool abX) Turns on and off head tracking. * **asEntityName**: name of the entity with the HeadTracker. * **abX**: if headtracking is enabled or not ---- == HeadTracker_IsActive == bool HeadTracker_IsActive(const tString &in asEntityName) If head tracking is active or not * **asEntityName**: name of the entity with the HeadTracker. ---- == HeadTracker_SetAngleOffset == void HeadTracker_SetAngleOffset(const tString &in asEntityName, float afX) Sets the offset of the headtracker angle useful if the character is not facing in the direction of the meshentity forward vector. * **asEntityName**: name of the entity with the HeadTracker. * **afX**: The angle offset, in degrees ---- == HeadTracker_SetTargetEntity == void HeadTracker_SetTargetEntity(const tString &in asEntityName, const tString &in asTargetEntityName) Sets the target of the head tracking * **asEntityName**: name of the entity with the HeadTracker. * **asTargetEntityName**: The target of the tracking ---- == NPC_SetVoiceName == void NPC_SetVoiceName(const tString &in asNpcName, const tString &in asVoiceName) Sets the voice name for an NPC. This also automatically sets the source of the voice as the npc. * **asNpcName**: name of the NPC. * **asVoiceName**: name of the voice as defined in the voicehandler file.. ---- == NPC_IsTalking == bool NPC_IsTalking(const tString &in asNpcName) Checks if the NPC is being talked to. * **asNpcName**: name of the NPC. ---- == NPC_SetCanBeTalkedTo == void NPC_SetCanBeTalkedTo(const tString &in asNpcName, bool abX) Sets if the NPC can be talked to (interacted with) * **asNpcName**: name of the NPC. Wildcard supported. * **abX**: if can be talked to. ---- == NPC_SetMainAnimation == void NPC_SetMainAnimation(const tString &in asNpcName, const tString &in asAnim, bool abPlayTransition=true, const tString &in asCallbackFunc="", float afFadeTime=0.5, bool abGlobalSpace=false) Sets and plays the main animation of the NPC. This will also turn off any movement animations. * **asNpcName**: name of the NPC. Wildcard supported. * **asAnim**: The name of the animation * **abPlayTransition**: If a transition animation should be played. * **asCallbackFunc**: name of callback function. Only used if there is a transition animation. Syntax void Func(const tString &in asEntityName, const tString &in asAnimName) * **afFadeTime**: time it takes to fade to the animation. * **abGlobalSpace**: if the animation takes place in global space ---- == NPC_PlayExtraAnimation == void NPC_PlayExtraAnimation(const tString &in asNpcName, const tString &in asAnim, float afFadeTime=0.3, const tString &in asCallbackFunc="", bool abGlobalSpace=false) Plays an extra animation for the NPC. Will return to main animation (see NPC_SetMainAnimation) when done. * **asNpcName**: name of the NPC. Wildcard supported. * **asAnim**: The name of the animation * **afFadeTime**: The time it takes to fade in the animation. * **asCallbackFunc**: name of callback function. Syntax void Func(tString &in asEntityName, tString &in asAnimName) * **abGlobalSpace**: the animation will be played in global space coordinates (?) ---- == NPC_StopAllAnimations == void NPC_StopAllAnimations(const tString &in asNpcName, float afFadeTime=0.0f) Stops all animations for the NPC. * **asNpcName**: name of the NPC. Wildcard supported. * **afFadeTime**: The time it takes to fade out. ---- == NPC_StopExtraAnimation == void NPC_StopExtraAnimation(const tString &in asNpcName, float afFadeTime=0.0f) Stops currently playing extra animation for the NPC. * **asNpcName**: name of the NPC. Wildcard supported. * **afFadeTime**: The time it takes to fade out. ---- == NPC_PlayEmotion == void NPC_PlayEmotion(const tString &in asNpcName, const tString &in asEmotion, float afDuration, float afWeight=1.0f, float afFadeTime=0.25f) Plays a face emotion for the duration * **asNpcName**: name of the NPC. Wildcard supported. * **asEmotion**: name of the emotion, "Smile/Sad/Happy/Surprised/Wink/Wondering/Angry/Worried/Scared" * **afDuration**: how long the emotion should be active * **afWeight**: how strong the emotion should be * **afFadeTime**: fade in and out time for the emotion ---- == NPC_MoveToNode == void NPC_MoveToNode(const tString &in asNpcName, const tString &in asNodeName, const tString &in asCallbackFunc) Moves the NPC to a path node. * **asNpcName**: name of the NPC. Wildcard supported. * **asNodeName**: The name of the path node. * **asCallbackFunc**: The name of callback called when end is reach. Syntax: void Func(const tString& in asEntityName, bool abReachedEnd) ---- == Critter_SetGroupEntity == void Critter_SetGroupEntity(const tString &in asCritter, const tString &in asGroupEntity) Sets the entity the critter should flock around * **asCritter**: name of the Critter. Wildcard supported. * **asGroupEntity**: The name of the group entity. ---- == Critter_AddExtraEscapeEntity == void Critter_AddExtraEscapeEntity(const tString &in asCritter, const tString &in asEscapeEntity) Adds an entity that the critter should try to avoid the same way it does with the player. (Only implemented in FishSmall right now) * **asCritter**: name of the Critter. Wildcard supported. * **asEscapeEntity**: The name of the entity to escape from ----