예제 #1
0
		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;
		}