public void UnalignedBlocks_NoSplitsAvailable() { var resolver = new RotateableRegionResolver(new[] { new RotateableRegionImpl(new IntBlockBounds(0, 2, 0, 3, 4, 2)), new RotateableRegionImpl(new IntBlockBounds(2, 0, 0, 4, 2, 4)), }, Pivots(true, false, true)); IList<AxisConstraint> splits = resolver.GetAvailableSplits(); Assert.That(splits, Has.Count.EqualTo(0)); }
public void TwoAdjacentBlocks_OneSplitThroughTheCenterAvailable() { var resolver = new RotateableRegionResolver(new[] { new RotateableRegionImpl(new IntBlockBounds(0, 0, 0, 2, 2, 2)), new RotateableRegionImpl(new IntBlockBounds(2, 0, 0, 4, 4, 4)) }, Pivots(true, true, true)); IList<AxisConstraint> splits = resolver.GetAvailableSplits(); Assert.That(splits, Has.Count.EqualTo(1)); Assert.That(splits[0], Is.EqualTo(AxisConstraint.X(2))); }
public void RotateBlock_RegionUpdatedCorrectly() { var resolver = new RotateableRegionResolver(new[] { new RotateableRegionImpl(new IntBlockBounds(0, 0, 0, 2, 2, 2)), new RotateableRegionImpl(new IntBlockBounds(2, 0, 0, 4, 4, 4)) }, Pivots(true, false, false)); IList<RotateableRegion> rotatedRegions = resolver.Rotate(resolver.GetAvailableSplits()[0], true, 1); Assert.That(rotatedRegions, Has.Count.EqualTo(1)); Assert.That(rotatedRegions[0].RotatedBounds().Min, Is.EqualTo(new Vector3(0, 2, 0))); Assert.That(rotatedRegions[0].RotatedBounds().Max, Is.EqualTo(new Vector3(2, 4, 2))); Assert.That(rotatedRegions[0].Rotation(), Is.EqualTo(Quaternion.Euler(90, 0, 0))); }