Beispiel #1
0
        public void Dispose()
        {
            Halfedge halfedge = leftEnd;
            Halfedge prevHe;

            while (halfedge != rightEnd)
            {
                prevHe   = halfedge;
                halfedge = halfedge.edgeListRightNeighbor;
                prevHe.Dispose();
            }
            leftEnd = null;
            rightEnd.Dispose();
            rightEnd = null;

            //UnityEngine.Debug.Log(hash.Length);

            // cleanup the hash
            for (int i = 0; i < hash.Length; i++)
            {
                hash[i] = null;
            }

            //hash = null; // causes alloc
        }
		public void Remove(Halfedge halfedge) {
			Halfedge previous;
			int removalBucket = Bucket(halfedge);

			if (halfedge.vertex != null) {
				previous = hash[removalBucket];
				while (previous.nextInPriorityQueue != halfedge) {
					previous = previous.nextInPriorityQueue;
				}
				previous.nextInPriorityQueue = halfedge.nextInPriorityQueue;
				count--;
				halfedge.vertex = null;
				halfedge.nextInPriorityQueue = null;
				halfedge.Dispose();
			}
		}
Beispiel #3
0
        public void Dispose()
        {
            Halfedge halfedge = leftEnd;
            Halfedge prevHe;

            while (halfedge != rightEnd)
            {
                prevHe   = halfedge;
                halfedge = halfedge.edgeListRightNeighbor;
                prevHe.Dispose();
            }
            leftEnd = null;
            rightEnd.Dispose();
            rightEnd = null;

            hash = null;
        }
        public void Remove(Halfedge halfedge)
        {
            Halfedge previous;
            int      removalBucket = Bucket(halfedge);

            if (halfedge.vertex != null)
            {
                previous = hash[removalBucket];
                while (previous.nextInPriorityQueue != halfedge) // NRE!?!?
                {
                    previous = previous.nextInPriorityQueue;
                }
                previous.nextInPriorityQueue = halfedge.nextInPriorityQueue;
                count--;
                halfedge.vertex = null;
                halfedge.nextInPriorityQueue = null;
                halfedge.Dispose();
            }
        }
        public void Remove(Halfedge halfedge)
        {
            Halfedge previous;
            int      removalBucket = Bucket(halfedge);

            if (halfedge.Vertex != null)
            {
                previous = this.hash[removalBucket];
                while (previous.NextInPriorityQueue != halfedge)
                {
                    previous = previous.NextInPriorityQueue;
                }
                previous.NextInPriorityQueue = halfedge.NextInPriorityQueue;
                this.count--;
                halfedge.Vertex = null;
                halfedge.NextInPriorityQueue = null;
                halfedge.Dispose();
            }
        }