internal ActionVisualizer FindActionVisualizer(IAction target)
        {
            ActionVisualizer result = null;

            var selectorCount = _selectorVisualizers.Count;

            for (int i = 0; i < selectorCount; i++)
            {
                var s             = _selectorVisualizers[i];
                var qualiferCount = s.qualifiers.Count;
                for (int j = 0; j < qualiferCount; j++)
                {
                    var q = (IQualifierVisualizer)s.qualifiers[j];

                    if (TryFindActionVisualizer(q.action, target, out result))
                    {
                        return(result);
                    }
                }

                if (TryFindActionVisualizer(s.defaultQualifier.action, target, out result))
                {
                    return(result);
                }
            }

            return(null);
        }
        internal QualifierVisualizer(IQualifier q, SelectorVisualizer parent)
        {
            this._qualifier = q;
            this._parent    = parent;
            SelectorAction      selectorAction     = q.action as SelectorAction;
            AILinkAction        aILinkAction       = q.action as AILinkAction;
            CompositeAction     compositeAction    = q.action as CompositeAction;
            IRequireTermination requireTermination = q.action as IRequireTermination;

            if (selectorAction != null)
            {
                this._action = new SelectorActionVisualizer(selectorAction, this);
                return;
            }
            if (aILinkAction != null)
            {
                this._action = new AILinkActionVisualizer(aILinkAction, this);
                return;
            }
            if (compositeAction != null)
            {
                this._action = new CompositeActionVisualizer(compositeAction, this);
                return;
            }
            if (requireTermination != null)
            {
                this._action = new ActionRequiresTerminationVisualizer(q.action, this);
                return;
            }
            if (q.action != null)
            {
                this._action = new ActionVisualizer(q.action, this);
            }
        }
        private static bool TryFindActionVisualizer(IAction source, IAction target, out ActionVisualizer result)
        {
            result = null;
            ActionVisualizer actionVisualizer = source as ActionVisualizer;

            if (actionVisualizer == null)
            {
                return(false);
            }
            if (actionVisualizer.action == target)
            {
                result = actionVisualizer;
                return(true);
            }
            ICompositeVisualizer compositeVisualizer = actionVisualizer as ICompositeVisualizer;

            if (compositeVisualizer == null)
            {
                return(false);
            }
            int count = compositeVisualizer.children.Count;

            for (int i = 0; i < count; i++)
            {
                if (UtilityAIVisualizer.TryFindActionVisualizer(compositeVisualizer.children[i] as IAction, target, out result))
                {
                    return(true);
                }
            }
            return(false);
        }
示例#4
0
        internal QualifierVisualizer(IQualifier q, SelectorVisualizer parent)
        {
            _qualifier = q;
            _parent    = parent;

            var selectorAction = q.action as SelectorAction;
            var linkAction     = q.action as AILinkAction;
            var compAction     = q.action as CompositeAction;
            var irt            = q.action as IRequireTermination;

            if (selectorAction != null)
            {
                _action = new SelectorActionVisualizer(selectorAction, this);
            }
            else if (linkAction != null)
            {
                _action = new AILinkActionVisualizer(linkAction, this);
            }
            else if (compAction != null)
            {
                _action = new CompositeActionVisualizer(compAction, this);
            }
            else if (irt != null)
            {
                _action = new ActionRequiresTerminationVisualizer(q.action, this);
            }
            else if (q.action != null)
            {
                _action = new ActionVisualizer(q.action, this);
            }
        }
        internal ActionVisualizer FindActionVisualizer(IAction target)
        {
            ActionVisualizer actionVisualizer = null;
            int count = this._selectorVisualizers.Count;

            for (int i = 0; i < count; i++)
            {
                SelectorVisualizer item = this._selectorVisualizers[i];
                int num = item.qualifiers.Count;
                for (int j = 0; j < num; j++)
                {
                    if (UtilityAIVisualizer.TryFindActionVisualizer(((IQualifierVisualizer)item.qualifiers[j]).action, target, out actionVisualizer))
                    {
                        return(actionVisualizer);
                    }
                }
                if (UtilityAIVisualizer.TryFindActionVisualizer(item.defaultQualifier.action, target, out actionVisualizer))
                {
                    return(actionVisualizer);
                }
            }
            return(null);
        }
        private static bool TryFindActionVisualizer(IAction source, IAction target, out ActionVisualizer result)
        {
            result = null;

            var av = source as ActionVisualizer;

            if (av == null)
            {
                return(false);
            }

            if (ReferenceEquals(av.action, target))
            {
                result = av;
                return(true);
            }

            var cav = av as ICompositeVisualizer;

            if (cav == null)
            {
                return(false);
            }

            int count = cav.children.Count;

            for (int i = 0; i < count; i++)
            {
                if (TryFindActionVisualizer(cav.children[i] as IAction, target, out result))
                {
                    return(true);
                }
            }

            return(false);
        }