Merge remote branch 'origin/master'
This commit is contained in:
commit
3c793b5302
10 changed files with 390 additions and 104 deletions
|
|
@ -20,6 +20,7 @@ import org.dynmap.TileHashManager;
|
|||
import org.dynmap.debug.Debug;
|
||||
import org.dynmap.MapChunkCache;
|
||||
import org.dynmap.kzedmap.KzedMap.KzedBufferedImage;
|
||||
import org.dynmap.utils.FileLockManager;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class DefaultTileRenderer implements MapTileRenderer {
|
||||
|
|
@ -35,6 +36,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
protected int shadowscale[]; /* index=skylight level, value = 256 * scaling value */
|
||||
protected int lightscale[]; /* scale skylight level (light = lightscale[skylight] */
|
||||
protected boolean night_and_day; /* If true, render both day (prefix+'-day') and night (prefix) tiles */
|
||||
protected boolean transparency; /* Is transparency support active? */
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
|
|
@ -77,6 +79,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
}
|
||||
colorScheme = ColorScheme.getScheme((String)configuration.get("colorscheme"));
|
||||
night_and_day = configuration.getBoolean("night-and-day", false);
|
||||
transparency = configuration.getBoolean("transparency", true); /* Default on */
|
||||
}
|
||||
|
||||
public boolean render(MapChunkCache cache, KzedMapTile tile, File outputFile) {
|
||||
|
|
@ -228,6 +231,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
int oy = (mtile.py == zmtile.getTileY())?0:KzedMap.tileHeight/2;
|
||||
|
||||
/* Test to see if we're unchanged from older tile */
|
||||
FileLockManager.getWriteLock(fname);
|
||||
TileHashManager hashman = MapManager.mapman.hashman;
|
||||
long crc = hashman.calculateTileHash(img.argb_buf);
|
||||
boolean updated_fname = false;
|
||||
|
|
@ -247,6 +251,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
updated_fname = true;
|
||||
}
|
||||
KzedMap.freeBufferedImage(img);
|
||||
FileLockManager.releaseWriteLock(fname);
|
||||
MapManager.mapman.updateStatistics(mtile, null, true, updated_fname, !rendered);
|
||||
|
||||
mtile.file = fname;
|
||||
|
|
@ -254,6 +259,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
boolean updated_dfname = false;
|
||||
File dfname = new File(fname.getParent(), mtile.getDayFilename());
|
||||
if(img_day != null) {
|
||||
FileLockManager.getWriteLock(dfname);
|
||||
crc = hashman.calculateTileHash(img.argb_buf);
|
||||
if((!dfname.exists()) || (crc != hashman.getImageHashCode(mtile.getKey(), "day", tx, ty))) {
|
||||
Debug.debug("saving image " + dfname.getPath());
|
||||
|
|
@ -269,12 +275,14 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
updated_dfname = true;
|
||||
}
|
||||
KzedMap.freeBufferedImage(img_day);
|
||||
FileLockManager.releaseWriteLock(dfname);
|
||||
MapManager.mapman.updateStatistics(mtile, "day", true, updated_dfname, !rendered);
|
||||
}
|
||||
|
||||
// Since we've already got the new tile, and we're on an async thread, just
|
||||
// make the zoomed tile here
|
||||
boolean ztile_updated = false;
|
||||
FileLockManager.getWriteLock(zoomFile);
|
||||
if(updated_fname || (!zoomFile.exists())) {
|
||||
saveZoomedTile(zmtile, zoomFile, zimg, ox, oy);
|
||||
MapManager.mapman.pushUpdate(zmtile.getWorld(),
|
||||
|
|
@ -282,11 +290,13 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
ztile_updated = true;
|
||||
}
|
||||
KzedMap.freeBufferedImage(zimg);
|
||||
FileLockManager.releaseWriteLock(zoomFile);
|
||||
MapManager.mapman.updateStatistics(zmtile, null, true, ztile_updated, !rendered);
|
||||
|
||||
if(zimg_day != null) {
|
||||
File zoomFile_day = new File(zoomFile.getParent(), zmtile.getDayFilename());
|
||||
ztile_updated = false;
|
||||
FileLockManager.getWriteLock(zoomFile_day);
|
||||
if(updated_dfname || (!zoomFile_day.exists())) {
|
||||
saveZoomedTile(zmtile, zoomFile_day, zimg_day, ox, oy);
|
||||
MapManager.mapman.pushUpdate(zmtile.getWorld(),
|
||||
|
|
@ -294,6 +304,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
ztile_updated = true;
|
||||
}
|
||||
KzedMap.freeBufferedImage(zimg_day);
|
||||
FileLockManager.releaseWriteLock(zoomFile_day);
|
||||
MapManager.mapman.updateStatistics(zmtile, "day", true, ztile_updated, !rendered);
|
||||
}
|
||||
}
|
||||
|
|
@ -431,10 +442,10 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||
if (colors != null) {
|
||||
Color c = colors[seq];
|
||||
if (c.getAlpha() > 0) {
|
||||
/* we found something that isn't transparent! */
|
||||
if (c.getAlpha() == 255) {
|
||||
/* we found something that isn't transparent, or not doing transparency */
|
||||
if ((!transparency) || (c.getAlpha() == 255)) {
|
||||
/* it's opaque - the ray ends here */
|
||||
result.setColor(c);
|
||||
result.setARGB(c.getARGB() | 0xFF000000);
|
||||
if(lightlevel < 15) { /* Not full light? */
|
||||
shadowColor(result, lightlevel);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue