31 GateArrayComputerResult_ComputingGateDefinitions,
32 GateArrayComputerResult_WidenChannel_FirstGate,
33 GateArrayComputerResult_WidenChannel_TurnGates,
34 GateArrayComputerResult_WidenChannel_LastGate,
36 GateArrayComputerResult_Done_InputError,
37 GateArrayComputerResult_Done_Error,
38 GateArrayComputerResult_Done_GateDefinitionComputerError,
39 GateArrayComputerResult_Done_IntermediateGatesError,
41 GateArrayComputerResult_Done
44 class GateArrayComputer
48 GateArrayComputer() { Clear(); }
50 void Initialize(Database* database,
const ChannelComputerConfig& config,
const StringPulledBubbleList& stringPulledBubbleList, Channel* channel,
const FullDebug& fullDebug);
51 void SetTraverseLogicUserData(
void* traverseLogicUserData);
53 bool IsFinished()
const {
return m_result >= GateArrayComputerResult_Done_InputError; }
58 template<
class TLogic>
void Advance(WorkingMemory* workingMemory);
59 template<
class TLogic>
KyResult Compute(WorkingMemory* workingMemory);
61 ChannelComputerConfig& GetComputerConfig();
64 void* GetTraverseLogicUserData()
const {
return m_traverseLogicUserData; }
66 Channel* GetChannel() {
return m_channel; }
69 void Processing_Initialize();
71 template<
class TLogic>
void Processing_ComputingGateDefinitions(WorkingMemory* workingMemory);
72 template<
class TLogic>
void Processing_WidenChannel_FirstGate(WorkingMemory* workingMemory);
73 template<
class TLogic>
void Processing_WidenChannel_TurnGates(WorkingMemory* workingMemory);
74 template<
class TLogic>
void Processing_WidenChannel_LastGate(WorkingMemory* workingMemory);
76 template<
class TLogic>
void CreateStartGate(WorkingMemory* workingMemory);
77 template<
class TLogic>
void CheckExtremityGateSize(WorkingMemory* workingMemory, Gate& gate);
79 void MovePathPosInsideGates();
81 void TreatCollapsedSections();
83 bool CollapseGateWhenNecessary(
KyUInt32 gateIdx)
const;
85 KyResult ComputeCollapseIntermediaryGate(
const Gate& extremityGate,
const Vec3f collapsingPosition, Gate& intermediaryExtremityGate);
89 template<
class TLogic>
KyResult WidenSection_NotInTurn(WorkingMemory* workingMemory,
const Vec2f& endGateDirOnLeft);
90 template<
class TLogic>
KyResult WidenSection_InTurn(WorkingMemory* workingMemory,
const Vec2f& endGateDirOnLeft);
92 DisplayListManager* GetDisplayListManager();
95 Ptr<Database> m_database;
96 ChannelComputerConfig m_channelConfig;
97 void* m_traverseLogicUserData;
102 const StringPulledBubbleList* m_stringPulledBubbleList;
103 Ptr<GateDefinitionArray> m_gateDefinitionArray;
104 Ptr<Channel> m_channel;
107 Vec2f m_prevGateDirOnLeft;
108 Gate m_currentNewGate;
109 Vec3f m_channelCornerPos;
112 GateDefinitionComputer m_gateDefinitionComputer;
113 ChannelSectionWidener m_channelSectionWidener;
116 NavTrianglePtr m_previousGateNavTriangle;
118 FullDebug m_fullDebug;
GateArrayComputerResult
Definition: gatearraycomputer.h:26
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
Indicates the query has not yet been launched.
Definition: gatearraycomputer.h:29
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Indicates the query has not yet been initialized.
Definition: gatearraycomputer.h:28
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Indicates that the query has not yet been initialized.
Definition: iquery.h:295
Indicates that the query has not yet been launched.
Definition: iquery.h:296
float KyFloat32
float
Definition: types.h:32