bool recurse(int iter, Vector3 direction, Vector3 p, Quaternion rotation, PropOverlay overlay, Room room, PropUnitCollection propUnitCollection) { if (iter == 0) { return(true); } var size = rotation * overlay.size; var points = new List <Vector3>(); var allocateBlackSpaceSucceeded = allocateBlackSpace(room, overlay, size, p, points); var totalblack = getListOfPointsOfColor(Color.black).ConvertAll(x => x.V).ToList(); totalblack.AddRange(propUnitCollection.getListOfPoints()); var totalWhite = grid.Keys.Except(totalblack).ToList(); var islegal = check(grid.Keys.ToList(), totalWhite, totalblack); if (!islegal) { GameObject.Instantiate(g3).transform.position = p; grid[p].changeColor(Color.white); return(false); } if (!allocateBlackSpaceSucceeded || points.Count == 0) { return(true); } var propUnit = new PropUnit(points, overlay); propUnitCollection.list.Add(propUnit); recurse(iter - 1, direction, p + direction, rotation, overlay, room, propUnitCollection); return(true); }
public bool Equals(PropUnit other) { return(this.b == other.b && object.Equals(this.overlay, other.overlay)); }