public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { Type targetType = InputPins[0].SourceNode == null ? ((CKlaxScriptTypeInfo)InputPins[0].Literal).Type : ((CKlaxScriptTypeInfo)inParameters[0]).Type; object targetObject = inParameters[1]; if (targetObject == null) { outReturn.Add(null); outReturn.Add(false); return(null); } if (targetType.IsInstanceOfType(targetObject)) { outReturn.Add(targetObject); //outReturn.Add(Convert.ChangeType(targetObject, targetType)); outReturn.Add(true); return(null); } else { outReturn.Add(null); outReturn.Add(false); return(null); } }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { object newValue = InputPins[0].SourceNode != null ? inParameters[0] : InputPins[0].Literal; SourceVariable.Value = newValue; outReturn.Add(newValue); return(OutExecutionPins[0]); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { if (context.calledPin == null) { //Advance loop m_currentIndex++; if (m_currentIndex >= m_currentList.Count) { //Loop finished m_currentIndex = -1; m_currentList = null; outReturn.Add(-1); outReturn.Add(OutputPins[1].Type.GetDefaultValue()); return(OutExecutionPins[1]); } else { //Loop continues context.graph.AddReturnPointNode(this); outReturn.Add(m_currentIndex); outReturn.Add(m_currentList[m_currentIndex]); return(OutExecutionPins[0]); } } else { if (context.calledPin == InExecutionPins[0]) { //Start new loop m_currentIndex = 0; m_currentList = inParameters[0] != null ? (IList)inParameters[0] : (IList)InputPins[0].Literal; context.graph.AddReturnPointNode(this); outReturn.Add(m_currentIndex); outReturn.Add(m_currentList[m_currentIndex]); return(OutExecutionPins[0]); } else if (m_currentIndex != -1) { //Break loop m_currentIndex = -1; m_currentList = null; context.graph.RemoveReturnPointNode(this); outReturn.Add(-1); outReturn.Add(OutputPins[1].Type.GetDefaultValue()); return(OutExecutionPins[1]); } } return(null); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { if (context.graph.ScriptableObject.Outer is CEntity entity) { outReturn.Add(entity); } else { outReturn.Add(null); } return(null); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { for (int i = 0; i < InputPins.Count; i++) { if (InputPins[i].SourceNode == null) { inParameters[i] = InputPins[i].Literal; } } if (inParameters[0] == null) { LogUtility.Log("Interface function not executed target was null"); return(OutExecutionPins[0]); } CEntity targetEntity = inParameters[0] as CEntity; if (targetEntity == null) { LogUtility.Log("Interface function not executed target is not an entity"); return(OutExecutionPins[0]); } CInterfaceFunctionGraph targetGraph = null; foreach (var interfaceGraph in targetEntity.KlaxScriptObject.InterfaceGraphs) { if (interfaceGraph.InterfaceFunctionGuid == TargetFunctionGuid) { targetGraph = interfaceGraph; break; } } if (targetGraph == null) { LogUtility.Log("Interface function not executed target does not implemented the interface function. Target was {0}", targetEntity.Name); return(OutExecutionPins[0]); } List <object> functionParameters = new List <object>(inParameters.Count - 1); for (int i = 1; i < inParameters.Count; i++) { functionParameters.Add(inParameters[i]); } targetGraph.Execute(functionParameters, outReturn); return(OutExecutionPins[0]); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { if (inParameters.Count != OutputPins.Count) { throw new Exception($"Function entry parameters had a different size than expected. Size was {inParameters.Count} expected was {OutputPins.Count}"); } foreach (object inParameter in inParameters) { outReturn.Add(inParameter); } return(OutExecutionPins[0]); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { object instance = inParameters[1] ?? InputPins[1].Literal; if (instance != null) { for (int i = 1, count = OutExecutionPins.Count; i < count; i++) { CSwitchExecutionPin pin = (CSwitchExecutionPin)OutExecutionPins[i]; if (instance.Equals(pin.Value)) { return(OutExecutionPins[i]); } } } return(OutExecutionPins[0]); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { if (m_targetFunction == null) { LogUtility.Log("Function {0} not executed as the target function was null, make sure to resolve the function reference before", Name); return(OutExecutionPins[0]); } for (int i = 0; i < InputPins.Count; i++) { if (InputPins[i].SourceNode == null) { inParameters[i] = InputPins[i].Literal; } } m_targetFunction.Execute(inParameters, outReturn); return(OutExecutionPins[0]); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { // Validate that the parameters are correct if (inParameters.Count != OutputPins.Count) { throw new Exception("Incoming parameters of event node do not match outgoing"); } for (var i = 0; i < inParameters.Count; i++) { object inParameter = inParameters[i]; if (inParameter.GetType() != OutputPins[i].Type) { throw new Exception("Incoming parameters of event node do not match outgoing"); } outReturn.Add(inParameter); } return(OutExecutionPins[0]); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { if (context.graph.ScriptableObject.Outer is CEntity entity) { CEntityComponent outComponent = entity.GetComponentByGuid(ComponentTargetGuid); #if DEBUG if (outComponent == null || outComponent.GetType() != OutputPins[0].Type) { LogUtility.Log("Receive component node failed. The given component did not exist or was of a different type than expected"); outReturn.Add(null); return(null); } #endif outReturn.Add(outComponent); } else { outReturn.Add(null); } return(null); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { outReturn.Add(SourceVariable.Value); return(null); }
public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn) { bool bCondition = InputPins[0].SourceNode == null ? (bool)InputPins[0].Literal : (bool)inParameters[0]; return(bCondition ? OutExecutionPins[0] : OutExecutionPins[1]); }