mirror of https://github.com/webbukkit/dynmap.git
Add tilescale and defaulttilescal : option for bigger tiles
This commit is contained in:
parent
fb0cceca58
commit
ee78384cdc
|
@ -90,6 +90,7 @@ public class DynmapMapCommands {
|
|||
mapSetArgs.put("mapzoomin", emptySupplier);
|
||||
mapSetArgs.put("mapzoomout", emptySupplier);
|
||||
mapSetArgs.put("boostzoom", emptySupplier);
|
||||
mapSetArgs.put("tilescale", emptySupplier);
|
||||
mapSetArgs.put("tileupdatedelay", emptySupplier);
|
||||
|
||||
tabCompletions = new HashMap<>();
|
||||
|
@ -695,7 +696,7 @@ public class DynmapMapCommands {
|
|||
sb.append(", lighting=").append(hdmt.getLighting().getName()).append(", mapzoomin=").append(hdmt.getMapZoomIn()).append(", mapzoomout=").append(hdmt.getMapZoomOutLevels());
|
||||
sb.append(", img-format=").append(hdmt.getImageFormatSetting()).append(", icon=").append(hdmt.getIcon());
|
||||
sb.append(", append-to-world=").append(hdmt.getAppendToWorld()).append(", boostzoom=").append(hdmt.getBoostZoom());
|
||||
sb.append(", protected=").append(hdmt.isProtected());
|
||||
sb.append(", protected=").append(hdmt.isProtected()).append(", tilescale=").append(hdmt.getTileScale());
|
||||
if(hdmt.tileupdatedelay > 0) {
|
||||
sb.append(", tileupdatedelay=").append(hdmt.tileupdatedelay);
|
||||
}
|
||||
|
@ -913,6 +914,18 @@ public class DynmapMapCommands {
|
|||
}
|
||||
did_update |= mt.setBoostZoom(mzi);
|
||||
}
|
||||
else if(tok[0].equalsIgnoreCase("tilescale")) {
|
||||
int mzi = -1;
|
||||
try {
|
||||
mzi = Integer.valueOf(tok[1]);
|
||||
} catch (NumberFormatException nfx) {
|
||||
}
|
||||
if((mzi < 0) || (mzi > 4)) {
|
||||
sender.sendMessage("Invalid tilescale value: " + tok[1]);
|
||||
return true;
|
||||
}
|
||||
did_update |= mt.setTileScale(mzi);
|
||||
}
|
||||
else if(tok[0].equalsIgnoreCase("tileupdatedelay")) {
|
||||
int tud = -1;
|
||||
try {
|
||||
|
|
|
@ -60,6 +60,7 @@ public class MapManager {
|
|||
private int progressinterval = 100;
|
||||
private int tileupdatedelay = 30;
|
||||
private int savependingperiod = 15 * 60; // every 15 minutes, by default
|
||||
private int defaulttilescale = 0;
|
||||
private boolean saverestorepending = true;
|
||||
private boolean pauseupdaterenders = false;
|
||||
private boolean hideores = false;
|
||||
|
@ -190,6 +191,10 @@ public class MapManager {
|
|||
return tileupdatedelay;
|
||||
}
|
||||
|
||||
public int getDefaultTileScale() {
|
||||
return defaulttilescale;
|
||||
}
|
||||
|
||||
private static class OurThreadFactory implements ThreadFactory {
|
||||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
|
@ -1147,7 +1152,9 @@ public class MapManager {
|
|||
if(progressinterval < 100) progressinterval = 100;
|
||||
saverestorepending = configuration.getBoolean("saverestorepending", true);
|
||||
tileupdatedelay = configuration.getInteger("tileupdatedelay", 30);
|
||||
|
||||
defaulttilescale = configuration.getInteger("defaulttilescale", 0);
|
||||
if (defaulttilescale < 0) defaulttilescale = 0;
|
||||
if (defaulttilescale > 4) defaulttilescale = 4;
|
||||
tpslimit_updaterenders = configuration.getDouble("update-min-tps", 18.0);
|
||||
if (tpslimit_updaterenders > 19.5) tpslimit_updaterenders = 19.5;
|
||||
tpslimit_fullrenders = configuration.getDouble("fullrender-min-tps", 18.0);
|
||||
|
|
|
@ -12,6 +12,7 @@ public abstract class MapTile {
|
|||
public abstract boolean render(MapChunkCache cache, String mapname);
|
||||
public abstract List<DynmapChunk> getRequiredChunks();
|
||||
public abstract MapTile[] getAdjecentTiles();
|
||||
public abstract int getTileSize();
|
||||
|
||||
public DynmapWorld getDynmapWorld() {
|
||||
return world;
|
||||
|
|
|
@ -34,6 +34,7 @@ public class HDMap extends MapType {
|
|||
private MapType.ImageFormat imgformat;
|
||||
private int bgcolornight;
|
||||
private int bgcolorday;
|
||||
private int tilescale;
|
||||
private String title;
|
||||
private String icon;
|
||||
private String bg_cfg;
|
||||
|
@ -140,6 +141,9 @@ public class HDMap extends MapType {
|
|||
this.mapzoomin = configuration.getInteger("mapzoomin", 2);
|
||||
this.mapzoomout = configuration.getInteger("mapzoomout", this.mapzoomout);
|
||||
this.boostzoom = configuration.getInteger("boostzoom", 0);
|
||||
this.tilescale = configuration.getInteger("tilescale", core.getMapManager().getDefaultTileScale()); // 0 = 128, 1 = 256, ...
|
||||
if (this.tilescale <= 0) this.tilescale = 0;
|
||||
if (this.tilescale >= 4) this.tilescale = 4; // Limit to 2k x 2k
|
||||
if(this.boostzoom < 0) this.boostzoom = 0;
|
||||
if(this.boostzoom > 3) this.boostzoom = 3;
|
||||
// Map zoom in must be at least as big as boost zoom
|
||||
|
@ -167,6 +171,7 @@ public class HDMap extends MapType {
|
|||
cn.put("mapzoomin", mapzoomin);
|
||||
cn.put("mapzoomout", mapzoomout);
|
||||
cn.put("boostzoom", boostzoom);
|
||||
cn.put("tilescale", tilescale);
|
||||
if(bg_cfg != null)
|
||||
cn.put("background", bg_cfg);
|
||||
if(bg_day_cfg != null)
|
||||
|
@ -185,15 +190,17 @@ public class HDMap extends MapType {
|
|||
public final HDPerspective getPerspective() { return perspective; }
|
||||
public final HDLighting getLighting() { return lighting; }
|
||||
public final int getBoostZoom() { return boostzoom; }
|
||||
public final int getTileSize() { return 128 << tilescale; }
|
||||
public final int getTileScale() { return tilescale; }
|
||||
|
||||
@Override
|
||||
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int x, int y, int z) {
|
||||
return perspective.getTileCoords(w, x, y, z);
|
||||
return perspective.getTileCoords(w, x, y, z, tilescale);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int minx, int miny, int minz, int maxx, int maxy, int maxz) {
|
||||
return perspective.getTileCoords(w, minx, miny, minz, maxx, maxy, maxz);
|
||||
return perspective.getTileCoords(w, minx, miny, minz, maxx, maxy, maxz, tilescale);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -270,6 +277,7 @@ public class HDMap extends MapType {
|
|||
s(o, "mapzoomout", (world.getExtraZoomOutLevels()+mapzoomout));
|
||||
s(o, "mapzoomin", mapzoomin);
|
||||
s(o, "boostzoom", boostzoom);
|
||||
s(o, "tilescale", tilescale);
|
||||
s(o, "protected", isProtected());
|
||||
s(o, "image-format", imgformat.getFileExt());
|
||||
if(append_to_world.length() > 0)
|
||||
|
@ -403,6 +411,13 @@ public class HDMap extends MapType {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
public boolean setTileScale(int mzi) {
|
||||
if(mzi != this.tilescale) {
|
||||
this.tilescale = mzi;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public boolean setPerspective(HDPerspective p) {
|
||||
if(perspective != p) {
|
||||
perspective = p;
|
||||
|
@ -450,7 +465,7 @@ public class HDMap extends MapType {
|
|||
|
||||
@Override
|
||||
public void addMapTiles(List<MapTile> list, DynmapWorld w, int tx, int ty) {
|
||||
list.add(new HDMapTile(w, this.perspective, tx, ty, boostzoom));
|
||||
list.add(new HDMapTile(w, this.perspective, tx, ty, boostzoom, tilescale));
|
||||
}
|
||||
|
||||
private static final ImageVariant[] dayVariant = { ImageVariant.STANDARD, ImageVariant.DAY };
|
||||
|
|
|
@ -12,29 +12,32 @@ public class HDMapTile extends MapTile {
|
|||
public final HDPerspective perspective;
|
||||
public final int tx, ty; /* Tile X and Tile Y are in tile coordinates (pixels/tile-size) */
|
||||
public final int boostzoom;
|
||||
public final int tilescale;
|
||||
|
||||
public HDMapTile(DynmapWorld world, HDPerspective perspective, int tx, int ty, int boostzoom) {
|
||||
public HDMapTile(DynmapWorld world, HDPerspective perspective, int tx, int ty, int boostzoom, int tilescale) {
|
||||
super(world);
|
||||
this.perspective = perspective;
|
||||
this.tx = tx;
|
||||
this.ty = ty;
|
||||
this.boostzoom = boostzoom;
|
||||
this.tilescale = tilescale;
|
||||
}
|
||||
|
||||
public HDMapTile(DynmapWorld world, String parm) throws Exception {
|
||||
super(world);
|
||||
|
||||
String[] parms = parm.split(",");
|
||||
if(parms.length < 3) throw new Exception("wrong parameter count");
|
||||
this.tx = Integer.parseInt(parms[0]);
|
||||
this.ty = Integer.parseInt(parms[1]);
|
||||
this.perspective = MapManager.mapman.hdmapman.perspectives.get(parms[2]);
|
||||
if(this.perspective == null) throw new Exception("invalid perspective");
|
||||
if(parms.length > 3)
|
||||
this.boostzoom = Integer.parseInt(parms[3]);
|
||||
else
|
||||
this.boostzoom = 0;
|
||||
}
|
||||
// public HDMapTile(DynmapWorld world, String parm) throws Exception {
|
||||
// super(world);
|
||||
//
|
||||
// String[] parms = parm.split(",");
|
||||
// if(parms.length < 3) throw new Exception("wrong parameter count");
|
||||
// this.tx = Integer.parseInt(parms[0]);
|
||||
// this.ty = Integer.parseInt(parms[1]);
|
||||
// this.perspective = MapManager.mapman.hdmapman.perspectives.get(parms[2]);
|
||||
// if(this.perspective == null) throw new Exception("invalid perspective");
|
||||
// if(parms.length > 3)
|
||||
// this.boostzoom = Integer.parseInt(parms[3]);
|
||||
// else
|
||||
// this.boostzoom = 0;
|
||||
// this.tilescale = 0;
|
||||
// }
|
||||
|
||||
@Override
|
||||
protected String saveTileData() {
|
||||
|
@ -63,6 +66,9 @@ public class HDMapTile extends MapTile {
|
|||
return world.getName() + ":" + perspective.getName() + "," + tx + "," + ty + ":" + boostzoom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTileSize() { return 128 << tilescale; }
|
||||
|
||||
@Override
|
||||
public boolean isBiomeDataNeeded() { return MapManager.mapman.hdmapman.isBiomeDataNeeded(this); }
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ public interface HDPerspective {
|
|||
/* Get name of perspective */
|
||||
String getName();
|
||||
/* Get tiles invalidated by change at given location */
|
||||
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int x, int y, int z);
|
||||
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int x, int y, int z, int tilescale);
|
||||
/* Get tiles invalidated by change at given volume, defined by 2 opposite corner locations */
|
||||
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int minx, int miny, int minz, int maxx, int maxy, int maxz);
|
||||
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int minx, int miny, int minz, int maxx, int maxy, int maxz, int tilescale);
|
||||
/* Get tiles adjacent to given tile */
|
||||
MapTile[] getAdjecentTiles(MapTile tile);
|
||||
/* Get chunks needed for given tile */
|
||||
|
|
|
@ -63,10 +63,6 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
/* Scale for default tiles */
|
||||
private final int basemodscale;
|
||||
|
||||
/* dimensions of a map tile */
|
||||
public static final int tileWidth = 128;
|
||||
public static final int tileHeight = 128;
|
||||
|
||||
/* Maximum and minimum inclinations */
|
||||
public static final double MAX_INCLINATION = 90.0;
|
||||
public static final double MIN_INCLINATION = 20.0;
|
||||
|
@ -1055,13 +1051,14 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int x, int y, int z) {
|
||||
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int x, int y, int z, int tilescale) {
|
||||
HashSet<TileFlags.TileCoord> tiles = new HashSet<TileFlags.TileCoord>();
|
||||
Vector3D block = new Vector3D();
|
||||
block.x = x;
|
||||
block.y = y;
|
||||
block.z = z;
|
||||
Vector3D corner = new Vector3D();
|
||||
int tileSize = 128 << tilescale;
|
||||
/* Loop through corners of the cube */
|
||||
for(int i = 0; i < 2; i++) {
|
||||
double inity = block.y;
|
||||
|
@ -1069,7 +1066,7 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
double initz = block.z;
|
||||
for(int k = 0; k < 2; k++) {
|
||||
world_to_map.transform(block, corner); /* Get map coordinate of corner */
|
||||
tiles.add(new TileFlags.TileCoord(fastFloor(corner.x/tileWidth), fastFloor(corner.y/tileHeight)));
|
||||
tiles.add(new TileFlags.TileCoord(fastFloor(corner.x/tileSize), fastFloor(corner.y/tileSize)));
|
||||
block.z += 1;
|
||||
}
|
||||
block.z = initz;
|
||||
|
@ -1082,7 +1079,7 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int minx, int miny, int minz, int maxx, int maxy, int maxz) {
|
||||
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int minx, int miny, int minz, int maxx, int maxy, int maxz, int tilescale) {
|
||||
ArrayList<TileFlags.TileCoord> tiles = new ArrayList<TileFlags.TileCoord>();
|
||||
Vector3D blocks[] = new Vector3D[] { new Vector3D(), new Vector3D() };
|
||||
blocks[0].x = minx - 1;
|
||||
|
@ -1098,6 +1095,7 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
int maxtilex = Integer.MIN_VALUE;
|
||||
int mintiley = Integer.MAX_VALUE;
|
||||
int maxtiley = Integer.MIN_VALUE;
|
||||
int tileSize = 128 << tilescale;
|
||||
/* Loop through corners of the prism */
|
||||
for(int i = 0; i < 2; i++) {
|
||||
corner.x = blocks[i].x;
|
||||
|
@ -1106,8 +1104,8 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
for(int k = 0; k < 2; k++) {
|
||||
corner.z = blocks[k].z;
|
||||
world_to_map.transform(corner, tcorner); /* Get map coordinate of corner */
|
||||
int tx = fastFloor(tcorner.x/tileWidth);
|
||||
int ty = fastFloor(tcorner.y/tileWidth);
|
||||
int tx = fastFloor(tcorner.x/(tileSize << tilescale));
|
||||
int ty = fastFloor(tcorner.y/(tileSize << tilescale));
|
||||
if(mintilex > tx) mintilex = tx;
|
||||
if(maxtilex < tx) maxtilex = tx;
|
||||
if(mintiley > ty) mintiley = ty;
|
||||
|
@ -1131,14 +1129,14 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
int x = t.tx;
|
||||
int y = t.ty;
|
||||
return new MapTile[] {
|
||||
new HDMapTile(w, this, x - 1, y - 1, t.boostzoom),
|
||||
new HDMapTile(w, this, x + 1, y - 1, t.boostzoom),
|
||||
new HDMapTile(w, this, x - 1, y + 1, t.boostzoom),
|
||||
new HDMapTile(w, this, x + 1, y + 1, t.boostzoom),
|
||||
new HDMapTile(w, this, x, y - 1, t.boostzoom),
|
||||
new HDMapTile(w, this, x + 1, y, t.boostzoom),
|
||||
new HDMapTile(w, this, x, y + 1, t.boostzoom),
|
||||
new HDMapTile(w, this, x - 1, y, t.boostzoom) };
|
||||
new HDMapTile(w, this, x - 1, y - 1, t.boostzoom, t.tilescale),
|
||||
new HDMapTile(w, this, x + 1, y - 1, t.boostzoom, t.tilescale),
|
||||
new HDMapTile(w, this, x - 1, y + 1, t.boostzoom, t.tilescale),
|
||||
new HDMapTile(w, this, x + 1, y + 1, t.boostzoom, t.tilescale),
|
||||
new HDMapTile(w, this, x, y - 1, t.boostzoom, t.tilescale),
|
||||
new HDMapTile(w, this, x + 1, y, t.boostzoom, t.tilescale),
|
||||
new HDMapTile(w, this, x, y + 1, t.boostzoom, t.tilescale),
|
||||
new HDMapTile(w, this, x - 1, y, t.boostzoom, t.tilescale) };
|
||||
}
|
||||
|
||||
private static final int corners_by_side[][] = {
|
||||
|
@ -1160,6 +1158,7 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
int max_chunk_x = Integer.MIN_VALUE;
|
||||
int min_chunk_z = Integer.MAX_VALUE;
|
||||
int max_chunk_z = Integer.MIN_VALUE;
|
||||
int tileSize = tile.getTileSize();
|
||||
|
||||
/* Make corners for volume:
|
||||
* 0 = bottom-lower-left (xyz),
|
||||
|
@ -1177,8 +1176,8 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
for(int y = t.ty; y <= (t.ty+1); y++) {
|
||||
for(int z = 0; z <= 1; z++) {
|
||||
corners[idx] = new Vector3D();
|
||||
corners[idx].x = x*tileWidth + dx;
|
||||
corners[idx].y = y*tileHeight + dy;
|
||||
corners[idx].x = x*tileSize + dx;
|
||||
corners[idx].y = y*tileSize + dy;
|
||||
corners[idx].z = (z == 1) ? t.getDynmapWorld().worldheight : t.getDynmapWorld().minY;
|
||||
map_to_world.transform(corners[idx]);
|
||||
/* Compute chunk coordinates of corner */
|
||||
|
@ -1232,8 +1231,9 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
Color rslt = new Color();
|
||||
MapIterator mapiter = cache.getIterator(0, 0, 0);
|
||||
DynmapWorld world = tile.getDynmapWorld();
|
||||
int tileSize = tile.getTileSize();
|
||||
int scaled = 0;
|
||||
if ((tile.boostzoom > 0) && MarkerAPIImpl.testTileForBoostMarkers(cache.getWorld(), this, tile.tx * tileWidth, tile.ty * tileHeight, tileWidth)) {
|
||||
if ((tile.boostzoom > 0) && MarkerAPIImpl.testTileForBoostMarkers(cache.getWorld(), this, tile.tx * tileSize, tile.ty * tileSize, tileSize)) {
|
||||
scaled = tile.boostzoom;
|
||||
}
|
||||
int sizescale = 1 << scaled;
|
||||
|
@ -1256,10 +1256,10 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
|
||||
for(int i = 0; i < numshaders; i++) {
|
||||
HDLighting lighting = shaderstate[i].getLighting();
|
||||
im[i] = DynmapBufferedImage.allocateBufferedImage(tileWidth * sizescale, tileHeight * sizescale);
|
||||
im[i] = DynmapBufferedImage.allocateBufferedImage(tileSize * sizescale, tileSize * sizescale);
|
||||
argb_buf[i] = im[i].argb_buf;
|
||||
if(lighting.isNightAndDayEnabled()) {
|
||||
dayim[i] = DynmapBufferedImage.allocateBufferedImage(tileWidth * sizescale, tileHeight * sizescale);
|
||||
dayim[i] = DynmapBufferedImage.allocateBufferedImage(tileSize * sizescale, tileSize * sizescale);
|
||||
day_argb_buf[i] = dayim[i].argb_buf;
|
||||
}
|
||||
isjpg[i] = shaderstate[i].getMap().getImageFormat() != ImageFormat.FORMAT_PNG;
|
||||
|
@ -1279,8 +1279,8 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
ps.top = new Vector3D();
|
||||
ps.bottom = new Vector3D();
|
||||
ps.direction = new Vector3D();
|
||||
double xbase = tile.tx * tileWidth;
|
||||
double ybase = tile.ty * tileHeight;
|
||||
double xbase = tile.tx * tileSize;
|
||||
double ybase = tile.ty * tileSize;
|
||||
boolean shaderdone[] = new boolean[numshaders];
|
||||
boolean rendered[] = new boolean[numshaders];
|
||||
double height = maxheight;
|
||||
|
@ -1295,9 +1295,9 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
miny = tile.getDynmapWorld().minY;
|
||||
}
|
||||
|
||||
for(int x = 0; x < tileWidth * sizescale; x++) {
|
||||
for(int x = 0; x < tileSize * sizescale; x++) {
|
||||
ps.px = x;
|
||||
for(int y = 0; y < tileHeight * sizescale; y++) {
|
||||
for(int y = 0; y < tileSize * sizescale; y++) {
|
||||
ps.top.x = ps.bottom.x = xbase + (x + 0.5) / sizescale; /* Start at center of pixel at Y=height+0.5, bottom at Y=-0.5 */
|
||||
ps.top.y = ps.bottom.y = ybase + (y + 0.5) / sizescale;
|
||||
ps.top.z = height + 0.5; ps.bottom.z = miny - 0.5;
|
||||
|
@ -1327,19 +1327,19 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
int c_argb = rslt.getARGB();
|
||||
if(c_argb != 0) rendered[i] = true;
|
||||
if(isjpg[i] && (c_argb == 0)) {
|
||||
argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = bgnight[i];
|
||||
argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = bgnight[i];
|
||||
}
|
||||
else {
|
||||
argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = c_argb;
|
||||
argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = c_argb;
|
||||
}
|
||||
if(day_argb_buf[i] != null) {
|
||||
shaderstate[i].getRayColor(rslt, 1);
|
||||
c_argb = rslt.getARGB();
|
||||
if(isjpg[i] && (c_argb == 0)) {
|
||||
day_argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = bgday[i];
|
||||
day_argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = bgday[i];
|
||||
}
|
||||
else {
|
||||
day_argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = c_argb;
|
||||
day_argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = c_argb;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,13 +5,13 @@ var HDProjection = DynmapProjection.extend({
|
|||
lng = wtp[0] * location.x + wtp[1] * location.y + wtp[2] * location.z;
|
||||
|
||||
return new L.LatLng(
|
||||
-((128 - lat) / (1 << this.options.mapzoomout))
|
||||
-(((128 << this.options.tilescale) - lat) / (1 << this.options.mapzoomout))
|
||||
, lng / (1 << this.options.mapzoomout)
|
||||
, location.y);
|
||||
},
|
||||
fromLatLngToLocation: function(latlon, y) {
|
||||
var ptw = this.options.maptoworld,
|
||||
lat = 128 + latlon.lat * (1 << this.options.mapzoomout),
|
||||
lat = (128 << this.options.tilescale) + latlon.lat * (1 << this.options.mapzoomout),
|
||||
lng = latlon.lng * (1 << this.options.mapzoomout),
|
||||
x = ptw[0] * lng + ptw[1] * lat + ptw[2] * y,
|
||||
z = ptw[6] * lng + ptw[7] * lat + ptw[8] * y;
|
||||
|
@ -25,12 +25,12 @@ var HDMapType = DynmapTileLayer.extend({
|
|||
options: {
|
||||
minZoom: 0,
|
||||
errorTileUrl: 'images/blank.png',
|
||||
tileSize: 128,
|
||||
zoomReverse: true,
|
||||
},
|
||||
initialize: function(options) {
|
||||
options.maxZoom = options.mapzoomin + options.mapzoomout;
|
||||
options.maxNativeZoom = options.mapzoomout;
|
||||
options.tileSize = 128 << (options.tilescale || 0);
|
||||
|
||||
this.projection = new HDProjection($.extend({map: this}, options));
|
||||
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncommoent one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
|
||||
deftemplatesuffix: hires
|
||||
|
||||
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
|
||||
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
|
||||
#defaulttilescale: 0
|
||||
|
||||
# Map storage scheme: only uncomment one 'type' value
|
||||
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
|
||||
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
|
||||
|
|
Loading…
Reference in New Issue