//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); }