public static void eraseTiles() { if (standardBrushSize) { YuME_tileFunctions.eraseTile(tilePosition); } else { Vector3 newTilePos = tilePosition; for (int y = 0; y < (int)brushSize.y; y++) { newTilePos.y = tilePosition.y + y; newTilePos.z = tilePosition.z - ((brushSize.z - 1) / 2); for (int z = 0; z < (int)brushSize.z; z++) { newTilePos.x = tilePosition.x - ((brushSize.x - 1) / 2); for (int x = 0; x < (int)brushSize.x; x++) { YuME_tileFunctions.eraseTile(newTilePos); newTilePos.x++; } newTilePos.z++; } } } }
public static void pasteCopyBrush(Vector3 position) { if (YuME_mapEditor.brushTile != null) { if (YuME_mapEditor.findTileMapParent()) { Undo.RegisterFullObjectHierarchyUndo(YuME_mapEditor.tileMapParent, "Paint Brush"); foreach (Transform child in YuME_mapEditor.brushTile.transform) { #if UNITY_2018_3_OR_NEWER GameObject pasteTile = (GameObject)PrefabUtility.InstantiatePrefab(PrefabUtility.GetCorrespondingObjectFromSource(child.gameObject) as GameObject); #else GameObject pasteTile = (GameObject)PrefabUtility.InstantiatePrefab(PrefabUtility.GetPrefabParent(child.gameObject) as GameObject); #endif YuME_tileFunctions.eraseTile(child.position); pasteTile.transform.eulerAngles = child.eulerAngles; pasteTile.transform.position = normalizePosition(child.position); pasteTile.transform.localScale = child.transform.lossyScale; pasteTile.transform.parent = YuME_mapEditor.mapLayers[YuME_mapEditor.currentLayer - 1].transform; } EditorSceneManager.MarkAllScenesDirty(); } } }
public static void pasteCustomBrush(Vector3 position) { if (YuME_mapEditor.brushTile != null) { if (YuME_mapEditor.findTileMapParent()) { Undo.RegisterFullObjectHierarchyUndo(YuME_mapEditor.tileMapParent, "Paint Custom Brush"); foreach (Transform child in YuME_mapEditor.brushTile.transform) { GameObject pasteTile = PrefabUtility.InstantiatePrefab(getPrefabFromCurrentTiles(child.gameObject) as GameObject) as GameObject; if (pasteTile != null) { child.position = normalizePosition(child.position); YuME_tileFunctions.eraseTile(child.position); pasteTile.transform.eulerAngles = child.eulerAngles; pasteTile.transform.position = child.position; pasteTile.transform.localScale = child.transform.lossyScale; pasteTile.transform.parent = YuME_mapEditor.mapLayers[YuME_mapEditor.currentLayer - 1].transform; } } EditorSceneManager.MarkAllScenesDirty(); } } }
// Need to keep this for legacy custom brushes // NOTE: I have removed the UNDO. This is for stability issues. public static void pasteCustomBrush(Vector3 position) { if (YuME_mapEditor.brushTile != null) { if (YuME_mapEditor.findTileMapParent()) { int badTileCount = 0; foreach (Transform child in YuME_mapEditor.brushTile.transform) { GameObject pasteTile = PrefabUtility.InstantiatePrefab(getPrefabFromCurrentTiles(child.gameObject) as GameObject) as GameObject; if (pasteTile != null) { child.position = normalizePosition(child.position); YuME_tileFunctions.eraseTile(child.position); pasteTile.transform.eulerAngles = child.eulerAngles; pasteTile.transform.position = child.position; pasteTile.transform.localScale = child.transform.lossyScale; pasteTile.transform.parent = YuME_mapEditor.mapLayers[YuME_mapEditor.currentLayer - 1].transform; } else { badTileCount++; } } if (badTileCount > 0) { Debug.Log("Custom Brush includes tiles from a different tile set. These tiles will not appear in the scene due to the lack of nested prefabs in Unity."); } EditorSceneManager.MarkAllScenesDirty(); } } }