43 const CompiledModule& GetCompiledModule()
const {
return m_Module; }
49 PL_DECLARE_POD_TYPE();
51 AstNode* m_pSourceNode =
nullptr;
53 plUInt8 m_uiSourcePinIndex = 0;
68 bool m_bImplicitExecution =
false;
78#if PL_ENABLED(PL_PLATFORM_64BIT)
79 static_assert(
sizeof(
AstNode) == 256);
87 return plVisualScriptNodeManager::GetNiceTypeName(pObject);
90 PL_ALWAYS_INLINE plVisualScriptDataType::Enum GetDeductedType(
const plDocumentObject* pObject)
const
92 return m_pManager->GetDeductedType(pObject);
96 DataOutput& GetDataOutput(
const DataInput& dataInput);
97 AstNode& CreateAstNode(plVisualScriptNodeDescription::Type::Enum type, plVisualScriptDataType::Enum deductedDataType = plVisualScriptDataType::Invalid,
bool bImplicitExecution =
false);
98 PL_ALWAYS_INLINE AstNode& CreateAstNode(plVisualScriptNodeDescription::Type::Enum type,
bool bImplicitExecution)
100 return CreateAstNode(type, plVisualScriptDataType::Invalid, bImplicitExecution);
103 void AddDataInput(AstNode& node, AstNode* pSourceNode, plUInt8 uiSourcePinIndex, plVisualScriptDataType::Enum dataType);
104 void AddDataOutput(AstNode& node, plVisualScriptDataType::Enum dataType);
108 AstNode* m_pSourceNode =
nullptr;
109 plUInt8 m_uiSourcePinIndex = 0;
112 DefaultInput GetDefaultPointerInput(
const plRTTI* pDataType);
113 AstNode* CreateConstantNode(
const plVariant& value);
114 AstNode* CreateJumpNode(AstNode* pTargetNode);
116 DataOffset GetInstanceDataOffset(
plHashedString sName, plVisualScriptDataType::Enum dataType);
118 struct ConnectionType
129 AstNode* m_pSource =
nullptr;
130 AstNode* m_pTarget =
nullptr;
131 ConnectionType::Enum m_Type = ConnectionType::Execution;
132 plUInt32 m_uiSourcePinIndex = 0;
136 void MarkAsCoroutine(AstNode* pEntryAstNode);
137 plResult ReplaceUnsupportedNodes(AstNode* pEntryAstNode);
138 plResult ReplaceLoop(Connection& connection);
139 plResult InsertTypeConversions(AstNode* pEntryAstNode);
140 plResult InlineConstants(AstNode* pEntryAstNode);
141 plResult InlineVariables(AstNode* pEntryAstNode);
143 plResult BuildDataExecutions(AstNode* pEntryAstNode);
144 plResult FillDataOutputConnections(AstNode* pEntryAstNode);
148 struct ConnectionHasher
150 static plUInt32 Hash(
const Connection& c);
151 static bool Equal(
const Connection& a,
const Connection& b);
154 enum class VisitorResult
162 using AstNodeVisitorFunc =
plDelegate<VisitorResult(Connection& connection)>;
163 plResult TraverseExecutionConnections(AstNode* pEntryAstNode, AstNodeVisitorFunc func,
bool bDeduplicate =
true);
164 plResult TraverseDataConnections(AstNode* pEntryAstNode, AstNodeVisitorFunc func,
bool bDeduplicate =
true,
bool bClearReportedConnections =
true);
165 plResult TraverseAllConnections(AstNode* pEntryAstNode, AstNodeVisitorFunc func,
bool bDeduplicate =
true);
182 plUInt32 m_uiNextPinId = 0;
186 PL_DECLARE_POD_TYPE();
188 DataOffset m_DataOffset;
189 plUInt32 m_uiUsageCounter = 0;
196 CompiledModule m_Module;
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34