static bool TreatLayers(GameObject parent, TMX.BaseLayerElement[] layers) { for (int i = 0; i < layers.Length; i++) { TMX.BaseLayerElement layer = layers[i]; GameObject layerObject; GenerateLayerObject(parent, layer, out layerObject); if (layerObject != null) { if (!layer.visible) { if (s_setHiddenLayersToInactive) { layerObject.SetActive(false); } else { Renderer[] renderers = layerObject.GetComponentsInChildren <Renderer>(); foreach (Renderer r in renderers) { r.enabled = false; } } } HandleCustomProperties(layerObject, layer.properties); Undo.RegisterCreatedObjectUndo(layerObject, "Import layer " + layerObject.name); } } return(true); }
static bool GenerateLayerObject(GameObject parent, TMX.BaseLayerElement layer, out GameObject layerObject) { layerObject = null; if (layer is TMX.Layer) { TMX.Layer tmxLayer = layer as TMX.Layer; bool success = TileLayerImporter.ImportTileLayer(tmxLayer, parent, s_orderInLayer, s_map.infinite, out layerObject); s_orderInLayer++; if (!success) { return(false); } } else if (layer is TMX.ObjectGroup) { TMX.ObjectGroup objectGroup = layer as TMX.ObjectGroup; bool success = ObjectLayerImporter.ImportObjectGroup(objectGroup, ref s_orderInLayer, parent, out layerObject); s_orderInLayer++; if (!success) { return(false); } } else if (layer is TMX.ImageLayer) { if (!ImportUtils.CreateAssetFolderIfMissing(s_imageLayerSpriteDir, true)) { return(false); } TMX.ImageLayer imageLayer = layer as TMX.ImageLayer; bool success = ImageLayerImporter.ImportImageLayer(imageLayer, parent, s_orderInLayer, out layerObject); s_orderInLayer++; if (!success) { return(false); } } else if (layer is TMX.GroupLayer) { TMX.GroupLayer groupLayer = layer as TMX.GroupLayer; GameObject newGroupLayer = new GameObject(groupLayer.name); newGroupLayer.transform.SetParent(parent.transform, false); layerObject = newGroupLayer; SetupLayerOffset(newGroupLayer, groupLayer.offsetx, groupLayer.offsety); if (groupLayer.childLayers != null) { TreatLayers(newGroupLayer, groupLayer.childLayers); } } return(true); }