NodeBase CreateActionNode(XMLRules.ActionType action) { NodeBase result = null; if (action.HasChangeState()) { NodeBase rhsNode = CreateArithmeticNode(action.GetChangeState().GetExpression()); result = new SetNode(m_Container); ((SetNode)result).m_VariableName = action.GetChangeState().GetVariable().GetName().Value; result.AddChild(rhsNode); } else if (action.HasCallScript()) { result = new CallNode(m_Container); string scriptName = action.GetCallScript().GetScriptName().Value; List <ScriptDescriptor> actionList = ScriptManager.GetScriptsByType(typeof(BaseAction)); foreach (ScriptDescriptor script in actionList) { if (scriptName == script.m_Type.ToString()) { BaseScript newScript = null; BaseScript.Load(action.GetCallScript(), m_Container.m_Editor.m_TargetObject, out newScript); ((CallNode)result).m_Script = (BaseAction)newScript; break; } } } return(result); }
public XMLRules.ActionType MakeCallScriptAction(CallNode callNode) { XMLRules.ActionType action = new XMLRules.ActionType(); ScriptReference scriptReference; BaseScript.Save(callNode.m_Script, out scriptReference); action.AddCallScript(scriptReference); return(action); }
XMLRules.ActionType MakeAction(NodeBase node) { if (node.m_NodeType == NodeType.SETVARIABLE) { SetNode setNode = (SetNode)node; if (m_State != null) { Variable variable; if (setNode.m_Children.Count >= 1) { if (m_State.GetVariable(setNode.m_VariableName, out variable)) { ArithmeticExpression value = CreateArithmeticExpression(setNode.m_Children[0]); return(m_RuleMaker.MakeStateChangeAction(setNode.m_VariableName, variable.m_Type, value)); } else { Debug.LogError("Invalid assignment: variable " + setNode.m_VariableName + " not found"); } } else { Debug.LogError("Invalid assignment: no value was specified"); } } } else if (node.m_NodeType == NodeType.CALLSCRIPT) { CallNode callNode = (CallNode)node; return(m_RuleMaker.MakeCallScriptAction(callNode)); } return(null); }
NodeBase CreateActionNode(XMLRules.ActionType action) { NodeBase result = null; if (action.HasChangeState()) { NodeBase rhsNode = CreateArithmeticNode(action.GetChangeState().GetExpression()); result = new SetNode(m_Container); ((SetNode)result).m_VariableName = action.GetChangeState().GetVariable().GetName().Value; result.AddChild(rhsNode); } else if (action.HasCallScript()) { result = new CallNode(m_Container); string scriptName = action.GetCallScript().GetScriptName().Value; List<ScriptDescriptor> actionList = ScriptManager.GetScriptsByType(typeof(BaseAction)); foreach (ScriptDescriptor script in actionList) { if (scriptName == script.m_Type.ToString()) { BaseScript newScript = null; BaseScript.Load(action.GetCallScript(), m_Container.m_Editor.m_TargetObject, out newScript); ((CallNode)result).m_Script = (BaseAction)newScript; break; } } } return result; }
public XMLRules.ActionType MakeCallScriptAction(CallNode callNode) { XMLRules.ActionType action = new XMLRules.ActionType(); ScriptReference scriptReference; BaseScript.Save(callNode.m_Script, out scriptReference); action.AddCallScript(scriptReference); return action; }