示例#1
0
    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;
    }
示例#2
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);
 }
示例#3
0
    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);
        }
    }