diff --git a/src/main/java/org/ultramine/server/chunk/ChunkMap.java b/src/main/java/org/ultramine/server/chunk/ChunkMap.java index c361e91..1c947ba 100644 --- a/src/main/java/org/ultramine/server/chunk/ChunkMap.java +++ b/src/main/java/org/ultramine/server/chunk/ChunkMap.java @@ -11,76 +11,40 @@ public class ChunkMap { - private static final int FLAT_LOOKUP_SIZE = 512; - private static final int FLAT_MAP_SIZE = FLAT_LOOKUP_SIZE*2; - - private final Chunk[] flatMap = new Chunk[FLAT_MAP_SIZE*FLAT_MAP_SIZE]; - private final IntObjMap map = HashIntObjMaps.newMutableMap(); public void put(int x, int z, Chunk chunk) { - put(x, z, ChunkHash.chunkToKey(x, z), chunk); + put(ChunkHash.chunkToKey(x, z), chunk); } - public void put(int hash, Chunk chunk) + public void put(int key, Chunk chunk) { - put(ChunkHash.keyToX(hash), ChunkHash.keyToZ(hash), hash, chunk); + map.put(key, chunk); } public Chunk get(int x, int z) { - if(isFlatMapable(x, z)) - { - return getFlat(x, z); - } - return map.get(ChunkHash.chunkToKey(x, z)); } public Chunk get(int hash) { - int x = ChunkHash.keyToX(hash); - int z = ChunkHash.keyToZ(hash); - - if(isFlatMapable(x, z)) - { - return getFlat(x, z); - } - return map.get(hash); } public Chunk remove(int x, int z) { - if(isFlatMapable(x, z)) - { - removeFlat(x, z); - } - return map.remove(ChunkHash.chunkToKey(x, z)); } public Chunk remove(int hash) { - int x = ChunkHash.keyToX(hash); - int z = ChunkHash.keyToZ(hash); - - if(isFlatMapable(x, z)) - { - removeFlat(x, z); - } - return map.remove(hash); } public boolean contains(int x, int z) { - if(isFlatMapable(x, z)) - { - return containsFlat(x, z); - } - return map.containsKey(ChunkHash.chunkToKey(x, z)); } @@ -106,52 +70,6 @@ public void clear() { - for(Chunk chunk : valueCollection()) - if(isFlatMapable(chunk.xPosition, chunk.zPosition)) - removeFlat(chunk.xPosition, chunk.zPosition); - map.clear(); } - - - - private void put(int x, int z, int hash, Chunk chunk) - { - if(isFlatMapable(x, z)) - { - putFlat(x, z, chunk); - } - - map.put(hash, chunk); - } - - private boolean isFlatMapable(int x, int z) - { - return Math.abs(x) < FLAT_LOOKUP_SIZE && Math.abs(z) < FLAT_LOOKUP_SIZE; - } - - private int getFlatIndex(int x, int z) - { - return (x + FLAT_LOOKUP_SIZE)*FLAT_MAP_SIZE + (z + FLAT_LOOKUP_SIZE); - } - - private void putFlat(int x, int z, Chunk chunk) - { - flatMap[getFlatIndex(x, z)] = chunk; - } - - private Chunk getFlat(int x, int z) - { - return flatMap[getFlatIndex(x, z)]; - } - - private void removeFlat(int x, int z) - { - flatMap[getFlatIndex(x, z)] = null; - } - - private boolean containsFlat(int x, int z) - { - return flatMap[getFlatIndex(x, z)] != null; - } }