1
0
forked from MTSR/mapserver

rework layer system, switch to mapblock pos in mapserver.json

This commit is contained in:
Thomas Rudin 2019-03-29 19:21:27 +01:00
parent 7ab1f1c9d2
commit 126ed07ef8
10 changed files with 19 additions and 42 deletions

View File

@ -93,7 +93,7 @@ More layers can be added here:
}
],
```
*from* and *to* are in blocks (not mapblocks)
*from* and *to* are in mapblocks (16x16x16 blocks)
Don't reuse the `id` after the tiles are generated.
If you make more substantial changes here you may have to remove all
existing tiles and start rendering from scratch.

View File

@ -98,14 +98,14 @@ func ParseConfig(filename string) (*Config, error) {
&layer.Layer{
Id: 0,
Name: "Ground",
From: -16,
To: 160,
From: -1,
To: 10,
},
&layer.Layer{
Id: 1,
Name: "Sky",
From: 160,
To: 320,
From: 11,
To: 24,
},
}

View File

@ -14,7 +14,7 @@ func GetTileCoordsFromMapBlock(mbc *MapBlockCoords, layers []*layer.Layer) *Tile
var layerid *int
for _, l := range layers {
if (mbc.Y*16) >= l.From && (mbc.Y*16) <= l.To {
if mbc.Y >= l.From && mbc.Y <= l.To {
layerid = &l.Id
break
}

View File

@ -90,12 +90,9 @@ func (this *PostgresAccessor) FindNextInitialBlocks(s settings.Settings, layers
tc := coords.NewTileCoords(lastxblock, lastyblock, 9, lastlayer)
currentlayer := layer.FindLayerById(layers, lastlayer)
fromY := int(currentlayer.From / 16)
toY := int(currentlayer.To / 16)
tcr := coords.GetMapBlockRangeFromTile(tc, 0)
tcr.Pos1.Y = fromY
tcr.Pos2.Y = toY
tcr.Pos1.Y = currentlayer.From
tcr.Pos2.Y = currentlayer.To
fields := logrus.Fields{
"layerId": lastlayer,
@ -112,20 +109,6 @@ func (this *PostgresAccessor) FindNextInitialBlocks(s settings.Settings, layers
minZ := int(math.Min(float64(tcr.Pos1.Z), float64(tcr.Pos2.Z)))
maxZ := int(math.Max(float64(tcr.Pos1.Z), float64(tcr.Pos2.Z)))
//upper left: https://pandorabox.io/map/tiles/0/9/-121/-121
//lower right: https://pandorabox.io/map/tiles/0/9/120/120
// INFO[0007] Initial rendering elapsed=24.749287ms mapblocks=0 progress%=2 tiles=0
//INFO[0007] Initial-Query layerId=0 pos1="&{-1968 -1 1935}" pos2="&{-1953 10 1920}" prefix=postgres-db tile="&{-123 -121 9 0}"
//INFO[0007] Initial rendering elapsed=24.587519ms mapblocks=0 progress%=2 tiles=0
//INFO[0007] Initial-Query layerId=0 pos1="&{-1952 -1 1935}" pos2="&{-1937 10 1920}" prefix=postgres-db tile="&{-122 -121 9 0}"
//INFO[0007] Initial rendering elapsed=24.607329ms mapblocks=0 progress%=2 tiles=0
//INFO[0007] Initial-Query layerId=0 pos1="&{-1936 -1 1935}" pos2="&{-1921 10 1920}" prefix=postgres-db tile="&{-121 -121 9 0}"
//INFO[0007] Initial rendering elapsed=25.090037ms mapblocks=0 progress%=2 tiles=0
//INFO[0007] Initial-Query layerId=0 pos1="&{-1920 -1 1935}" pos2="&{-1905 10 1920}" prefix=postgres-db tile="&{-120 -121 9 0}"
//INFO[0007] Initial rendering elapsed=24.754558ms mapblocks=0 progress%=2 tiles=0
//INFO[0007] Initial-Query layerId=0 pos1="&{-1904 -1 1935}" pos2="&{-1889 10 1920}" prefix=postgres-db tile="&{-119 -121 9 0}"
//INFO[0007] Initial rendering elapsed=24.711348ms mapblocks=0 progress%=2 tiles=0
if lastxblock <= -128 {
//first x entry, check z stride
stridecount := this.intQuery(`

View File

@ -71,7 +71,7 @@ func (this *Sqlite3Accessor) FindNextInitialBlocks(s settings.Settings, layers [
// new position
lastpos = pos
blockcoordy := mb.Pos.Y * 16
blockcoordy := mb.Pos.Y
currentlayer := layer.FindLayerByY(layers, blockcoordy)
if currentlayer != nil {

View File

@ -52,7 +52,7 @@ func (a *MapBlockAccessor) FindMapBlocksByMtime(lastmtime int64, limit int, laye
inLayer := false
for _, l := range layerfilter {
if (block.Pos.Y*16) >= l.From && (block.Pos.Y*16) <= l.To {
if block.Pos.Y >= l.From && block.Pos.Y <= l.To {
inLayer = true
break
}

View File

@ -55,8 +55,8 @@ var AbstractGeoJsonOverlay = L.LayerGroup.extend({
var min = this._map.getBounds().getSouthWest();
var max = this._map.getBounds().getNorthEast();
var y1 = parseInt(mapLayer.from/16);
var y2 = parseInt(mapLayer.to/16);
var y1 = parseInt(mapLayer.from);
var y2 = parseInt(mapLayer.to);
var x1 = parseInt(min.lng/16);
var x2 = parseInt(max.lng/16);
var z1 = parseInt(min.lat/16);

View File

@ -65,8 +65,8 @@ var AbstractIconOverlay = L.LayerGroup.extend({
var min = this.map.getBounds().getSouthWest();
var max = this.map.getBounds().getNorthEast();
var y1 = parseInt(mapLayer.from/16);
var y2 = parseInt(mapLayer.to/16);
var y1 = parseInt(mapLayer.from);
var y2 = parseInt(mapLayer.to);
var x1 = parseInt(min.lng/16);
var x2 = parseInt(max.lng/16);
var z1 = parseInt(min.lat/16);

View File

@ -55,7 +55,7 @@ var PlayerOverlay = L.LayerGroup.extend({
isPlayerInCurrentLayer: function(player){
var mapLayer = this.layerMgr.getCurrentLayer()
return (player.pos.y >= mapLayer.from && player.pos.y <= mapLayer.to)
return (player.pos.y >= (mapLayer.from*16) && player.pos.y <= (mapLayer.to*16))
},
onMinetestUpdate: function(info){

View File

@ -103,15 +103,9 @@ func (tr *TileRenderer) renderImage(tc *coords.TileCoords, recursionDepth int) (
timer := prometheus.NewTimer(renderDuration)
defer timer.ObserveDuration()
var layer *layer.Layer
currentLayer := layer.FindLayerById(tr.layers, tc.LayerId)
for _, l := range tr.layers {
if l.Id == tc.LayerId {
layer = l
}
}
if layer == nil {
if currentLayer == nil {
return nil, nil, errors.New("No layer found")
}
@ -122,8 +116,8 @@ func (tr *TileRenderer) renderImage(tc *coords.TileCoords, recursionDepth int) (
if tc.Zoom == 13 {
//max zoomed in on mapblock level
mbr := coords.GetMapBlockRangeFromTile(tc, 0)
mbr.Pos1.Y = layer.From
mbr.Pos2.Y = layer.To
mbr.Pos1.Y = currentLayer.From
mbr.Pos2.Y = currentLayer.To
img, err := tr.mapblockrenderer.Render(mbr.Pos1, mbr.Pos2)