Ejemplo n.º 1
0
    void Draw()
    {
        var   id   = brush.tileId.ToString();
        float posX = brush.transform.position.x - 0.5f;
        float posY = brush.transform.position.y - 0.5f;

        GameObject tile = GameObject.Find(map.name + "/Tiles/tile_" + id);

        if (tile == null)
        {
            tile = new GameObject("tile_" + id);
            tile.transform.parent   = map.tiles.transform;
            tile.transform.position = new Vector3(posX + 0.5f, posY + 0.5f, 0);
            tile.AddComponent <SpriteRenderer>();
        }

        tile.GetComponent <SpriteRenderer>().sprite = brush.GetComponent <SpriteRenderer>().sprite;

        if (map.boxCollider)
        {
            if (tile.GetComponent <BoxCollider2D>() == null)
            {
                tile.AddComponent <BoxCollider2D>();
            }
            tile.GetComponent <BoxCollider2D>().size = new Vector2(map.tileSize.x / 100, map.tileSize.y / 100);
        }
        else
        {
            if (tile.GetComponent <BoxCollider2D>() != null)
            {
                DestroyImmediate(tile.GetComponent <BoxCollider2D>());
            }
        }
    }
Ejemplo n.º 2
0
    void BucketFill(Vector2 tileIndex)
    {
        GameObject go             = GameObject.Find("tile_" + tileIndex.x + "," + tileIndex.y);
        GameObject selectedPrefab = brush.GetComponent <TileBrush>().GetSelectedPrefab();
        GameObject targetGO       = null;
        GameObject prefab         = null;
        GameObject targetPrefab   = null;

        if (go != null)
        {
            prefab = (GameObject)PrefabUtility.GetPrefabParent(go);
        }

        if (prefab != null && prefab.Equals(selectedPrefab))
        {
            return;
        }

        Queue queue = new Queue();

        var size  = map.size;
        var tsize = map.tileSize;

        queue.Enqueue(tileIndex);

        Vector2 index;

        while (queue.Count > 0)
        {
            index = (Vector2)queue.Dequeue();
            go    = GameObject.Find("tile_" + index.x + "," + index.y);
            DestroyImmediate(go);

            brush.CreateSelectedCopy(index, new Vector3(index.x * tsize.x + tsize.x / 2, index.y * tsize.y + tsize.y / 2));

            Vector2[] nextIndexes = new Vector2[] {
                new Vector2(index.x - 1, index.y),
                new Vector2(index.x + 1, index.y),
                new Vector2(index.x, index.y - 1),
                new Vector2(index.x, index.y + 1)
            };

            foreach (Vector2 nextIndex in nextIndexes)
            {
                if (nextIndex.x >= 0 && nextIndex.x < size.x && nextIndex.y >= 0 && nextIndex.y < size.y)
                {
                    targetGO = GameObject.Find("tile_" + nextIndex.x + "," + nextIndex.y);

                    if (targetGO == null && prefab == null)
                    {
                        queue.Enqueue(new Vector2(nextIndex.x, nextIndex.y));
                    }
                    else
                    {
                        targetPrefab = (GameObject)PrefabUtility.GetPrefabParent(targetGO);
                        if (targetPrefab != null && prefab != null && prefab.Equals(targetPrefab))
                        {
                            queue.Enqueue(new Vector2(nextIndex.x, nextIndex.y));
                        }
                    }
                }
            }
        }
    }
Ejemplo n.º 3
0
    void Draw()
    {
        var        id   = map.texture2D.name + brush.tileId.ToString();
        float      posX = brush.transform.position.x - 0.5f;
        float      posY = brush.transform.position.y - 0.5f;
        GameObject tile = GameObject.Find(map.name + "/Tiles/tile_" + id);

        if (tile == null)
        {
            tile = new GameObject("tile_" + id);
            tile.transform.parent   = map.tiles.transform;
            tile.transform.position = new Vector3(posX + 0.5f, posY + 0.5f, 0);
            tile.AddComponent <SpriteRenderer>();
        }
        tile.GetComponent <SpriteRenderer>().sprite = brush.GetComponent <SpriteRenderer>().sprite;

        if (map.boxCollider)
        {
            if (tile.GetComponent <BoxCollider2D>() == null)
            {
                tile.AddComponent <BoxCollider2D>();
            }
            tile.GetComponent <BoxCollider2D>().size = new Vector2(map.tileSize.x / 100, map.tileSize.y / 100);
        }
        else
        {
            if (tile.GetComponent <BoxCollider2D>() != null)
            {
                DestroyImmediate(tile.GetComponent <BoxCollider2D>());
            }
        }

        if (map.addNormalTileScript)
        {
            if (tile.GetComponent <NormalTile>() == null)
            {
                tile.AddComponent <NormalTile>();
            }
        }
        else
        {
            if (tile.GetComponents <NormalTile>() != null)
            {
                DestroyImmediate(tile.GetComponent <NormalTile>());
            }
        }

        if (map.addJumpTileScript)
        {
            if (tile.GetComponent <JumpTile>() == null)
            {
                tile.AddComponent <JumpTile>();
            }
        }
        else
        {
            if (tile.GetComponents <JumpTile>() != null)
            {
                DestroyImmediate(tile.GetComponent <JumpTile>());
            }
        }
        if (map.addPoisonTileScript)
        {
            if (tile.GetComponent <PoisonTile>() == null)
            {
                tile.AddComponent <PoisonTile>();
            }
        }
        else
        {
            if (tile.GetComponents <PoisonTile>() != null)
            {
                DestroyImmediate(tile.GetComponent <PoisonTile>());
            }
        }
        if (map.addAnimatorController)
        {
            if (tile.GetComponent <Animator>() == null)
            {
                tile.AddComponent <Animator>();
            }
        }
        else
        {
            if (tile.GetComponents <Animator>() != null)
            {
                DestroyImmediate(tile.GetComponent <Animator>());
            }
        }
        if (map.addSpikeScript)
        {
            if (tile.GetComponent <Spike>() == null)
            {
                tile.AddComponent <Spike>();
            }
        }
        else
        {
            if (tile.GetComponents <Spike>() != null)
            {
                DestroyImmediate(tile.GetComponent <Spike>());
            }
        }
        if (map.addLayer)
        {
            tile.layer = 8;
        }
        else
        {
            tile.layer = 0;
        }
        if (map.addCoinScript)
        {
            if (tile.GetComponent <Coin>() == null)
            {
                tile.AddComponent <Coin>();
            }
        }
        else
        {
            if (tile.GetComponents <Coin>() != null)
            {
                DestroyImmediate(tile.GetComponent <Coin>());
            }
        }
    }