private bool GetClippingForWall(IWall wall) { if (wall.Type == WallIndex.Empty) { return(true); } if (currentClipping == ClippingMode.FULL_CLIPPING) { return(true); } if (currentClipping == ClippingMode.NO_CLIP) { return(false); } Vector2Int baseTileCoords = WallTransformer.GetRotatedWallBase(new Vector3Int(wall.X, wall.Y, wall.Z)); Vector3Int rotatedWallCoords = WallTransformer.RotateInsideTile(new Vector3Int(wall.X, wall.Y, wall.Z)); ITile baseTile = level.GetTileAt(baseTileCoords.x, baseTileCoords.y); List <ITile> tiles = new List <ITile>(); if (rotatedWallCoords.z == 1) { //The tiles checked for wall clipping, Vector2Int rotatedOffset1 = TileTransformer.InverseRotateCoord(new Vector2Int(-1, 0)); Vector2Int rotatedOffSet2 = TileTransformer.InverseRotateCoord(new Vector2Int(-1, -1)); Vector2Int rotatedOffSet3 = TileTransformer.InverseRotateCoord(new Vector2Int(-2, -1)); Vector2Int rotatedOffset4 = TileTransformer.InverseRotateCoord(new Vector2Int(-2, -2)); Vector2Int rotatedOffset5 = TileTransformer.InverseRotateCoord(new Vector2Int(-3, -2)); Vector2Int rotatedOffSet6 = TileTransformer.InverseRotateCoord(new Vector2Int(-3, -3)); Vector2Int rotatedOffSet7 = TileTransformer.InverseRotateCoord(new Vector2Int(-4, 3)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffset1.x, baseTile.Y + rotatedOffset1.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet2.x, baseTile.Y + rotatedOffSet2.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet3.x, baseTile.Y + rotatedOffSet3.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffset4.x, baseTile.Y + rotatedOffset4.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffset5.x, baseTile.Y + rotatedOffset5.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet6.x, baseTile.Y + rotatedOffSet6.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet7.x, baseTile.Y + rotatedOffSet7.y)); } else { Vector2Int rotatedOffset1 = TileTransformer.InverseRotateCoord(new Vector2Int(0, -1)); Vector2Int rotatedOffSet2 = TileTransformer.InverseRotateCoord(new Vector2Int(-1, -1)); Vector2Int rotatedOffSet3 = TileTransformer.InverseRotateCoord(new Vector2Int(-1, -2)); Vector2Int rotatedOffset4 = TileTransformer.InverseRotateCoord(new Vector2Int(-2, -2)); Vector2Int rotatedOffset5 = TileTransformer.InverseRotateCoord(new Vector2Int(-2, -3)); Vector2Int rotatedOffSet6 = TileTransformer.InverseRotateCoord(new Vector2Int(-3, -3)); Vector2Int rotatedOffSet7 = TileTransformer.InverseRotateCoord(new Vector2Int(-3, -4)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffset1.x, baseTile.Y + rotatedOffset1.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet2.x, baseTile.Y + rotatedOffSet2.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet3.x, baseTile.Y + rotatedOffSet3.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffset4.x, baseTile.Y + rotatedOffset4.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffset5.x, baseTile.Y + rotatedOffset5.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet6.x, baseTile.Y + rotatedOffSet6.y)); tiles.Add(level.GetTileAt(baseTile.X + rotatedOffSet7.x, baseTile.Y + rotatedOffSet7.y)); } foreach (ITile tile in tiles) { if (tile.Type != TileIndex.Empty) { return(true); } } return(false); }