9 #ifndef Navigation_AsyncQueryDispatcher_H
10 #define Navigation_AsyncQueryDispatcher_H
25 AsyncQueryDispatchId_Default = 0,
26 AsyncQueryDispatchId_PathFinder = 1,
27 AsyncQueryDispatchId_DynamicNavMesh = 2,
28 AsyncQueryDispatchId_PathFollower = 3,
30 AsyncQueryDispatchId_Count
34 enum AsyncQueryDispatcherType
36 AsyncQueryDispatcherType_Unknown = 0,
37 AsyncQueryDispatcherType_Default,
38 AsyncQueryDispatcherType_FirstCustom
43 class IAsyncQueryDispatcher :
public RefCountBase<IAsyncQueryDispatcher, MemStat_QuerySystem>
48 void SetWorld(
World* world) { m_world = world; }
49 World* GetWorld() {
return m_world; }
51 virtual void AddQueryQueuesToWorld() = 0;
52 virtual void RemoveQueryQueuesFromWorld() = 0;
63 class AsyncQueryDispatcherInitConfig
67 AsyncQueryDispatcherInitConfig()
68 : m_createWorkerQueryQueueArray(false)
69 , m_useWorkerQueryQueueByDefault(false)
70 , m_usePathFinderQueryQueue(true)
71 , m_useDynamicNavMeshQueryQueue(true)
72 , m_usePathFollowerQueryQueue(true)
75 bool m_createWorkerQueryQueueArray;
76 bool m_useWorkerQueryQueueByDefault;
78 bool m_usePathFinderQueryQueue;
79 bool m_useDynamicNavMeshQueryQueue;
80 bool m_usePathFollowerQueryQueue;
82 QueryQueueConfig m_defaultQueryQueueConfig;
83 QueryQueueConfig m_pathFinderQueryQueueConfig;
84 QueryQueueConfig m_dynamicNavMeshQueryQueueConfig;
85 QueryQueueConfig m_pathFollowerQueryQueueConfig;
89 class AsyncQueryDispatcher :
public IAsyncQueryDispatcher
92 AsyncQueryDispatcher(
const AsyncQueryDispatcherInitConfig& initConfig);
96 virtual void AddQueryQueuesToWorld();
97 virtual void RemoveQueryQueuesFromWorld();
102 void UseWorker(
bool useWorkerQueryQueue) { m_useWorkerQueryQueue = useWorkerQueryQueue; }
105 void InitQueryQueueArray(
QueryQueueArray* queryQueueArray, QueryQueueArrayProcess queryQueueArrayProcessThread);
107 void RemoveQueryQueuesFromWorldImpl();
110 AsyncQueryDispatcherInitConfig m_initConfig;
111 Ptr<QueryQueueArray> m_mainQueryQueueArray;
112 Ptr<QueryQueueArray> m_workerQueryQueueArray;
113 bool m_useWorkerQueryQueue;
This class is the world element that represent an active character in Gameware Navigation.
Definition: bot.h:150
AsyncQueryDispatchId
Typically there is one QueryQueue for each AsyncQueryDispatchId.
Definition: asyncquerydispatcher.h:23
Default implementation of IAsyncQueryDispatcher.
Definition: asyncquerydispatcher.h:93
QueryQueueArray processes queries in an asynchronous, time-sliced way.
Definition: queryqueuearray.h:38
QueryQueue processes queries in an asynchronous, time-sliced way, within a QueryQueueArray.
Definition: queryqueue.h:79
#define KY_NULL
Null value.
Definition: types.h:247
This class is a runtime container for Gameware Navigation WorldElements such as NavData, Bots, BoxObstacles, TagVolumes...
Definition: world.h:54
Definition: gamekitcrowddispersion.h:20
World::PushAsyncQuery(IQuery* query) pushes the Query in the QueryQueue.
Definition: asyncquerydispatcher.h:44
Abstract class for all queries.
Definition: iquery.h:133