public void Clear() { UpdateBuffer = new SimplexWrap <VERTEX> [Dimension]; UpdateIndices = new int[Dimension]; InputVertices = null; CurrentVertex = null; FurthestVertex = null; MaxDistance = float.NegativeInfinity; ConvexSimplexs.Clear(); AffectedFaceBuffer.Clear(); TraverseStack.Clear(); SingularVertices.Clear(); ConeFaceBuffer.Clear(); ObjectManager.Clear(); UnprocessedFaces.Clear(); EmptyBuffer.Clear(); BeyondBuffer.Clear(); for (int i = 0; i < CONNECTOR_TABLE_SIZE; i++) { ConnectorTable[i].Clear(); } }
/// <summary> /// Recursively traverse all the relevant faces. /// </summary> void TraverseAffectedFaces(int currentFace) { TraverseStack.Clear(); TraverseStack.Push(currentFace); AffectedFaceFlags[currentFace] = true; while (TraverseStack.Count > 0) { var top = FacePool[TraverseStack.Pop()]; for (int i = 0; i < Dimension; i++) { var adjFace = top.AdjacentFaces[i]; if (!AffectedFaceFlags[adjFace] && MathHelper.GetVertexDistance(CurrentVertex, FacePool[adjFace]) >= PlaneDistanceTolerance) { AffectedFaceBuffer.Add(adjFace); AffectedFaceFlags[adjFace] = true; TraverseStack.Push(adjFace); } } } }