20 class StringPulledEdge;
21 class StringPulledBubbleList;
22 class GateDefinitionArray;
24 enum GateDefinitionComputerResult
26 GateDefinitionComputer_NotProcessed,
28 GateDefinitionComputer_ComputingStartGateDefinition,
29 GateDefinitionComputer_ComputingTurnGateDefinition,
30 GateDefinitionComputer_ComputingEndGateDefinition,
32 GateDefinitionComputer_Success,
34 GateDefinitionComputer_Error_NoMargin,
35 GateDefinitionComputer_Error_Clamping
38 class GateDefinitionComputer
41 GateDefinitionComputer() { Clear(); }
45 void Initialize(Database* database,
const ChannelComputerConfig& channelConfig,
const StringPulledBubbleList& stringPulledBubbleList, GateDefinitionArray* gateDefinitionArray);
47 void SetTraverseLogicUserData(
void* traverseLogicUserData) { m_traverseLogicUserData = traverseLogicUserData; }
49 bool IsFinished()
const;
50 GateDefinitionComputerResult GetResult()
const {
return m_result; }
52 void* GetTraverseLogicUserData()
const {
return m_traverseLogicUserData; }
54 template<
class TLogic> GateDefinitionComputerResult Advance(WorkingMemory* workingMemory);
57 void InitializeProcessing() { m_result = GateDefinitionComputer_ComputingStartGateDefinition; }
59 template<
class TLogic>
void ProcessStartGateDefinition(WorkingMemory* workingMemory);
60 template<
class TLogic>
void ProcessTurnGateDefinition(WorkingMemory* workingMemory);
61 template<
class TLogic>
void ProcessEndGateDefinition(WorkingMemory* workingMemory);
62 template<
class TLogic> GateDefinitionComputerResult ComputeTurnGateDefinitions(
const Bubble& bubble,
const StringPulledEdge& prevEdge,
const StringPulledEdge& nextEdge, WorkingMemory* workingMemory);
63 template<
class TLogic>
KyResult ClampPosition(Vec3f& pos, WorkingMemory* workingMemory);
68 void* m_traverseLogicUserData;
74 const StringPulledBubbleList* m_stringPulledBubbleList;
75 Ptr<GateDefinitionArray> m_gateDefinitionArray;
76 GateDefinitionComputerResult m_result;
83 Vec3f m_lastClampedPosition;
84 NavTrianglePtr m_lastClampedPositionTriangle;
87 KY_INLINE
bool GateDefinitionComputer::IsFinished()
const
90 (m_result == GateDefinitionComputer_Success) ||
91 (m_result == GateDefinitionComputer_Error_NoMargin) ||
92 (m_result == GateDefinitionComputer_Error_Clamping)
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
float KyFloat32
float
Definition: types.h:32