public static void BuildEdge(DestroyableEdgeColliderCell cell, Stack <EdgeCollider2D> tempColliders, GameObject child, float weld, float detail) { for (var i = 0; i < pointCount; i++) { var point = points[i]; if (point.Used == false) { Trace(point); WeldLines(weld); OptimizeEdges(detail); cell.AddPath(tempColliders, child, ExtractPoints(0)); } } }
private void RebuildCell(ref DestroyableEdgeColliderCell cell, int cellX, int cellY) { var xMin = CellSize * cellX; var yMin = CellSize * cellY; var xMax = Mathf.Min(CellSize + xMin, destructible.AlphaWidth); var yMax = Mathf.Min(CellSize + yMin, destructible.AlphaHeight); if (xMin > 0) { xMin += 1; } if (yMin > 0) { yMin += 1; } if (xMax < destructible.AlphaWidth) { xMax -= 1; } if (yMax < destructible.AlphaHeight) { yMax -= 1; } DestroyableColliderBuilder.AlphaData = destructible.AlphaData; DestroyableColliderBuilder.AlphaWidth = destructible.AlphaWidth; DestroyableColliderBuilder.AlphaHeight = destructible.AlphaHeight; DestroyableColliderBuilder.MinX = xMin; DestroyableColliderBuilder.MinY = yMin; DestroyableColliderBuilder.MaxX = xMax; DestroyableColliderBuilder.MaxY = yMax; DestroyableColliderBuilder.CalculateEdgeCells(); if (cell == null) { cell = DestroyableEdgeColliderCell.Get(); } cell.Clear(tempColliders); DestroyableColliderBuilder.BuildEdge(cell, tempColliders, child, Weld, Detail); cell.UpdateColliderSettings(IsTrigger, Material); }
private void Mark() { tempColliders.Clear(); if (cells != null) { for (var i = cells.Length - 1; i >= 0; i--) { var cell = cells[i]; if (cell != null) { cell.Clear(tempColliders); cells[i] = DestroyableEdgeColliderCell.Add(cell); } } } }
public static DestroyableEdgeColliderCell Add(DestroyableEdgeColliderCell cell) { pool.Push(cell); return(null); }