gwnavruntime/queries/segmentcastquery.h Source File

segmentcastquery.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 
8 #pragma once
9 
15 
16 namespace Kaim
17 {
18 
39 template <class TraverseLogic>
41 {
42 public:
43  // ------------------------------ Functions -----------------------------
44 
46  virtual ~SegmentCastQuery() {}
47 
48  // ---------------------------------- Functions to set up the query ----------------------------------
49 
53  void BindToDatabase(Database* database);
54 
62  void Initialize(const Vec3f& startPos, KyFloat32 radius, const Vec2f& normalizedDir2d, KyFloat32 maxDist);
63 
64  // ---------------------------------- write accessors for query inputs ----------------------------------
65 
69  void SetStartTrianglePtr(const NavTrianglePtr& startTrianglePtr);
70 
73  void SetQueryDynamicOutput(QueryDynamicOutput* queryDynamicOutput);
74 
75  // ---------------------------------- write accessors for query parameters ----------------------------------
76 
79  void SetPositionSpatializationRange(const PositionSpatializationRange& positionSpatializationRange);
80 
83  void SetSafetyDist(KyFloat32 safetyDist);
84 
87  void SetDynamicOutputMode(DynamicOutputMode savingMode);
88 
89  // ---------------------------------- Query framework functions ----------------------------------
90 
91  virtual void Advance(WorkingMemory* workingMemory);
92 
94  void PerformQuery(WorkingMemory* workingMemory = nullptr);
95 
96  // ---------------------------------- Accessors ----------------------------------
97 
98  SegmentCastQueryResult GetResult() const;
99  const Vec3f& GetStartPos() const;
100  const Vec3f& GetCollisionPos() const;
101  const Vec3f& GetArrivalPos() const;
102  const Vec2f& GetNormalizedDir2d() const;
103  const NavTrianglePtr& GetStartTrianglePtr() const;
104  const NavTrianglePtr& GetArrivalTrianglePtr() const;
105  const NavHalfEdgePtr& GetCollisionNavHalfEdgePtr() const;
106  KyFloat32 GetRadius() const;
107  KyFloat32 GetMaxDist() const;
108  KyFloat32 GetSafetyDist() const;
109  DynamicOutputMode GetDynamicOutputMode() const;
110  QueryDynamicOutput* GetQueryDynamicOutput() const;
111 
112  const PositionSpatializationRange& GetPositionSpatializationRange() const;
113 
114 public: // internal
115  void PerformQueryWithInputCoordPos(WorkingMemory* workingMemory);
116  void SetStartIntegerPos(const WorldIntegerPos& startIntegerPos);
117  const WorldIntegerPos& GetStartIntegerPos() const;
118  const WorldIntegerPos& GetArrivalIntegerPos() const;
119 };
120 
121 }
122 
124 
125 
void SetDynamicOutputMode(DynamicOutputMode savingMode)
Write accessor for m_dynamicOutputMode.
Definition: segmentcastquery.inl:32
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
void SetQueryDynamicOutput(QueryDynamicOutput *queryDynamicOutput)
Write accessor for m_queryDynamicOutput.
Definition: segmentcastquery.inl:34
DynamicOutputMode
Enumerates possible ways of storing collected data by a query in a QueryDynamicOutput object...
Definition: querydynamicoutput.h:21
SegmentCastQueryResult
Enumerates the possible results of a SegmentCastQuery.
Definition: basesegmentcastquery.h:21
virtual void Advance(WorkingMemory *workingMemory)
This function is called by the QueryQueue to process one step on the query.
Definition: segmentcastquery.inl:77
This class is a runtime container for all NavData that represents the world from the point of view of...
Definition: database.h:57
2d vector using KyFloat32.
Definition: vec2f.h:18
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
The SegmentCastQuery class casts a line segment in a given direction, and records any collisions it d...
Definition: segmentcastquery.h:40
void SetStartTrianglePtr(const NavTrianglePtr &startTrianglePtr)
The NavMesh triangle that corresponds to m_startPos3f.
Definition: segmentcastquery.inl:26
Utilities for dealing with NavData coordinates, which are expressed in a world space based on integer...
Definition: worldintegerpos.h:19
void PerformQuery(WorkingMemory *workingMemory=nullptr)
If workingMemory param is nullptr, m_database.GetWorkingMemory() will be used.
Definition: segmentcastquery.inl:84
Each instance of this class uniquely identifies a single NavHalfEdge in a NavFloor.
Definition: navhalfedgeptr.h:16
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtriangleptr.h:17
Base class for SegmentCastQuery.
Definition: basesegmentcastquery.h:39
void BindToDatabase(Database *database)
Binds the query with the specified Database, clears all the inputs and outputs and sets all other par...
Definition: segmentcastquery.inl:14
void SetSafetyDist(KyFloat32 safetyDist)
Write accessor for m_safetyDist.
Definition: segmentcastquery.inl:30
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
void SetPositionSpatializationRange(const PositionSpatializationRange &positionSpatializationRange)
Write accessor for m_positionSpatializationRange.
Definition: segmentcastquery.inl:39
float KyFloat32
float
Definition: types.h:32
3d vector using 32bits floating points.
Definition: vec3f.h:16