Exemplo n.º 1
0
        public void Destroy()
        {
            if (_activationCatalyst != null)
            {
                PositionTracker.Unsubscribe(_activationCatalyst, OnPositionUpdate);
                _activationCatalyst = null;
            }

            ChunkArchitect.Destroy();
        }
Exemplo n.º 2
0
        private void OnPositionUpdate(ITrackable trackable, PositionData oldPosition, PositionData newPosition)
        {
            if (newPosition.Chunk != null)
            {
                var activeChunkList = DetermineActiveChunks(newPosition.Chunk.Position);

                // Order by distance from player
                activeChunkList.Sort((chunk1, chunk2) =>
                {
                    var distance1 = IntVector2.Distance(newPosition.Chunk.Position, chunk1);
                    var distance2 = IntVector2.Distance(newPosition.Chunk.Position, chunk2);

                    return(distance1.CompareTo(distance2));
                });

                ChunkArchitect.SetActiveChunks(activeChunkList);
                SpaceArchitect.SetActiveSpaces(ChunkArchitect.ChunkCache);
            }
        }
Exemplo n.º 3
0
        public Block GetBlock(IntVector2 position)
        {
            var containingCHunk = ChunkArchitect.GetContainingChunk(position);

            return(containingCHunk.GetBlockForPosition(position));
        }
Exemplo n.º 4
0
 public void Initialize(ChunkArchitect chunkArchitect, SpaceArchitect spaceArchitect)
 {
     ChunkArchitect = chunkArchitect;
     SpaceArchitect = spaceArchitect;
 }