public void Destroy() { if (_activationCatalyst != null) { PositionTracker.Unsubscribe(_activationCatalyst, OnPositionUpdate); _activationCatalyst = null; } ChunkArchitect.Destroy(); }
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); } }
public Block GetBlock(IntVector2 position) { var containingCHunk = ChunkArchitect.GetContainingChunk(position); return(containingCHunk.GetBlockForPosition(position)); }
public void Initialize(ChunkArchitect chunkArchitect, SpaceArchitect spaceArchitect) { ChunkArchitect = chunkArchitect; SpaceArchitect = spaceArchitect; }