gwnavruntime/queries/circlearcsplinecomputationquery.h Source File

circlearcsplinecomputationquery.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 
11 
12 namespace Kaim
13 {
14 
17 {
20 
24 
26 };
27 
30 {
31 public:
34 
35  static QueryType GetStaticType() { return TypeCircleArcSplineComputation; }
36  virtual QueryType GetType() const { return TypeCircleArcSplineComputation; }
37 
38 
39  // ---------------------------------- Functions to set up the query ----------------------------------
40 
44  void BindToDatabase(Database* database);
45 
53  void Initialize(
54  const Vec3f& startPosition, const ChannelSectionPtr& startSection,
55  const Vec3f& endPosition, const ChannelSectionPtr& endSection);
56 
57 
58  // ---------------------------------- write accessors for query parameters ----------------------------------
59 
60  void SetStartConstraint(const Vec2f& constraint) { m_startConstraint = constraint; }
61  void SetEndConstraint(const Vec2f& constraint) { m_endConstraint = constraint; }
62  void SetSplineConfig(const SplineComputationConfig& config) { m_splineConfig = config; }
63 
64  SplineComputationConfig& GetSplineConfig() { return m_splineConfig; }
65 
66 
67  // ---------------------------------- Query framework functions ----------------------------------
68 
71  virtual void Advance(WorkingMemory* workingMemory);
72 
74  void PerformQuery(WorkingMemory* workingMemory = nullptr);
75 
76  virtual void ReleaseWorkingMemoryOnCancelDuringProcess(WorkingMemory* workingMemory = nullptr);
77 
78 
79  // ---------------------------------- Accessors ----------------------------------
80 
81  const SplineComputationConfig& GetSplineConfig() const { return m_splineConfig; }
82  const Vec3f& GetStartPos() const { return m_startPosition; }
83  const Vec3f& GetEndPos() const { return m_endPosition; }
84  const ChannelSectionPtr& GetStartChannelSectionPtr() const { return m_startSection; }
85  const ChannelSectionPtr& GetEndChannelSectionPtr() const { return m_endSection; }
86 
87 
88  CircleArcSplineComputationQueryResult GetResult() const { return m_result; }
89 
90  const CircleArcSplineComputer& GetComputer() const { return m_computer; }
91  CircleArcSplineComputationResult GetComputerResult() const { return m_computerResult; }
92  KyUInt32 GetOutputCount() const { return m_computer.GetOutputCount(); }
93  const RadiusProfileCircleArcSplineComputerOutput& GetOutput(KyUInt32 index) const { return m_computer.GetOutput(index); }
94 
95 protected:
96  void SetResult(CircleArcSplineComputationQueryResult result) { m_result = result; }
97 
98 
99 protected:
100  CircleArcSplineComputer m_computer;
101 
102  // Inputs & config
103  SplineComputationConfig m_splineConfig;
104  Vec3f m_startPosition;
105  Vec3f m_endPosition;
106  ChannelSectionPtr m_startSection;
107  ChannelSectionPtr m_endSection;
108  Vec2f m_startConstraint;
109  Vec2f m_endConstraint;
110 
112  CircleArcSplineComputationResult m_computerResult;
113 
114 
115 public:
116  CircleArcSplineComputerVisualDebugConfig m_visualDebugConfig;
117 };
118 
119 } // namespace Kaim
120 
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
Indicates that the query has not yet been launched.
Definition: circlearcsplinecomputationquery.h:19
CircleArcSplineComputationQueryResult
Enumerates the possible results of a CircleArcSplineComputationQuery.
Definition: circlearcsplinecomputationquery.h:16
Indicates that the computation has been canceled.
Definition: circlearcsplinecomputationquery.h:23
Base class for CircleArcSplineComputationQuery.
Definition: circlearcsplinecomputationquery.h:29
Base class for all the queries that need to be time-sliced.
Definition: iquery.h:262
The CircleArcSplineComputer failed due to an internal error (bubble array not created, string puller failed, turn list construction or optimization failed...).
Definition: circlearcsplinecomputationquery.h:22
QueryType
Enumerates all the type of query.
Definition: iquery.h:25
Indicates that the query has not yet been initialized.
Definition: circlearcsplinecomputationquery.h:18
virtual QueryType GetType() const
Get query type.
Definition: circlearcsplinecomputationquery.h:36
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
Inputs are invalid: startSection or endSection are invalid or not in the same Channel.
Definition: circlearcsplinecomputationquery.h:21
Indicates that a spline has been successfully computed.
Definition: circlearcsplinecomputationquery.h:25
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
CircleArcSplineComputationResult
Enumerates the CircleArcSpline computation results.
Definition: circlearcsplinecomputationresult.h:15
Indicates that the query has not yet been initialized.
Definition: iquery.h:295
void PerformQuery(WorkingMemory *workingMemory=nullptr)
If workingMemory param is nullptr, m_database.GetWorkingMemory() will be used.
Definition: circlearcsplinecomputationquery.cpp:91
virtual void ReleaseWorkingMemoryOnCancelDuringProcess(WorkingMemory *workingMemory=nullptr)
Called when a query is canceled in FlushCommands while its status is QueryInProcess to make sure that...
Definition: circlearcsplinecomputationquery.cpp:99
void BindToDatabase(Database *database)
Binds the query with the specified Database, clears all the inputs and outputs and sets all other par...
Definition: circlearcsplinecomputationquery.cpp:20
Indicates that the query has not yet been launched.
Definition: iquery.h:296
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:273
virtual void Advance(WorkingMemory *workingMemory)
Performs a single iteration of the spline computation query.
Definition: circlearcsplinecomputationquery.cpp:48
3d vector using 32bits floating points.
Definition: vec3f.h:16