diff --git a/vtm-playground/src/org/oscim/test/gdx/poi3d/Poi3DLayer.java b/vtm-playground/src/org/oscim/test/gdx/poi3d/Poi3DLayer.java
index 74d8fde3..1085b943 100644
--- a/vtm-playground/src/org/oscim/test/gdx/poi3d/Poi3DLayer.java
+++ b/vtm-playground/src/org/oscim/test/gdx/poi3d/Poi3DLayer.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2014 Hannes Janetzek
+ * Copyright 2018 Gustl22
+ *
+ * This program is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program. If not, see .
+ */
+
package org.oscim.test.gdx.poi3d;
import com.badlogic.gdx.assets.AssetManager;
@@ -29,12 +45,15 @@ import org.slf4j.LoggerFactory;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
+/**
+ * Experimental Layer to display POIs with 3D models.
+ */
public class Poi3DLayer extends Layer implements Map.UpdateListener {
- static final Logger log = LoggerFactory.getLogger(Poi3DLayer.class);
+ private static final Logger log = LoggerFactory.getLogger(Poi3DLayer.class);
static class Poi3DTileData extends TileData {
- public final List symbols = new List();
+ public final List symbols = new List<>();
@Override
protected void dispose() {
@@ -42,21 +61,22 @@ public class Poi3DLayer extends Layer implements Map.UpdateListener {
}
}
- final static String POI_DATA = Poi3DLayer.class.getSimpleName();
- final static Tag TREE_TAG = new Tag("natural", "tree");
+ static final String POI_DATA = Poi3DLayer.class.getSimpleName();
+ static final Tag TREE_TAG = new Tag("natural", "tree");
- private Poi3DTileData get(MapTile tile) {
- Poi3DTileData ld = (Poi3DTileData) tile.getData(POI_DATA);
- if (ld == null) {
- ld = new Poi3DTileData();
- tile.addData(POI_DATA, ld);
- }
- return ld;
- }
-
- GdxRenderer3D g3d;
+ AssetManager assets;
+ GdxRenderer3D2 g3d;
+ boolean loading;
+ Model mModel;
VectorTileLayer mTileLayer;
+ LinkedHashMap> mTileMap = new LinkedHashMap<>();
+
+ TileSet mTileSet = new TileSet();
+ TileSet mPrevTiles = new TileSet();
+
+ private final String pathToTree;
+
public Poi3DLayer(Map map, VectorTileLayer tileLayer) {
super(map);
tileLayer.addHook(new TileLoaderProcessHook() {
@@ -83,7 +103,7 @@ public class Poi3DLayer extends Layer implements Map.UpdateListener {
});
mTileLayer = tileLayer;
- mRenderer = g3d = new GdxRenderer3D(mMap);
+ mRenderer = g3d = new GdxRenderer3D2(mMap);
// Material mat = new
// Material(ColorAttribute.createDiffuse(Color.BLUE));
@@ -101,33 +121,40 @@ public class Poi3DLayer extends Layer implements Map.UpdateListener {
loading = true;
}
- TileSet mTileSet = new TileSet();
- TileSet mPrevTiles = new TileSet();
-
- LinkedHashMap> mTileMap =
- new LinkedHashMap<>();
-
- boolean loading;
- Model mModel;
- AssetManager assets;
-
- private final String pathToTree;
-
private void doneLoading() {
Model model = assets.get(pathToTree, Model.class);
for (int i = 0; i < model.nodes.size; i++) {
- Node node = model.nodes.get(i);
+ for (Node node : model.nodes) {
+ log.debug("loader node " + node.id);
- if (node.id.equals("treeA_root")) {
+ /* Use with {@link GdxRenderer3D} */
+ if (node.hasChildren() && ((Object) g3d) instanceof GdxRenderer3D) {
+ if (model.nodes.size != 1) {
+ throw new RuntimeException("Model has more than one node with GdxRenderer: " + model.toString());
+ }
+ node = node.getChild(0);
+ log.debug("loader node " + node.id);
+
+ model.nodes.removeIndex(0);
+ model.nodes.add(node);
+ }
node.rotation.setFromAxis(1, 0, 0, 90);
- mModel = model;
-
}
+ mModel = model;
}
loading = false;
}
+ private Poi3DTileData get(MapTile tile) {
+ Poi3DTileData ld = (Poi3DTileData) tile.getData(POI_DATA);
+ if (ld == null) {
+ ld = new Poi3DTileData();
+ tile.addData(POI_DATA, ld);
+ }
+ return ld;
+ }
+
@Override
public void onMapEvent(Event ev, MapPosition pos) {