public boolean loadRegion( RegionManager regionManager, int x, int z, int zoomLevel, int dimension) { // MwUtil.log("mapTexture.loadRegion %d %d %d %d", x, z, zoomLevel, dimension); boolean alreadyLoaded = true; int index = this.getRegionIndex(x, z, zoomLevel); Region currentRegion = this.regionArray[index]; if ((currentRegion == null) || (!currentRegion.equals(x, z, zoomLevel, dimension))) { if (currentRegion != null) { currentRegion.refCount--; } Region newRegion = regionManager.getRegion(x, z, zoomLevel, dimension); this.regionArray[index] = newRegion; newRegion.refCount++; this.updateTextureFromRegion( newRegion, newRegion.x, newRegion.z, newRegion.size, newRegion.size); // oops! this needs to be after updateTextureFromRegion otherwise the GL texture will be // updated // and the regionModified flag cleared before the region is actually loaded. this.setRegionModified(index); // MwUtil.log("regionArray[%d] = %s", newRegion.index, newRegion); alreadyLoaded = false; } return alreadyLoaded; }