gwnavruntime/queries/utils/basefindfirstvisiblepositiononpathquery.h Source File

basefindfirstvisiblepositiononpathquery.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 
13 
14 
15 namespace Kaim
16 {
17 
20 {
23 
29 
31 };
32 
35 {
36 public:
37  static QueryType GetStaticType() { return TypeFindFirstVisiblePositionOnPath; }
38  virtual QueryType GetType() const { return TypeFindFirstVisiblePositionOnPath; }
39  virtual void BuildQueryBlob(BaseBlobHandler* blobHandler);
40  virtual void InitFromQueryBlob(World* world, void* blob);
41  virtual Ptr<BaseBlobHandler> CreateQueryBlobHandler() { return CreateStaticQueryBlobHandler(); }
42  static Ptr<BaseBlobHandler> CreateStaticQueryBlobHandler();
43 
44 
45  // ---------------------------------- Main API Functions ----------------------------------
46 
48  const PositionOnPath& GetStartPositionOnPath() const;
49  const PositionOnPath& GetEndPositionOnPath() const;
50  const Vec3f& GetVisibilityStartPoint() const;
51  const NavTrianglePtr& GetVisibilityStartTrianglePtr() const;
52  KyFloat32 GetSamplingDistance() const;
53  RayCanGoMarginMode GetRayCanGoMarginMode() const;
54  KyFloat32 GetCostToVisiblePositionOnPath() const;
55  const PositionOnPath& GetFirstVisiblePositionOnPath() const;
56 
57 protected:
58  enum CandidateValidationResult
59  {
60  ContinueSampling,
61  StopSampling
62  };
63 
64  BaseFindFirstVisiblePositionOnPathQuery();
65  virtual ~BaseFindFirstVisiblePositionOnPathQuery() {}
66 
67  void BindToDatabase(Database* database);
68  void Initialize(const PositionOnPath& startPositionOnPath, const PositionOnPath& endPositionOnPath, const Vec3f& visibilityStartPoint);
69 
70  void SetVisibilityStartTrianglePtr(const NavTrianglePtr& startTrianglePtr);
71  void SetSamplingDistance(KyFloat32 samplingDistance);
72  void SetRayCanGoMarginMode(RayCanGoMarginMode rayCanGoMarginMode);
73  void SetResult(FindFirstVisiblePositionOnPathQueryResult result);
74 
75 protected:
78 
81 
83 
84  KyFloat32 m_samplingDistance;
85 
88  KyFloat32 m_costToVisibleTargetOnPath;
89 };
90 
91 } // namespace Kaim
92 
94 
95 
96 
97 
FindFirstVisiblePositionOnPathQueryResult
Enumerates the possible results of a FindFirstVisiblePositionOnPathQuery.
Definition: basefindfirstvisiblepositiononpathquery.h:19
Base class for FindFirstVisiblePositionOnPathQuery.
Definition: basefindfirstvisiblepositiononpathquery.h:34
This class aggregates all necessary information about a position on a Path.
Definition: positiononpath.h:29
Indicates that a NavMesh triangle has been found for visibilityStartPoint, but its NavTag is not cons...
Definition: basefindfirstvisiblepositiononpathquery.h:25
PositionOnPath m_endPositionOnPath
The end point of the PositionOnPath query on the Path.
Definition: basefindfirstvisiblepositiononpathquery.h:77
Base class for all the queries that do not need to be time-sliced.
Definition: iquery.h:245
Vec3f m_visibilityStartPos3f
The visibility check starting position.
Definition: basefindfirstvisiblepositiononpathquery.h:79
FindFirstVisiblePositionOnPathQueryResult m_result
Updated during processing to indicate the result of the query.
Definition: basefindfirstvisiblepositiononpathquery.h:86
This class is a runtime container for Autodesk Navigation WorldElements such as NavData, Bots, BoxObstacles, TagVolumes...
Definition: world.h:52
QueryType
Enumerates all the type of query.
Definition: iquery.h:25
Indicates that none of the PositionOnPath locations sampled between startPositionOnPath and endPositi...
Definition: basefindfirstvisiblepositiononpathquery.h:26
RayCanGoMarginMode
Defines the different mode for the NavMesh border margin to be used in RayCanGo queries.
Definition: database.h:37
Indicates the query has not yet been initialized.
Definition: basefindfirstvisiblepositiononpathquery.h:21
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Indicates that the query can pass in a straight line from start to end point without a collision...
Definition: basefindfirstvisiblepositiononpathquery.h:30
Indicates the query has not yet been launched.
Definition: basefindfirstvisiblepositiononpathquery.h:22
Indicates that an unknown error occurred during the query processing.
Definition: basefindfirstvisiblepositiononpathquery.h:28
RayCanGoMarginMode m_rayCanGoMarginMode
The margin mode to be used in ray can go queries.
Definition: basefindfirstvisiblepositiononpathquery.h:82
NavTrianglePtr m_visibilityStartTrianglePtr
The NavMesh triangle that corresponds to m_visibilityStartPos3f. Can be set as an input...
Definition: basefindfirstvisiblepositiononpathquery.h:80
Indicates that the query has not yet been initialized.
Definition: iquery.h:295
virtual QueryType GetType() const
Get query type.
Definition: basefindfirstvisiblepositiononpathquery.h:38
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: iquery.h:296
Indicates that insufficient memory was available to store crossed triangles or sub-sections, and the query failed as a result.
Definition: basefindfirstvisiblepositiononpathquery.h:27
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
Indicates that a NavMesh triangle could not be found for the visibilityStartPoint.
Definition: basefindfirstvisiblepositiononpathquery.h:24
PositionOnPath m_startPositionOnPath
The start point of the PositionOnPath query on the Path.
Definition: basefindfirstvisiblepositiononpathquery.h:76
PositionOnPath m_firstVisiblePositionOnPath
Updated during processing to indicate the first visible PositionOnPath found.
Definition: basefindfirstvisiblepositiononpathquery.h:87
float KyFloat32
float
Definition: types.h:32
3d vector using 32bits floating points.
Definition: vec3f.h:16