void OnWizardCreate() { GameObject go = new GameObject(MapName); TileMap tileMap = go.AddComponent <TileMap>(); tileMap.MapSize = new Vector2(MapWidth, MapHeight); tileMap.TileSize = new Vector2(TileWidth, TileHeight); TileLayer newLayer = TileEditorUtility.CreateLayer(tileMap); newLayer.gameObject.hideFlags = HideFlags.HideInHierarchy; tileMap.TileLayers = new List <TileLayer>(); tileMap.TileLayers.Add(newLayer); Undo.RegisterCreatedObjectUndo(go, "Create Tile Map"); Selection.activeGameObject = go; }
public GameObject TileAt(Vector2 worldPosition, int layer) { if (layer < 0 || TileLayers == null || layer >= TileLayers.Count) { return(null); } Vector2 gridIndex = TransformPositionToGridIndex(worldPosition); if (gridIndex.x < 0 || gridIndex.x >= MapSize.x || gridIndex.y < 0 || gridIndex.y >= MapSize.y) { return(null); } TileLayer tileLayer = TileLayers[layer]; int key = (int)(MapSize.x * gridIndex.y + gridIndex.x); Tile tile = tileLayer.Tiles[key]; if (tile == null) { return(null); } return(tile.gameObject); }
private void HandleSelectedTilesFilling(TileLayer tileLayer, int x, int y) { TileData tileData = GetSelectedTileData(); int key = (int)((int)tileMap.MapSize.x * y + x); if (tileLayer == null || tileData == null || key < 0 || key > tileLayer.Tiles.Length) { return; } if (tileLayer.Tiles[key] != null) { Tile tile = tileLayer.Tiles[key]; if (TileEditorUtility.IsTheSameTile(tile, tileData)) { if (tileSelectMode == TileSelectMode.Scene) { if (TileEditorUtility.IsTileColliderEqualsToColliderInfo(tile, colliderInfo)) { return; } } else { return; } } Undo.RecordObject(tileLayer, null); EditorApplication.delayCall += () => Undo.DestroyObjectImmediate(tile.gameObject); } { Vector2 pos = tileMap.GetGridIndexPosInWorldSpace(new Vector2(x, y)); GameObject go = TileEditorUtility.CreateTile(new Vector3(pos.x, pos.y, tileLayer.transform.position.z), tileData, tileLayer.Alpha / 255.0f, tileLayer.SortingLayer); if (tileData.Tag != null) { go.tag = tileData.Tag; } go.layer = tileLayer.PhysicsLayer; go.name = "Tile_" + x + "_" + y; go.transform.parent = tileLayer.transform; Tile tile = SetupTile(go, tileData); if (tileSelectMode == TileSelectMode.Scene && colliderInfo != null) { TileEditorUtility.ApplyColliderInfoToTile(tile, colliderInfo); } Undo.RecordObject(tileLayer, null); tileLayer.Tiles[key] = tile; Undo.RegisterCreatedObjectUndo(go, "Fill Tiles"); } }
private void HandleSelectedTilesDeletion(TileLayer tileLayer, int x, int y) { int key = (int)((int)tileMap.MapSize.x * y + x); if (tileLayer == null || key < 0 || key > tileLayer.Tiles.Length) { return; } if (tileLayer.Tiles[key] != null) { GameObject go = tileLayer.Tiles[key].gameObject; Undo.RecordObject(tileLayer, null); EditorApplication.delayCall += () => { go.transform.position = tileMap.GetGridIndexPosInWorldSpace(new Vector2(x, y)); Undo.DestroyObjectImmediate(go); }; tileLayer.Tiles[key] = null; } }
private void ApplyTileLayerToCopiedTile(GameObject gameObject, TileLayer tileLayer) { if (gameObject == null || tileLayer == null) { return; } SpriteRenderer renderer = gameObject.GetComponent<SpriteRenderer>(); renderer.color = new Color(renderer.color.r, renderer.color.g, renderer.color.b, tileLayer.Alpha / 255.0f); renderer.sortingLayerName = tileLayer.SortingLayer; }