public void ColoredPixelsFinalDecodingPass(List <Vector2Int> pixels) /////Does cleaning up of the data that was parsed { if (pixels.Count != 0) { List <GameObject> spawnedCubes = new List <GameObject>(0); int i = 0; while (i < pixels.Count) { Vector3 spawnPosXYZ = new Vector3(pixels[i].x, pixels[i].y, 0); GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.transform.position = spawnPosXYZ; spawnedCubes.Add(cube); parsedTrackedPositions.Add(new Vector2Int((int)spawnPosXYZ.x, (int)spawnPosXYZ.y)); Collider[] hitColliders = Physics.OverlapSphere(cube.transform.position, minDotDistance); for (int j = 0; j < hitColliders.Length; j++) { if (hitColliders[j].gameObject != cube) { if (parsedTrackedPositions.Contains(new Vector2Int((int)hitColliders[j].transform.position.x, (int)hitColliders[j].transform.position.y))) { parsedTrackedPositions.Remove(new Vector2Int((int)hitColliders[j].transform.position.x, (int)hitColliders[j].transform.position.y)); } spawnedCubes.Remove(hitColliders[j].gameObject); DestroyImmediate(hitColliders[j].gameObject); } } i++; } if (saveAsText) { JsonSerialising.SerialiseList(fileLocation, fileName, parsedTrackedPositions); //deserialisedPositions = JsonSerialising.DeserialiseVector2IntList(fileLocation, fileName); } for (int j = 0; j < spawnedCubes.Count; j++) { DestroyImmediate(spawnedCubes[j]); spawnedCubes.RemoveAt(j); } } else { Debug.Log("No red pixels in this image."); } }