void BuildByteCode_AppendBooleanPin(BytecodeGenContext byteCodeContext, ScriptNodeLinkCache linkCache, ICircuitPin inputPin, IList <ScriptNodeConnection> samePinLinks) { if (samePinLinks.Count != 1) { throw new Exception("Invalid link count for " + inputPin.Name); } var connection = samePinLinks[0]; var outElement = connection.OutputElement; var outLinkCache = outElement.As <ScriptNodeLinkCache>(); }
// DFS traversal based bytecode gen void BuildByteCodeForNode(BytecodeGenContext byteCodeContext, ScriptNodeLinkCache linkCache, ICircuitPin inputPin, IList <ScriptNodeConnection> samePinLinks) { if (samePinLinks == null || samePinLinks.Count == 0) // if nothing linked just take constant { var node = linkCache.As <ScriptNode>(); BuildByteCode_AppendPropertyValueLoad(byteCodeContext, node.DomNode, inputPin); } else { delByteCodeHandler byteCodeHandler; if (!m_ByteCodeGen.TryGetValue(inputPin.TypeName.ToString(), out byteCodeHandler)) { throw new Exception("Bytecode handler not found for :" + inputPin.TypeName.ToString()); } byteCodeHandler(byteCodeContext, linkCache, inputPin, samePinLinks); } // }
void BuildByteCode_AppendIntPin(BytecodeGenContext byteCodeContext, ScriptNodeLinkCache linkCache, ICircuitPin inputPin, IList <ScriptNodeConnection> samePinLinks) { }
IList <ScriptNodeConnection> GetSignalOutputs(ScriptNodeLinkCache link) { return(link.FromThisNode.Where(x => x.OutputPin.TypeName == "Signal").ToList()); }