refactor: rename QuadTree to Node
This commit is contained in:
parent
a42bd9684f
commit
27dc7f1f2d
@ -148,7 +148,7 @@ public class ExtrusionRenderer extends LayerRenderer {
|
||||
if (!t.hasProxy(1 << j))
|
||||
continue;
|
||||
|
||||
MapTile c = t.rel.get(j);
|
||||
MapTile c = t.node.child(j);
|
||||
el = getLayer(c);
|
||||
|
||||
if (el == null || !el.compiled)
|
||||
|
||||
@ -22,7 +22,7 @@ import org.oscim.renderer.elements.ElementLayers;
|
||||
import org.oscim.renderer.elements.SymbolItem;
|
||||
import org.oscim.renderer.elements.TextItem;
|
||||
import org.oscim.utils.pool.Inlist;
|
||||
import org.oscim.utils.quadtree.QuadTree;
|
||||
import org.oscim.utils.quadtree.Node;
|
||||
|
||||
/**
|
||||
* Extends Tile class to hold state and data for concurrent use in
|
||||
@ -99,7 +99,7 @@ public class MapTile extends Tile {
|
||||
/**
|
||||
* Pointer to access relatives in QuadTree
|
||||
*/
|
||||
public QuadTree<MapTile> rel;
|
||||
public Node<MapTile> node;
|
||||
|
||||
/**
|
||||
* to avoid drawing a tile twice per frame
|
||||
@ -162,20 +162,20 @@ public class MapTile extends Tile {
|
||||
return;
|
||||
|
||||
// lock all tiles that could serve as proxy
|
||||
MapTile p = rel.parent.item;
|
||||
MapTile p = node.parent.item;
|
||||
if (p != null && (p.state != 0)) {
|
||||
proxies |= PROXY_PARENT;
|
||||
p.refs++;
|
||||
}
|
||||
|
||||
p = rel.parent.parent.item;
|
||||
p = node.parent.parent.item;
|
||||
if (p != null && (p.state != 0)) {
|
||||
proxies |= PROXY_GRAMPA;
|
||||
p.refs++;
|
||||
}
|
||||
|
||||
for (int j = 0; j < 4; j++) {
|
||||
if ((p = rel.get(j)) == null || p.state == 0)
|
||||
if ((p = node.child(j)) == null || p.state == 0)
|
||||
continue;
|
||||
|
||||
proxies |= (1 << j);
|
||||
@ -191,14 +191,14 @@ public class MapTile extends Tile {
|
||||
return;
|
||||
|
||||
if ((proxies & PROXY_PARENT) != 0)
|
||||
rel.parent.item.refs--;
|
||||
node.parent.item.refs--;
|
||||
|
||||
if ((proxies & PROXY_GRAMPA) != 0)
|
||||
rel.parent.parent.item.refs--;
|
||||
node.parent.parent.item.refs--;
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if ((proxies & (1 << i)) != 0)
|
||||
rel.get(i).refs--;
|
||||
node.child(i).refs--;
|
||||
}
|
||||
proxies = 0;
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ import org.oscim.map.Viewport;
|
||||
import org.oscim.renderer.BufferObject;
|
||||
import org.oscim.utils.FastMath;
|
||||
import org.oscim.utils.ScanBox;
|
||||
import org.oscim.utils.quadtree.QuadTree;
|
||||
import org.oscim.utils.quadtree.Node;
|
||||
import org.oscim.utils.quadtree.QuadTreeIndex;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -89,24 +89,24 @@ public class TileManager {
|
||||
|
||||
@Override
|
||||
public MapTile create(int x, int y, int z) {
|
||||
QuadTree<MapTile> t = super.add(x, y, z);
|
||||
Node<MapTile> t = super.add(x, y, z);
|
||||
t.item = new MapTile(x, y, (byte) z);
|
||||
t.item.rel = t;
|
||||
t.item.node = t;
|
||||
|
||||
return t.item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(MapTile t) {
|
||||
if (t.rel == null) {
|
||||
if (t.node == null) {
|
||||
log.debug("BUG already removed " + t);
|
||||
return;
|
||||
}
|
||||
|
||||
super.remove(t.rel);
|
||||
super.remove(t.node);
|
||||
|
||||
t.rel.item = null;
|
||||
t.rel = null;
|
||||
t.node.item = null;
|
||||
t.node = null;
|
||||
}
|
||||
};
|
||||
|
||||
@ -342,7 +342,7 @@ public class TileManager {
|
||||
boolean add = false;
|
||||
|
||||
// prefetch parent
|
||||
MapTile p = tile.rel.parent.item;
|
||||
MapTile p = tile.node.parent.item;
|
||||
|
||||
if (p == null) {
|
||||
p = mIndex.create(x >> 1, y >> 1, zoomLevel - 1);
|
||||
|
||||
@ -37,7 +37,7 @@ import org.oscim.renderer.elements.PolygonLayer;
|
||||
import org.oscim.renderer.elements.RenderElement;
|
||||
import org.oscim.utils.FastMath;
|
||||
import org.oscim.utils.ScanBox;
|
||||
import org.oscim.utils.quadtree.QuadTree;
|
||||
import org.oscim.utils.quadtree.Node;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -151,7 +151,7 @@ public class TileRenderer extends LayerRenderer {
|
||||
|
||||
// check near relatives than can serve as proxy
|
||||
if ((tile.proxies & MapTile.PROXY_PARENT) != 0) {
|
||||
MapTile rel = tile.rel.parent.item;
|
||||
MapTile rel = tile.node.parent.item;
|
||||
if (rel.state == STATE_NEW_DATA)
|
||||
uploadCnt += uploadTileData(rel);
|
||||
|
||||
@ -163,7 +163,7 @@ public class TileRenderer extends LayerRenderer {
|
||||
if ((tile.proxies & 1 << c) == 0)
|
||||
continue;
|
||||
|
||||
MapTile rel = tile.rel.get(i);
|
||||
MapTile rel = tile.node.child(i);
|
||||
if (rel != null && rel.state == STATE_NEW_DATA)
|
||||
uploadCnt += uploadTileData(rel);
|
||||
}
|
||||
@ -342,18 +342,18 @@ public class TileRenderer extends LayerRenderer {
|
||||
long maxFade = MapRenderer.frametime - 50;
|
||||
|
||||
for (int c = 0; c < 4; c++) {
|
||||
MapTile ci = t.rel.get(c);
|
||||
MapTile ci = t.node.child(c);
|
||||
if (ci == null)
|
||||
continue;
|
||||
|
||||
if (ci.state == MapTile.STATE_READY || ci.fadeTime > 0)
|
||||
maxFade = Math.min(maxFade, ci.fadeTime);
|
||||
}
|
||||
MapTile p = t.rel.getParent();
|
||||
MapTile p = t.node.parent();
|
||||
if (p != null && (p.state == MapTile.STATE_READY || p.fadeTime > 0)) {
|
||||
maxFade = Math.min(maxFade, p.fadeTime);
|
||||
|
||||
p = p.rel.getParent();
|
||||
p = p.node.parent();
|
||||
if (p != null && (p.state == MapTile.STATE_READY || p.fadeTime > 0))
|
||||
maxFade = Math.min(maxFade, p.fadeTime);
|
||||
}
|
||||
@ -560,7 +560,7 @@ public class TileRenderer extends LayerRenderer {
|
||||
if ((tile.proxies & 1 << i) == 0)
|
||||
continue;
|
||||
|
||||
MapTile c = tile.rel.get(i);
|
||||
MapTile c = tile.node.child(i);
|
||||
|
||||
if (c.state == STATE_READY) {
|
||||
drawTile(c, pos);
|
||||
@ -573,7 +573,7 @@ public class TileRenderer extends LayerRenderer {
|
||||
private void drawProxyTile(MapTile tile, MapPosition pos, boolean parent,
|
||||
boolean preferParent) {
|
||||
|
||||
QuadTree<MapTile> r = tile.rel;
|
||||
Node<MapTile> r = tile.node;
|
||||
MapTile proxy;
|
||||
|
||||
if (!preferParent) {
|
||||
|
||||
@ -16,12 +16,12 @@
|
||||
*/
|
||||
package org.oscim.utils.quadtree;
|
||||
|
||||
public class QuadTree<T> {
|
||||
public QuadTree<T> parent;
|
||||
public QuadTree<T> child00;
|
||||
public QuadTree<T> child10;
|
||||
public QuadTree<T> child01;
|
||||
public QuadTree<T> child11;
|
||||
public class Node<T> {
|
||||
public Node<T> parent;
|
||||
public Node<T> child00;
|
||||
public Node<T> child10;
|
||||
public Node<T> child01;
|
||||
public Node<T> child11;
|
||||
|
||||
public T item;
|
||||
|
||||
@ -31,11 +31,11 @@ public class QuadTree<T> {
|
||||
// number of children and grandchildren
|
||||
int refs = 0;
|
||||
|
||||
public T getParent() {
|
||||
public T parent() {
|
||||
return parent.item;
|
||||
}
|
||||
|
||||
public T get(int i) {
|
||||
public T child(int i) {
|
||||
switch (i) {
|
||||
case 0:
|
||||
return (child00 != null) ? child00.item : null;
|
||||
@ -18,12 +18,12 @@ package org.oscim.utils.quadtree;
|
||||
|
||||
public abstract class QuadTreeIndex<T> {
|
||||
|
||||
QuadTree<T> pool;
|
||||
Node<T> pool;
|
||||
|
||||
QuadTree<T> root;
|
||||
Node<T> root;
|
||||
|
||||
public QuadTreeIndex() {
|
||||
root = new QuadTree<T>();
|
||||
root = new Node<T>();
|
||||
root.parent = root;
|
||||
}
|
||||
|
||||
@ -37,11 +37,11 @@ public abstract class QuadTreeIndex<T> {
|
||||
|
||||
public abstract void remove(T item);
|
||||
|
||||
public QuadTree<T> add(int x, int y, int z) {
|
||||
public Node<T> add(int x, int y, int z) {
|
||||
|
||||
checkIndex(x, y, 1 << z);
|
||||
|
||||
QuadTree<T> leaf = root;
|
||||
Node<T> leaf = root;
|
||||
|
||||
for (int level = z - 1; level >= 0; level--) {
|
||||
|
||||
@ -49,7 +49,7 @@ public abstract class QuadTreeIndex<T> {
|
||||
|
||||
leaf.refs++;
|
||||
|
||||
QuadTree<T> cur = null;
|
||||
Node<T> cur = null;
|
||||
|
||||
switch (id) {
|
||||
case 0:
|
||||
@ -75,7 +75,7 @@ public abstract class QuadTreeIndex<T> {
|
||||
cur = pool;
|
||||
pool = pool.parent;
|
||||
} else {
|
||||
cur = new QuadTree<T>();
|
||||
cur = new Node<T>();
|
||||
}
|
||||
|
||||
cur.refs = 0;
|
||||
@ -109,7 +109,7 @@ public abstract class QuadTreeIndex<T> {
|
||||
|
||||
checkIndex(x, y, 1 << z);
|
||||
|
||||
QuadTree<T> leaf = root;
|
||||
Node<T> leaf = root;
|
||||
|
||||
for (int level = z - 1; level >= 0; level--) {
|
||||
|
||||
@ -140,10 +140,10 @@ public abstract class QuadTreeIndex<T> {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean remove(QuadTree<T> item) {
|
||||
public boolean remove(Node<T> item) {
|
||||
|
||||
QuadTree<T> cur = item;
|
||||
QuadTree<T> next;
|
||||
Node<T> cur = item;
|
||||
Node<T> next;
|
||||
|
||||
while (cur != root) {
|
||||
if (cur == null)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user