public void TestRegisterAnyChange()
        {
            var s = new VoxelChangeListener();

            var world = TestWorldBuilder.createTestWorld(10, 10);
            var count = 0;

            var d = s.ChangedVoxels.Subscribe(_ => count++);

            world.GetVoxel(new Point2(4, 5)).Data.Type = new GameVoxelType("Type1");
            world.GetVoxel(new Point2(5, 4)).Data.Type = new GameVoxelType("Type3");
            world.GetVoxel(new Point2(5, 7)).Data.Type = new GameVoxelType("Type2");

            s.ProcessChanges(world);
            world.ClearChangedFlags();
            Assert.AreEqual(3, count);

            d.Dispose();

            world.GetVoxel(new Point2(4, 5)).Data.Type = new GameVoxelType("Type1");
            world.GetVoxel(new Point2(5, 4)).Data.Type = new GameVoxelType("Type3");
            world.GetVoxel(new Point2(5, 7)).Data.Type = new GameVoxelType("Type2");

            s.ProcessChanges(world);
            world.ClearChangedFlags();
            Assert.AreEqual(3, count);
        }
        public void TestAdjacentChange()
        {
            var s = new VoxelChangeListener();

            var world = TestWorldBuilder.createTestWorld(10, 10);

            var target = world.GetVoxel(new Point2(5, 5));

            var count = 0;

            s.RegisterAdjacentChange(target, _ => count++);

            world.GetVoxel(new Point2(4, 5)).Data.Type = new GameVoxelType("Type1");
            world.GetVoxel(new Point2(5, 4)).Data.Type = new GameVoxelType("Type3");
            world.GetVoxel(new Point2(5, 7)).Data.Type = new GameVoxelType("Type2");

            s.ProcessChanges(world);
            world.ClearChangedFlags();
            Assert.AreEqual(2, count);

            s.UnRegisterAdjacentChange(target);

            world.GetVoxel(new Point2(4, 5)).Data.Type = new GameVoxelType("Type1");
            world.GetVoxel(new Point2(5, 4)).Data.Type = new GameVoxelType("Type3");
            world.GetVoxel(new Point2(5, 7)).Data.Type = new GameVoxelType("Type2");

            s.ProcessChanges(world);
            world.ClearChangedFlags();
            Assert.AreEqual(2, count);
        }