Fixed mirror filter not accoounting for data

This commit is contained in:
Anuken
2025-08-10 11:07:01 +02:00
parent a6e8683b45
commit dac299bf25
5 changed files with 39 additions and 10 deletions

View File

@@ -151,6 +151,7 @@ public class MapGenerateDialog extends BaseDialog{
public void applyToEditor(Seq<GenerateFilter> filters){
//writeback buffer
long[] writeTiles = new long[editor.width() * editor.height()];
long[] writeData = new long[writeTiles.length];
for(GenerateFilter filter : filters){
input.begin(editor.width(), editor.height(), editor::tile);
@@ -158,10 +159,10 @@ public class MapGenerateDialog extends BaseDialog{
//write to buffer
for(int x = 0; x < editor.width(); x++){
for(int y = 0; y < editor.height(); y++){
Tile tile = editor.tile(x, y);
input.set(x, y, tile.block(), tile.floor(), tile.overlay());
input.set(editor.tile(x, y));
filter.apply(input);
writeTiles[x + y*world.width()] = PackTile.get(input.block.id, input.floor.id, input.overlay.id);
writeData[x + y*world.width()] = input.packedData;
}
}
@@ -178,6 +179,8 @@ public class MapGenerateDialog extends BaseDialog{
tile.setBlock(block);
}
tile.setPackedData(writeData[i]);
tile.setFloor((Floor)floor);
tile.setOverlay(overlay);
}
@@ -431,7 +434,7 @@ public class MapGenerateDialog extends BaseDialog{
pixmap.each((px, py) -> {
int x = px * scaling, y = py * scaling;
long tile = buffer1[px + py * w];
input.set(x, y, content.block(PackTile.block(tile)), content.block(PackTile.floor(tile)), content.block(PackTile.overlay(tile)));
input.set(x, y, content.block(PackTile.block(tile)), content.block(PackTile.floor(tile)), content.block(PackTile.overlay(tile)), 0);
filter.apply(input);
buffer2[px + py * w] = PackTile.get(input.block.id, input.floor.id, input.overlay.id);
});