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; }