Пример #1
0
        public void Connect(PlanningNode from, PlanningNode to)
        {
            PlanningEdge edge = new PlanningEdge(from, to);

            mEdges.Add(edge);
            edge.parent = this;
        }
Пример #2
0
        public void RemovePlanningNode(PlanningNode node, int t)
        {
            if (t > 0)
            {
                for (int i = _timeLevels[t - 1].mEdges.Count - 1; i >= 0; i--)
                {
                    if (_timeLevels[t - 1].mEdges[i].to == node)
                    {
                        _timeLevels[t - 1].mEdges.RemoveAt(i);
                    }
                }
            }

            for (int i = _timeLevels[t].mEdges.Count - 1; i >= 0; i--)
            {
                if (_timeLevels[t].mEdges[i].from == node)
                {
                    _timeLevels[t].mEdges.RemoveAt(i);
                }
            }

            for (int i = _timeLevels[t].mNodes.Count - 1; i >= 0; i--)
            {
                if (_timeLevels[t].mNodes[i] == node)
                {
                    _timeLevels[t].mNodes.RemoveAt(i);
                }
            }
        }
Пример #3
0
        public int GetIndex(PlanningNode node)
        {
            for (int i = 0; i < mNodes.Count; i++)
            {
                if (mNodes[i] == node)
                {
                    return(i);
                }
            }

            return(-1);
        }
Пример #4
0
 public ExpandingNode(PlanningNode node)
 {
     planningNode  = node;
     parentNode    = null;
     childrenNodes = new List <ExpandingNode>();
     minVal        = 0.0;
     maxVal        = Double.MaxValue;
     level         = -1;
     instRwd       = 0.0;
     futrRwd       = 0.0;
     state         = STATE.NEW;
 }
Пример #5
0
        public bool hasOut(PlanningNode node, int level)
        {
            if (level < 0 || level >= _planningLength - 1)
            {
                return(false);
            }

            List <PlanningEdge> .Enumerator e = _timeLevels[level].mEdges.GetEnumerator();
            while (e.MoveNext())
            {
                if (e.Current.from == node)
                {
                    return(true);
                }
            }
            return(true);
        }
Пример #6
0
        public List <PlanningEdge> GetEdges(PlanningNode node)
        {
            List <PlanningEdge> edges = new List <PlanningEdge>();

            List <PlanningEdge> .Enumerator e = mEdges.GetEnumerator();

            while (e.MoveNext())
            {
                if (e.Current.from.pos.X == node.pos.X &&
                    e.Current.from.pos.Y == node.pos.Y)
                {
                    edges.Add(e.Current);
                }
            }

            return(edges);
        }
Пример #7
0
        public bool hasEdge(PlanningNode from, PlanningNode to)
        {
            if (to.parent.Level != from.parent.Level + 1)
            {
                return(false);
            }

            List <PlanningEdge> .Enumerator e = from.parent.mEdges.GetEnumerator();
            while (e.MoveNext())
            {
                if (e.Current.from == from && e.Current.to == to)
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #8
0
 public PlanningEdge(PlanningNode from, PlanningNode to)
 {
     _from = from;
     _to   = to;
 }
Пример #9
0
 public void AddPlanningNode(PlanningNode node, int t)
 {
     _timeLevels[t].AddPlanningNode(node);
 }
Пример #10
0
 public void AddPlanningNode(PlanningNode node)
 {
     mNodes.Add(node);
     node.parent = this;
 }