gwnavruntime/queries/utils/basespatializedpointcollectorinaabbquery.h Source File

basespatializedpointcollectorinaabbquery.h
Go to the documentation of this file.
1 /*
2 * Copyright 2015 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 
8 // ---------- Primary contact: JUBA - secondary contact: NOBODY
9 #ifndef Navigation_BaseSpatializedPointCollectorInAABBQuery_H
10 #define Navigation_BaseSpatializedPointCollectorInAABBQuery_H
11 
13 
18 
19 
20 namespace Kaim
21 {
22 class Database;
23 class SpatializedPointCollectorContext;
24 
27 {
30 
33 
35 };
36 
39 {
40 public:
41  static QueryType GetStaticType() { return TypeSpatializedPointCollectorInAABB; }
42  virtual QueryType GetType() const { return TypeSpatializedPointCollectorInAABB; }
43  virtual void BuildQueryBlob(BaseBlobHandler* blobHandler);
44  virtual void InitFromQueryBlob(World* world, void* blob);
45  virtual Ptr<BaseBlobHandler> CreateQueryBlobHandler() { return CreateStaticQueryBlobHandler(); }
46  static Ptr<BaseBlobHandler> CreateStaticQueryBlobHandler();
47 
48 
49  // ---------------------------------- Main API Functions ----------------------------------
50 
52 
53  const Vec3f& GetStartPos() const;
54  const Box3f& GetExtentBox() const;
55  const NavTrianglePtr& GetStartTrianglePtr() const;
56  QueryDynamicOutput* GetQueryDynamicOutput() const;
57  const WorldIntegerPos& GetStartIntegerPos() const;
58 
59  const PositionSpatializationRange& GetPositionSpatializationRange() const;
60 
61  Box3f ComputeAABB() const;
62 
63 
64 protected: // internal
67 
68  void BindToDatabase(Database* database);
69  void Initialize(const Vec3f& startPos, const Box3f& extentBox);
70 
71  void SetStartTrianglePtr(const NavTrianglePtr& startTrianglePtr);
72  void SetPositionSpatializationRange(const PositionSpatializationRange& positionSpatializationRange);
73  void SetStartIntegerPos(const WorldIntegerPos& startIntegerPos);
74  void SetResult(SpatializedPointCollectorInAABBQueryResult result);
75  void SetQueryDynamicOutput(QueryDynamicOutput* queryDynamicOutput);
76 
77  KyResult PrepareWithInputCoordPos(WorkingMemory* workingMemory);
78 
79  KyResult OpenNode(SpatializedPointCollectorContext* traversalContext, const NavFloorRawPtr& navFloorRawPtr);
80  KyResult OpenNode(SpatializedPointCollectorContext* traversalContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
81 
82  bool ShouldOpenNavFloorNode(const NavFloorRawPtr& navFloorRawPtr);
83  bool ShouldOpenNavGraphEdgeNode(const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
84 
85  // NavFloor -> Neighbor NavFloors
86  KyResult TraverseNeighborNavFloors(SpatializedPointCollectorContext* traversalContext, const NavFloorRawPtr& navFloorRawPtr);
87 
88  // NavGraphEdge -> Neighbor NavFloor
89  KyResult TraverseNeighborNavFloors(SpatializedPointCollectorContext* traversalContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
90 
91  // NavFloor -> Neighbor navGraphEdges
92  KyResult TraverseNeighborNavGraphEdges(SpatializedPointCollectorContext* traversalContext, const NavFloorRawPtr& navFloorRawPtr);
93 
94  // NavGraphEdge -> Neighbor navGraphEdges
95  KyResult TraverseNeighborNavGraphEdges(SpatializedPointCollectorContext* traversalContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
96 
97  KyResult ProcessNeighborNavFloor(SpatializedPointCollectorContext* traversalContext, const NavFloorRawPtr& navFloorRawPtr);
98  KyResult ProcessNeighborNavGraphEdge(SpatializedPointCollectorContext* traversalContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
99 
100  KyResult InitDataStructure(SpatializedPointCollectorContext* traversalContext, WorkingMemory* workingMemory);
101 
102 protected:
103  Box2LL m_aabb2d;
104 
106 
107  WorldIntegerPos m_startIntegerPos; // For internal use. Do not modify.
108 
110 
114 
115  PositionSpatializationRange m_positionSpatializationRange;
118 
123  Ptr<QueryDynamicOutput> m_queryDynamicOutput;
124 };
125 
126 }
127 
129 
130 #endif // Navigation_BaseSpatializedPointCollectorInAABBQuery_H
Indicates that insufficient working memory caused the query to stop.
Definition: basespatializedpointcollectorinaabbquery.h:32
This class gather the data encountered along some query process.
Definition: querydynamicoutput.h:61
SpatializedPointCollectorInAABBQueryResult m_result
Updated during processing to indicate the result of the query.
Definition: basespatializedpointcollectorinaabbquery.h:124
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
Base class for all the queries that do not need to be time-sliced.
Definition: iquery.h:289
SpatializedPointCollectorInAABBQueryResult
Enumerates the possible results of a SpatializedPointCollectorInAABBQuery.
Definition: basespatializedpointcollectorinaabbquery.h:26
Indicates that a NavMesh triangle could not be found for the starting point.
Definition: basespatializedpointcollectorinaabbquery.h:31
NavTrianglePtr m_startTrianglePtr
The NavMesh triangle that corresponds to m_startPos3f.
Definition: basespatializedpointcollectorinaabbquery.h:120
Each instance of this class uniquely identifies a single NavGraphEdge in a NavGraph.
Definition: navgraphedgerawptr.h:33
This class is a runtime container for Gameware Navigation WorldElements such as NavData, Bots, BoxObstacles, TagVolumes...
Definition: world.h:54
Ptr< QueryDynamicOutput > m_queryDynamicOutput
A ref-counted Ptr to a QueryDynamicOutput instance, used to store the collected SpatializedPoint.
Definition: basespatializedpointcollectorinaabbquery.h:131
BaseSpatializedPointCollectorInAABBQuery()
Computes the actual AABB used by this query to collect the SpatializedPoints.
QueryType
Enumerates all the type of query.
Definition: iquery.h:29
PositionSpatializationRange m_positionSpatializationRange
The altitude range around the position to use when determining m_startTrianglePtr from the m_startPos...
Definition: basespatializedpointcollectorinaabbquery.h:122
This class represents a three-dimensional axis-aligned bounding box whose dimensions are stored using...
Definition: box3f.h:25
This class is a runtime container for all NavData that represents the world from the point of view of...
Definition: database.h:64
Vec3f m_startPos3f
The starting point of the traversal.
Definition: basespatializedpointcollectorinaabbquery.h:116
Box3f m_extentBox
The Axis Aligned Bounding Box within which to collect the spatialized elements.
Definition: basespatializedpointcollectorinaabbquery.h:112
Definition: gamekitcrowddispersion.h:20
Base class for SpatializedPointCollectorInAABBQuery.
Definition: basespatializedpointcollectorinaabbquery.h:38
Indicates that the query was completed successfully.
Definition: basespatializedpointcollectorinaabbquery.h:34
Indicates that the query has not yet been initialized.
Definition: iquery.h:346
Utilities for dealing with NavData coordinates, which are expressed in a world space based on integer...
Definition: worldintegerpos.h:21
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtriangleptr.h:22
Indicates that the query has not yet been launched.
Definition: basespatializedpointcollectorinaabbquery.h:29
Indicates that the query has not yet been launched.
Definition: iquery.h:347
Indicates that the query has not yet been initialized.
Definition: basespatializedpointcollectorinaabbquery.h:28
void Initialize()
Should be called by the derived class before trying to perform the query or to push it in a QueryQueu...
Definition: iquery.h:372
Each instance of this class also maintains a count of the number of elements (or grid cells) containe...
Definition: box2ll.h:24
This class defines a three-dimensional vector whose coordinates are stored using floating-point numbe...
Definition: vec3f.h:23
Each instance of this class uniquely identifies a single NavFloor.
Definition: navfloorrawptr.h:30