gwnavruntime/queries/utils/basespatializedpointcollectorinaabbquery.h Source File

basespatializedpointcollectorinaabbquery.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 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 #pragma once
8 
14 
15 namespace Kaim
16 {
17 class Database;
18 class SpatializedPointCollectorContext;
19 
22 {
25 
28 
30 };
31 
34 {
35 public:
36  static QueryType GetStaticType() { return TypeSpatializedPointCollectorInAABB; }
37  virtual QueryType GetType() const { return TypeSpatializedPointCollectorInAABB; }
38  virtual void BuildQueryBlob(BaseBlobHandler* blobHandler);
39  virtual void InitFromQueryBlob(World* world, void* blob);
40  virtual Ptr<BaseBlobHandler> CreateQueryBlobHandler() { return CreateStaticQueryBlobHandler(); }
41  static Ptr<BaseBlobHandler> CreateStaticQueryBlobHandler();
42 
43 
44  // ---------------------------------- Main API Functions ----------------------------------
45 
47 
48  const Vec3f& GetStartPos() const;
49  const Box3f& GetExtentBox() const;
50  const NavTrianglePtr& GetStartTrianglePtr() const;
51  QueryDynamicOutput* GetQueryDynamicOutput() const;
52  const WorldIntegerPos& GetStartIntegerPos() const;
53 
54  const PositionSpatializationRange& GetPositionSpatializationRange() const;
55 
56  Box3f ComputeAABB() const;
57 
58 
59 protected: // internal
62 
63  void BindToDatabase(Database* database);
64  void Initialize(const Vec3f& startPos, const Box3f& extentBox);
65 
66  void SetStartTrianglePtr(const NavTrianglePtr& startTrianglePtr);
67  void SetPositionSpatializationRange(const PositionSpatializationRange& positionSpatializationRange);
68  void SetStartIntegerPos(const WorldIntegerPos& startIntegerPos);
69  void SetResult(SpatializedPointCollectorInAABBQueryResult result);
70  void SetQueryDynamicOutput(QueryDynamicOutput* queryDynamicOutput);
71 
72  KyResult PrepareWithInputCoordPos(WorkingMemory* workingMemory);
73 
74  KyResult OpenNode(SpatializedPointCollectorContext* collectorContext, const NavFloorRawPtr& navFloorRawPtr);
75  KyResult OpenNode(SpatializedPointCollectorContext* collectorContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
76 
77  bool ShouldOpenNavFloorNode(SpatializedPointCollectorContext* collectorContext, const NavFloorRawPtr& navFloorRawPtr);
78  bool ShouldOpenNavGraphEdgeNode(const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
79 
80  // NavFloor -> Neighbor NavFloors
81  KyResult TraverseNeighborNavFloors(SpatializedPointCollectorContext* collectorContext, const NavFloorRawPtr& navFloorRawPtr);
82 
83  // NavGraphEdge -> Neighbor NavFloor
84  KyResult TraverseNeighborNavFloors(SpatializedPointCollectorContext* collectorContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
85 
86  // NavFloor -> Neighbor navGraphEdges
87  KyResult TraverseNeighborNavGraphEdges(SpatializedPointCollectorContext* collectorContext, const NavFloorRawPtr& navFloorRawPtr);
88 
89  // NavGraphEdge -> Neighbor navGraphEdges
90  KyResult TraverseNeighborNavGraphEdges(SpatializedPointCollectorContext* collectorContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
91 
92  KyResult ProcessNeighborNavFloor(SpatializedPointCollectorContext* collectorContext, const NavFloorRawPtr& navFloorRawPtr);
93  KyResult ProcessNeighborNavGraphEdge(SpatializedPointCollectorContext* collectorContext, const NavGraphEdgeRawPtr& navGraphEdgeRawPtr);
94 
95  KyResult InitDataStructure(SpatializedPointCollectorContext* collectorContext, WorkingMemory* workingMemory);
96 
97 protected:
98  Box2LL m_aabb2d;
99 
101 
102  WorldIntegerPos m_startIntegerPos; // For internal use. Do not modify.
103 
105 
109 
111 
113 
118  Ptr<QueryDynamicOutput> m_queryDynamicOutput;
119 };
120 
121 }
122 
124 
125 
Indicates that insufficient working memory caused the query to stop.
Definition: basespatializedpointcollectorinaabbquery.h:27
virtual QueryType GetType() const
Get query type.
Definition: basespatializedpointcollectorinaabbquery.h:37
SpatializedPointCollectorInAABBQueryResult m_result
Updated during processing to indicate the result of the query.
Definition: basespatializedpointcollectorinaabbquery.h:112
Vertical range (above, below) that represents the altitude tolerance for a position to be inside the ...
Definition: positionspatializationrange.h:17
Base class for all the queries that do not need to be time-sliced.
Definition: iquery.h:245
SpatializedPointCollectorInAABBQueryResult
Enumerates the possible results of a SpatializedPointCollectorInAABBQuery.
Definition: basespatializedpointcollectorinaabbquery.h:21
Indicates that a NavMesh triangle could not be found for the starting point.
Definition: basespatializedpointcollectorinaabbquery.h:26
NavTrianglePtr m_startTrianglePtr
The NavMesh triangle that corresponds to m_startPos3f.
Definition: basespatializedpointcollectorinaabbquery.h:108
This class is a runtime container for Autodesk Navigation WorldElements such as NavData, Bots, BoxObstacles, TagVolumes...
Definition: world.h:52
Ptr< QueryDynamicOutput > m_queryDynamicOutput
A ref-counted Ptr to a QueryDynamicOutput instance, used to store the collected SpatializedPoint.
Definition: basespatializedpointcollectorinaabbquery.h:118
BaseSpatializedPointCollectorInAABBQuery()
Computes the actual AABB used by this query to collect the SpatializedPoints.
Definition: basespatializedpointcollectorinaabbquery.cpp:19
QueryType
Enumerates all the type of query.
Definition: iquery.h:25
PositionSpatializationRange m_positionSpatializationRange
The altitude range around the position to use when determining m_startTrianglePtr from the m_startPos...
Definition: basespatializedpointcollectorinaabbquery.h:110
3d axis aligned box of 32bits floating points
Definition: box3f.h:16
Vec3f m_startPos3f
The starting point of the traversal.
Definition: basespatializedpointcollectorinaabbquery.h:104
Box3f m_extentBox
The Axis Aligned Bounding Box within which to collect the spatialized elements.
Definition: basespatializedpointcollectorinaabbquery.h:100
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Base class for SpatializedPointCollectorInAABBQuery.
Definition: basespatializedpointcollectorinaabbquery.h:33
Indicates that the query was completed successfully.
Definition: basespatializedpointcollectorinaabbquery.h:29
Indicates that the query has not yet been initialized.
Definition: iquery.h:295
Utilities for dealing with NavData coordinates, which are expressed in a world space based on integer...
Definition: worldintegerpos.h:19
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtriangleptr.h:17
Indicates that the query has not yet been launched.
Definition: basespatializedpointcollectorinaabbquery.h:24
Indicates that the query has not yet been launched.
Definition: iquery.h:296
Indicates that the query has not yet been initialized.
Definition: basespatializedpointcollectorinaabbquery.h:23
void Initialize()
Should be called by the derived class prior to perform the query or to push it in a QueryQueue...
Definition: iquery.h:220
3d vector using 32bits floating points.
Definition: vec3f.h:16