gwnavruntime/queries/circlearcsplinecomputationquery.h Source File

circlearcsplinecomputationquery.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: LAPA - secondary contact: NOBODY
9 #ifndef Navigation_CircleArcSplineComputationQuery_H
10 #define Navigation_CircleArcSplineComputationQuery_H
11 
14 
15 
16 namespace Kaim
17 {
18 
21 {
24 
28 
30 };
31 
34 {
35 public:
38 
39  static QueryType GetStaticType() { return TypeCircleArcSplineComputation; }
40  virtual QueryType GetType() const { return TypeCircleArcSplineComputation; }
41 
42 
43  // ---------------------------------- Functions to set up the query ----------------------------------
44 
48  void BindToDatabase(Database* database);
49 
57  void Initialize(
58  const Vec3f& startPosition, const ChannelSectionPtr& startSection,
59  const Vec3f& endPosition, const ChannelSectionPtr& endSection);
60 
61 
62  // ---------------------------------- write accessors for query parameters ----------------------------------
63 
64  void SetStartConstraint(const Vec2f& constraint) { m_startConstraint = constraint; }
65  void SetEndConstraint(const Vec2f& constraint) { m_endConstraint = constraint; }
66  void SetSplineConfig(const SplineComputationConfig& config) { m_splineConfig = config; }
67 
68  SplineComputationConfig& GetSplineConfig() { return m_splineConfig; }
69 
70 
71  // ---------------------------------- Query framework functions ----------------------------------
72 
75  virtual void Advance(WorkingMemory* workingMemory);
76 
80  void PerformQuery(WorkingMemory* workingMemory = KY_NULL);
81 
82  virtual void ReleaseWorkingMemoryOnCancelDuringProcess(WorkingMemory* workingMemory = KY_NULL);
83 
84 
85  // ---------------------------------- Accessors ----------------------------------
86 
87  const SplineComputationConfig& GetSplineConfig() const { return m_splineConfig; }
88  const Vec3f& GetStartPos() const { return m_startPosition; }
89  const Vec3f& GetEndPos() const { return m_endPosition; }
90  const ChannelSectionPtr& GetStartChannelSectionPtr() const { return m_startSection; }
91  const ChannelSectionPtr& GetEndChannelSectionPtr() const { return m_endSection; }
92 
93 
94  CircleArcSplineComputationQueryResult GetResult() const { return m_result; }
95 
96  const CircleArcSplineComputer& GetComputer() const { return m_computer; }
97  CircleArcSplineComputationResult GetComputerResult() const { return m_computerResult; }
98  KyUInt32 GetOutputCount() const { return m_computer.GetOutputCount(); }
99  const RadiusProfileCircleArcSplineComputerOutput& GetOutput(KyUInt32 index) const { return m_computer.GetOutput(index); }
100 
101 protected:
102  void SetResult(CircleArcSplineComputationQueryResult result) { m_result = result; }
103 
104 
105 protected:
106  CircleArcSplineComputer m_computer;
107 
108  // Inputs & config
109  SplineComputationConfig m_splineConfig;
110  Vec3f m_startPosition;
111  Vec3f m_endPosition;
112  ChannelSectionPtr m_startSection;
113  ChannelSectionPtr m_endSection;
114  Vec2f m_startConstraint;
115  Vec2f m_endConstraint;
116 
118  CircleArcSplineComputationResult m_computerResult;
119 
120 
121 public:
122  CircleArcSplineComputerVisualDebugConfig m_visualDebugConfig;
123 };
124 
125 } // namespace Kaim
126 
127 #endif //Navigation_CircleArcSplineComputationQuery_H
Class used to configure all VisualDebug components for CircleArcSpline computation.
Definition: circlearcsplinecomputer.h:51
Class aggregating a CircleArcSpline and the corresponding computation result.
Definition: circlearcsplinecomputer.h:33
Indicates that the query has not yet been launched.
Definition: circlearcsplinecomputationquery.h:23
CircleArcSplineComputationQueryResult
Enumerates the possible results of a CircleArcSplineComputationQuery.
Definition: circlearcsplinecomputationquery.h:20
Indicates that the computation has been canceled.
Definition: circlearcsplinecomputationquery.h:27
virtual void ReleaseWorkingMemoryOnCancelDuringProcess(WorkingMemory *workingMemory=0)
Called when a query is canceled in FlushCommands while its status is QueryInProcess to make sure that...
#define KY_NULL
Null value.
Definition: types.h:247
Base class for CircleArcSplineComputationQuery.
Definition: circlearcsplinecomputationquery.h:33
Base class for all the queries that need to be time-sliced.
Definition: iquery.h:306
The CircleArcSplineComputer failed due to an internal error (bubble array not created, string puller failed, turn list construction or optimization failed...).
Definition: circlearcsplinecomputationquery.h:26
QueryType
Enumerates all the type of query.
Definition: iquery.h:29
Indicates that the query has not yet been initialized.
Definition: circlearcsplinecomputationquery.h:22
This class is a runtime container for all NavData that represents the world from the point of view of...
Definition: database.h:64
This class defines a two-dimensional vector whose coordinates are stored using floating-point numbers...
Definition: vec2f.h:24
Inputs are invalid: startSection or endSection are invalid or not in the same Channel.
Definition: circlearcsplinecomputationquery.h:25
Indicates that a spline has been successfully computed.
Definition: circlearcsplinecomputationquery.h:29
Definition: gamekitcrowddispersion.h:20
Class used to compute a CircleArcSpline in a Channel.
Definition: circlearcsplinecomputer.h:89
CircleArcSplineComputationResult
Enumerates the CircleArcSpline computation results.
Definition: circlearcsplinecomputationresult.h:17
Indicates that the query has not yet been initialized.
Definition: iquery.h:346
virtual void Advance(WorkingMemory *workingMemory)
Performs a single iteration of the spline computation query.
void PerformQuery(WorkingMemory *workingMemory=0)
Performs the query.
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
void BindToDatabase(Database *database)
Binds the query with the specified Database, clears all the inputs and outputs and sets all other par...
Indicates that the query has not yet been launched.
Definition: iquery.h:347
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:404
This class defines a three-dimensional vector whose coordinates are stored using floating-point numbe...
Definition: vec3f.h:23