/// <summary> /// This method will go through the inputs, and determine if each node needs further evaluation. /// If not then we will fill the result stack and get ready for expression evaluation /// </summary> /// <param name="connectedBlock"></param> /// <returns></returns> public override bool EvaluateInternalData(BaseNodeBlock connectedBlock) { Console.WriteLine(String.Format("From {0} -> {1}", this.GetType().Name, connectedBlock.GetType().Name)); bool temp = true; if (connectedBlock is GetConstantNodeBlock block) { ResultsStack.Push(block?.InternalData.VarData); Console.WriteLine(String.Format("Result: {0}", ResultsStack.Peek())); return(true); } else { if (connectedBlock.AnswerToOutput != null) { ResultsStack.Push(connectedBlock.AnswerToOutput); Console.WriteLine(String.Format("Result: {0}", ResultsStack.Peek())); connectedBlock.AnswerToOutput = null; } else { temp &= connectedBlock.OnStartEvaluateInternalData(); //it's not a constant thus we MUST evaluate this node. if (temp) { this.ResultsStack.Push(connectedBlock.AnswerToOutput); Console.WriteLine(String.Format("Result: {0}", ResultsStack.Peek())); connectedBlock.AnswerToOutput = null; } } } return(temp); }
/// <summary> /// NA Do not use /// </summary> /// <param name="currentNB"></param> public override void OnEndNodeBlockExecution(ref BaseNodeBlock currentNB) { throw new NotImplementedException(); }
/// <summary> /// NA DO NOT USE /// </summary> /// <param name="currentNB"></param> /// <returns></returns> public override bool OnStartNodeBlockExecution(ref BaseNodeBlock currentNB) { throw new NotImplementedException(); }