Пример #1
0
        [Test] public void ShouldNotChangeWhenThereIsNoOverlapBetweenGroups()
        {
            corePosition = new Position(-1, 0);
            coreBlock    = new Block(corePosition);
            core         = new BlockGroup(new List <Block> {
                coreBlock
            }, Mock.Basic <Movement>(), merging);

            merging.Merge(core, new Translation(1, 0));

            Assert.That(corePosition, Is.EqualTo(new Position(-1, 0)));
            Assert.That(groupPosition, Is.EqualTo(new Position(0, 0)));
            Assert.That(core.IsEmpty(), Is.False);
            Assert.That(group.IsEmpty(), Is.False);
        }
Пример #2
0
        [Test] public void ShouldMergeGroupIntoCoreIfItOverlap()
        {
            corePosition = new Position(0, 0);
            coreBlock    = new Block(corePosition);
            core         = new BlockGroup(new List <Block> {
                coreBlock
            }, Mock.Basic <Movement>(), merging);

            merging.Merge(core, new Translation(1, 0));

            Assert.That(corePosition, Is.EqualTo(new Position(0, 0)));
            Assert.That(groupPosition, Is.EqualTo(new Position(1, 0)));
            Assert.That(core.IsEmpty(), Is.False);
            Assert.That(group.IsEmpty(), Is.True);
        }
Пример #3
0
        public void UnloadDistantChunks(int chunkX, int chunkY, int chunkZ, int radius)
        {
#if UNITY_EDITOR
            if (!Application.isPlaying)
            {
                return;
            }
#endif

            for (int i = 0; i < blockGroups.Count; i++)
            {
                BlockGroup g = blockGroups[i] as BlockGroup;
                g.UnloadDistantChunks(chunkX, chunkY, chunkZ, radius);

                if (g.IsEmpty())
                {
                    blockGroups.RemoveAt(i--);
                }
            }
        }