2021-06-25 18:14:40 +02:00
|
|
|
import type { ITiledMap, ITiledMapLayer } from "./ITiledMap";
|
2021-05-12 14:30:12 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Flatten the grouped layers
|
|
|
|
*/
|
|
|
|
export function flattenGroupLayersMap(map: ITiledMap) {
|
2021-05-18 11:50:03 +02:00
|
|
|
const flatLayers: ITiledMapLayer[] = [];
|
2021-06-25 18:14:40 +02:00
|
|
|
flattenGroupLayers(map.layers, "", flatLayers);
|
2021-05-12 14:30:12 +02:00
|
|
|
return flatLayers;
|
|
|
|
}
|
|
|
|
|
2021-06-25 18:14:40 +02:00
|
|
|
function flattenGroupLayers(layers: ITiledMapLayer[], prefix: string, flatLayers: ITiledMapLayer[]) {
|
2021-09-09 08:47:38 +02:00
|
|
|
for (const layer of layers.map((layer) => ({ ...layer }))) {
|
2021-06-25 18:14:40 +02:00
|
|
|
if (layer.type === "group") {
|
|
|
|
flattenGroupLayers(layer.layers, prefix + layer.name + "/", flatLayers);
|
2021-05-12 14:30:12 +02:00
|
|
|
} else {
|
2021-06-25 18:14:40 +02:00
|
|
|
layer.name = prefix + layer.name;
|
2021-05-18 15:41:16 +02:00
|
|
|
flatLayers.push(layer);
|
2021-05-12 14:30:12 +02:00
|
|
|
}
|
|
|
|
}
|
2021-06-25 18:14:40 +02:00
|
|
|
}
|