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(); } }
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(); } }