public ActionEnumerator(ActionEnumerator actionEnum, BComponent newParent = null)
 {
     this.parent          = newParent;
     this.actionName      = actionEnum.actionName;
     this.componentName   = actionEnum.componentName;
     this.action          = actionEnum.action;
     this.enumerator      = this.action();
     this.behaviorManager = actionEnum.behaviorManager;
 }
        public static BComponent Build(XmlNode xmlDoc, BComponent parent, Behaviors behaviorManager)
        {
            System.Func <IEnumerator <bool> > action = null;
            string actionName;
            string componentName;
            bool   isError      = false;
            string messageError = "";

            FindAttributes(xmlDoc, out actionName, out componentName);

            if (actionName == null)
            {
                isError      = true;
                messageError = "ActionEnumerator: don't have action attribute";
                throw new NullReferenceException(messageError);
            }
            else
            {
                MonoBehaviour mono = GetRightMono(componentName, behaviorManager.components);
                if (mono != null)
                {
                    action = FindMethod <System.Func <IEnumerator <bool> > >(actionName, mono);
                }
                else
                {
                    isError      = true;
                    messageError = string.Format("ActionEnumerator: wrong component name [{1}] for menthod: [{0}]", actionName, componentName);
                    Debug.LogError(messageError);
                }
            }

            ActionEnumerator result = new ActionEnumerator(parent, action, actionName, componentName, behaviorManager);

            result.isError      = isError;
            result.messageError = messageError;
            return(result);
        }