private void OnEnable() { // Load or create layers asset if (!LoadLayersAsset()) { CreateLayersAsset(); } // Setup re-orderable list for managing layers layersList = new ReorderableList(layers.layers, typeof(string)); layersList.drawHeaderCallback = (Rect rect) => { GUI.Label(rect, "Layers"); }; layersList.onAddCallback = AddLayer; layersList.drawElementCallback = DrawLayerElement; layersList.onRemoveCallback = RemoveLayer; layersList.onReorderCallback = ReorderLayers; // If there are no layers, make a default one if (layers.layers.Count == 0) { TileMapLayers.Layer layer = new TileMapLayers.Layer(); layer.enabled = true; layer.name = "Default"; layers.layers.Add(layer); } layersList.index = 0; }
private void AddLayer(ReorderableList list) { TileMapLayers.Layer layer = new TileMapLayers.Layer(); layer.enabled = true; layer.name = "New Layer"; list.list.Add(layer); EditorUtility.SetDirty(layers); }
private void DrawLayerElement(Rect rect, int index, bool isActive, bool isFocused) { TileMapLayers.Layer layer = (TileMapLayers.Layer)layersList.list[index]; // Add some padding rect.yMin++; rect.height -= 2f; // Enabled checkbox bool wasEnabled = layer.enabled; layer.enabled = EditorGUI.Toggle(new Rect(rect.position, new Vector2(rect.height, rect.height)), layer.enabled); if (layer.enabled != wasEnabled) { Transform layerObject = ((TileMap)target).transform.Find(layer.name); if (layerObject != null) { layerObject.gameObject.SetActive(layer.enabled); } } rect.xMin += rect.height + 2f; // Layer name textbox string newName = EditorGUI.TextField(rect, layer.name); if (layer.name != newName) { if (!layers.layers.Exists((TileMapLayers.Layer other) => other.name == newName) && newName != "") { Transform layerObject = ((TileMap)target).transform.Find(layer.name); if (layerObject != null) { layerObject.name = newName; } layer.name = newName; } } layersList.list[index] = layer; if (GUI.changed) { EditorUtility.SetDirty(layers); } }