gwnavruntime/queries/utils/basediskcollisionquery.h Source File

basediskcollisionquery.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 
13 
14 namespace Kaim
15 {
16 
19 {
22 
28 
30 };
31 
34 {
35 public:
36  static QueryType GetStaticType() { return TypeDiskCollision; }
37  virtual QueryType GetType() const { return TypeDiskCollision; }
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  // ------------------------------ Setters -----------------------------
44 
45  BaseDiskCollisionQuery();
46  ~BaseDiskCollisionQuery() {}
47 
51  void BindToDatabase(Database* database);
52 
55  void Initialize(const Vec3f& center, KyFloat32 radius);
56 
60  void SetCenterTrianglePtr(const NavTrianglePtr& centerTrianglePtr) { m_centerTrianglePtr = centerTrianglePtr; }
61 
64  void SetPositionSpatializationRange(const PositionSpatializationRange& positionSpatializationRange) { m_positionSpatializationRange = positionSpatializationRange; }
65 
68  void SetDynamicOutputMode(DynamicOutputMode dynamicOutputMode) { m_dynamicOutputMode = dynamicOutputMode; }
69 
72  void SetQueryDynamicOutput(QueryDynamicOutput* queryDynamicOutput) { m_queryDynamicOutput = queryDynamicOutput; }
73 
74  // ------------------------------ Getters -----------------------------
75 
76  DiskCollisionQueryResult GetResult() const { return m_result; }
77  DynamicOutputMode GetDynamicOutputMode() const { return m_dynamicOutputMode; }
78  const Vec3f& GetCenterPos() const { return m_centerPos3f; }
79  const NavTrianglePtr& GetCenterTrianglePtr() const { return m_centerTrianglePtr; }
80  KyFloat32 GetRadius() const { return m_radius; }
81  QueryDynamicOutput* GetQueryDynamicOutput() const { return m_queryDynamicOutput; }
82  const WorldIntegerPos& GetCenterIntegerPos() const { return m_centerIntegerPos; }
83  const PositionSpatializationRange& GetPositionSpatializationRange() const { return m_positionSpatializationRange; }
84 
85 public: // internal
86  void SetCenterIntegerPos(const WorldIntegerPos& centerIntegerPos) { m_centerIntegerPos = centerIntegerPos; }
87  void SetResult(DiskCollisionQueryResult result) { m_result = result; }
88  DiskCollisionQueryResult ConvertTraversalResultToDiskCollisionResult(TraversalResult traversalRC);
89 
90 protected:
91  WorldIntegerPos m_centerIntegerPos;
92 
94 
97 
99 
102 
104 
106 
113  Ptr<QueryDynamicOutput> m_queryDynamicOutput;
114 };
115 }
116 
117 
Vec3f m_centerPos3f
The position of the center of the disk.
Definition: basediskcollisionquery.h:93
Indicates that an unknown error occurred during the query processing.
Definition: basediskcollisionquery.h:27
void BindToDatabase(Database *database)
Binds the query with the specified Database, clears all the inputs and outputs and sets all other par...
Definition: basediskcollisionquery.cpp:42
Indicates that the center point lies inside the NavMesh, but that the radius collides with a border o...
Definition: basediskcollisionquery.h:25
This class gather the data encountered along some query process.
Definition: querydynamicoutput.h:57
Vertical range (above, below) that represents the altitude tolerance for a position to be inside the ...
Definition: positionspatializationrange.h:17
Ptr< QueryDynamicOutput > m_queryDynamicOutput
A ref-counted Ptr to a QueryDynamicOutput instance, used to store the data encountered during the que...
Definition: basediskcollisionquery.h:113
Base class for all the queries that do not need to be time-sliced.
Definition: iquery.h:245
Indicates that the center point lies outside the navigable area of the NavMesh.
Definition: basediskcollisionquery.h:23
Indicates that the disk fits inside the navigable area of the NavMesh.
Definition: basediskcollisionquery.h:29
Base class for DiskCollisionQuery.
Definition: basediskcollisionquery.h:33
This class is a runtime container for Autodesk Navigation WorldElements such as NavData, Bots, BoxObstacles, TagVolumes...
Definition: world.h:52
DynamicOutputMode
Enumerates possible ways of storing collected data by a query in a QueryDynamicOutput object...
Definition: querydynamicoutput.h:21
DiskCollisionQueryResult
Enumerates the possible results of a DiskCollisionQuery.
Definition: basediskcollisionquery.h:18
PositionSpatializationRange m_positionSpatializationRange
The altitude range around the position used when determining m_centerTrianglePtr from the m_centerPos...
Definition: basediskcollisionquery.h:101
NavTrianglePtr m_centerTrianglePtr
The NavMesh triangle that corresponds to m_centerPos3f. Can be set as an input, or retrieved as an ou...
Definition: basediskcollisionquery.h:96
void SetCenterTrianglePtr(const NavTrianglePtr &centerTrianglePtr)
The NavMesh triangle that corresponds to m_centerPos3f.
Definition: basediskcollisionquery.h:60
QueryType
Enumerates all the type of query.
Definition: iquery.h:25
void SetDynamicOutputMode(DynamicOutputMode dynamicOutputMode)
Write accessor for m_dynamicOutputMode.
Definition: basediskcollisionquery.h:68
Indicates that insufficient working memory caused the query to stop.
Definition: basediskcollisionquery.h:26
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Indicates that the query has not yet been initialized.
Definition: iquery.h:295
void SetPositionSpatializationRange(const PositionSpatializationRange &positionSpatializationRange)
Write accessor for m_positionSpatializationRange.
Definition: basediskcollisionquery.h:64
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtriangleptr.h:17
void SetQueryDynamicOutput(QueryDynamicOutput *queryDynamicOutput)
Write accessor for m_dynamicOutputMode.
Definition: basediskcollisionquery.h:72
DynamicOutputMode m_dynamicOutputMode
Specifies the type of data stored in m_queryDynamicOutput.
Definition: basediskcollisionquery.h:105
Indicates that the query has not yet been launched.
Definition: iquery.h:296
virtual QueryType GetType() const
Get query type.
Definition: basediskcollisionquery.h:37
Indicates that the query has not yet been launched.
Definition: basediskcollisionquery.h:21
Indicates that the NavTag at the center point was forbidden.
Definition: basediskcollisionquery.h:24
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
KyFloat32 m_radius
The radius of the disk.
Definition: basediskcollisionquery.h:98
float KyFloat32
float
Definition: types.h:32
3d vector using 32bits floating points.
Definition: vec3f.h:16
Indicates that the query has not yet been initialized.
Definition: basediskcollisionquery.h:20
DiskCollisionQueryResult m_result
Updated during processing to indicate the result of the query.
Definition: basediskcollisionquery.h:103