void PlaceTile(Transform parent, Vector3Int pos, Vector3Int minPos, Vector3Int maxPos) { //Only place a tile if it is on the edge bool isNegX = negativeX != 0 && pos.x == minPos.x; bool isPosX = positiveX != 0 && pos.x == maxPos.x; bool isNegY = negativeY != 0 && pos.y == minPos.y; bool isPosY = positiveY != 0 && pos.y == maxPos.y; bool isNegZ = negativeZ != 0 && pos.z == minPos.z; bool isPosZ = positiveZ != 0 && pos.z == maxPos.z; //Fully enclosed tile, don't waste resources on a hitbox if (!isNegX && !isNegY && !isNegZ && !isPosX && !isPosY && !isPosZ) { return; } GameObject tilePrefab = Resources.Load <GameObject>("Tile"); GameObject tile = Instantiate(tilePrefab, pos, Quaternion.identity, parent); TileInput tileInput = tile.GetComponent <TileInput>(); //Default edges that exist to high cover, user can change this on a per instance basis if wrong tileInput.negativeX = isNegX ? negativeX : (byte)0; tileInput.positiveX = isPosX ? positiveX : (byte)0; tileInput.negativeY = isNegY ? negativeY : (byte)0; tileInput.positiveY = isPosY ? positiveY : (byte)0; tileInput.negativeZ = isNegZ ? negativeZ : (byte)0; tileInput.positiveZ = isPosZ ? positiveZ : (byte)0; tileInput.UpdateFaces(); }