public TileRotation GetTileRotation(TileRotationTreatment?rotationTreatment, Topology topology) { var tileData = Config.Tiles; var tileRotationBuilder = new TileRotationBuilder(Config.RotationalSymmetry, Config.ReflectionalSymmetry, rotationTreatment ?? TileRotationTreatment.Unchanged); var rotationGroup = tileRotationBuilder.RotationGroup; // Setup tiles if (tileData != null) { foreach (var td in tileData) { var tile = Parse(td.Value); if (td.TileSymmetry != null) { var ts = TileSymmetryUtils.Parse(td.TileSymmetry); tileRotationBuilder.AddSymmetry(tile, ts); } if (td.ReflectX != null) { tileRotationBuilder.Add(tile, new Rotation(0, true), Parse(td.ReflectX)); } if (td.ReflectY != null) { tileRotationBuilder.Add(tile, new Rotation(180, true), Parse(td.ReflectY)); } if (td.RotateCw != null) { tileRotationBuilder.Add(tile, new Rotation(rotationGroup.SmallestAngle, false), Parse(td.RotateCw)); } if (td.RotateCcw != null) { tileRotationBuilder.Add(tile, new Rotation(360 - rotationGroup.SmallestAngle, false), Parse(td.RotateCcw)); } if (td.RotationTreatment != null) { tileRotationBuilder.SetTreatment(tile, td.RotationTreatment.Value); } } } return(tileRotationBuilder.Build()); }
private TileRotation GetTileRotation(List <TileData> tileData, TileRotationTreatment?rotationTreatment, Topology topology) { var tileRotationBuilder = new TileRotationBuilder(rotationTreatment ?? TileRotationTreatment.Unchanged); // Setup tiles if (tileData != null) { foreach (var td in tileData) { var tile = Parse(td.Value); if (td.TileSymmetry != null) { var ts = TileSymmetryUtils.Parse(td.TileSymmetry); tileRotationBuilder.AddSymmetry(tile, ts); } if (td.ReflectX != null) { tileRotationBuilder.Add(tile, 0, true, Parse(td.ReflectX)); } if (td.ReflectY != null) { tileRotationBuilder.Add(tile, topology.Directions.Count / 2, true, Parse(td.ReflectY)); } if (td.RotateCw != null) { tileRotationBuilder.Add(tile, 1, false, Parse(td.RotateCw)); } if (td.RotateCcw != null) { tileRotationBuilder.Add(tile, -1, false, Parse(td.RotateCcw)); } if (td.RotationTreatment != null) { tileRotationBuilder.SetTreatment(tile, td.RotationTreatment.Value); } } } return(tileRotationBuilder.Build()); }