struct IAIPathAgent { };
IPathfinder.h
Intermediary and minimal interface to use the pathfinder without requiring an AI object
Fix the long function names. At the moment they collide with IAIObject base. The alternative would be to make IAIObject derive from IAIPathAgent.
virtual ~IAIPathAgent();
virtual ETriState CanTargetPointBeReached(CTargetPointRequest& request) = 0;
Can path be modified to use request.targetPoint? Results are cacheded in request.
virtual IEntity * GetPathAgentEntity() const = 0;
virtual unsigned int GetPathAgentLastNavNode() const = 0;
TODO(marcio): Remove this from the interface Most of it could be stored in the path request, except that it gets set at the start of the path request and it's used everywhere in the AISystem.
virtual const AgentMovementAbility & GetPathAgentMovementAbility() const = 0;
virtual const char * GetPathAgentName() const = 0;
virtual void GetPathAgentNavigationBlockers(NavigationBlockers & blockers, const PathfindRequest * pRequest) = 0;
This cannot easily be const, but has no side-effects
virtual float GetPathAgentPassRadius() const = 0;
virtual Vec3 GetPathAgentPos() const = 0;
virtual unsigned short GetPathAgentType() const = 0;
virtual Vec3 GetPathAgentVelocity() const = 0;
virtual class IPathFollower* GetPathFollower() const = 0;
virtual bool GetTeleportPosition(Vec3& teleportPos) const = 0;
virtual bool GetValidPositionNearby(const Vec3& proposedPosition, Vec3& adjustedPosition) const = 0;
virtual void PathEvent(SAIEVENT * pEvent) = 0;
virtual void SetPathAgentLastNavNode(unsigned int lastNavNode) = 0;
virtual void SetPathAttributeToFollow(bool bSpline) = 0;
virtual void SetPathToFollow(const char* pathName) = 0;
virtual void SetPFBlockerRadius(int blockerType, float radius) = 0;
Path finding avoids blocker type by radius.
virtual bool UseTargetPointRequest(const CTargetPointRequest& request) = 0;
??