/** Add model to TileMap */ public final void addModel(final TileMapModel model) { int mapTileWidth = (int) model.getTileSize().x; int mapTileHeight = (int) model.getTileSize().y; for (int i = 0; i < model.getLayersCount(); i++) { final TileMapLayer layer = model.getLayer(i); int width = (int) Math.min(layer.mWidth, model.getMapSize().x); int height = (int) Math.min(layer.mHeight, model.getMapSize().y); LayerInfo layerInfo = addLayerInfo(new Vector2(width, height)); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { final int tileId = layer.mData[x + y * width]; if (tileId == 0) continue; final TileInfo tileInfo = model.getTileInfo(tileId); // Prepare Buffer layerInfo.prepareBuffer(tileInfo); // Get Buffer LayerInfo.Buffer buff = layerInfo.getBuffer(tileInfo); // Get Rect Area RectF textureArea = tileInfo.getTextureArea(); RectF textureAreaU = GeneralUtils.divideRect(textureArea, tileInfo.getTexture().getSize()); Vector2 tileSize = tileInfo.getSize(); final int tileWidth = (int) tileSize.x; final int tileHeight = (int) tileSize.y; // Put Element buffer buff.mElementsVertex.put(x * mapTileWidth); buff.mElementsVertex.put(y * mapTileHeight); buff.mElementsVertex.put(x * mapTileWidth + tileWidth); buff.mElementsVertex.put(y * mapTileHeight); buff.mElementsVertex.put(x * mapTileWidth + tileWidth); buff.mElementsVertex.put(y * mapTileHeight + tileHeight); buff.mElementsVertex.put(x * mapTileWidth); buff.mElementsVertex.put(y * mapTileHeight); buff.mElementsVertex.put(x * mapTileWidth); buff.mElementsVertex.put(y * mapTileHeight + tileHeight); buff.mElementsVertex.put(x * mapTileWidth + tileWidth); buff.mElementsVertex.put(y * mapTileHeight + tileHeight); // Put Texture Buffer buff.mTextureVertex.put(textureAreaU.left); buff.mTextureVertex.put(textureAreaU.top); buff.mTextureVertex.put(textureAreaU.right); buff.mTextureVertex.put(textureAreaU.top); buff.mTextureVertex.put(textureAreaU.right); buff.mTextureVertex.put(textureAreaU.bottom); buff.mTextureVertex.put(textureAreaU.left); buff.mTextureVertex.put(textureAreaU.top); buff.mTextureVertex.put(textureAreaU.left); buff.mTextureVertex.put(textureAreaU.bottom); buff.mTextureVertex.put(textureAreaU.right); buff.mTextureVertex.put(textureAreaU.bottom); } } layerInfo.pack(); } }