//Instantiate one tile
    void InstantiateTile(Vector2 pos, int layer)
    {
        if (curPrefab == null)
        {
            return;
        }

        GameObject metaTile = (GameObject)Instantiate(curPrefab);

        metaTile.transform.rotation = Quaternion.Euler(0, 0, rotation);
        metaTile.transform.SetParent(FindLayer(layer).transform);
        metaTile.transform.localPosition = (Vector3)pos + metaTile.transform.InverseTransformVector(OffsetWeirdTiles());


        //IF it is a weird shape
        if (metaTile.transform.localPosition != (Vector3)pos)
        {
            ArtificialPosition artPos = metaTile.AddComponent <ArtificialPosition>();
            artPos.position = pos;
            artPos.offset   = artPos.position - (Vector2)metaTile.transform.position;
            artPos.layer    = curLayer;
        }



        Undo.RegisterCreatedObjectUndo(metaTile, "Created go");
    }
    //Finds object in certain position
    //returns null if not found
    GameObject isObjectAt(Vector2 tilePos, int curLayer)
    {
        //Goes through all gameobjects in the scene
        object[] obj = GameObject.FindObjectsOfType(typeof(GameObject));
        foreach (object o in obj)
        {
            GameObject g = (GameObject)o;

            //Checks if they are in this position
            ArtificialPosition artPos = g.GetComponent <ArtificialPosition>();

            if (artPos == null)
            {
                if (g.transform.localPosition == (Vector3)tilePos && (g.name != "gizmoCursor" && g.name != "gizmoTile"))
                {
                    //fixes nested prefabs error
                    //only finds prefabs that are not nested
                    if (g.transform.parent != null && g.transform.parent.GetComponent <Layer> ().priority == curLayer)
                    {
                        if (g.transform.parent.parent == null)
                        {
                            return(g);
                        }
                    }
                }
            }
            else
            {
                if (artPos.position == tilePos && g.name != "gizmoCursor")
                {
                    return(g);
                }
            }
        }

        //PerformCheks for artificial


        return(null);
    }