It's not a perfect solution, but make it so we can call the tile trimming task and
not actually write out new image to a file if we don't need to. This cuts my tileset building from 42 seconds to 22 when no files have changed (as opposed to 4 when it was skipping it altogether, but winding up with a hosed tsbundles.dat), so it's at least a decent bit better. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@391 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
@@ -87,25 +87,28 @@ public class DirectoryTileSetBundler extends TileSetBundler
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// create a trimmed object tileset, which will
|
// create a trimmed object tileset, which will
|
||||||
// write the trimmed tileset image to the destination
|
// write the trimmed tileset image to the destination output stream
|
||||||
// output stream
|
|
||||||
File outFile = new File(target, imagePath);
|
File outFile = new File(target, imagePath);
|
||||||
|
FileOutputStream fout = null;
|
||||||
|
|
||||||
if (outFile.lastModified() > newestMod) {
|
if (outFile.lastModified() > newestMod) {
|
||||||
// Our file's newer than the newest bundle mod - up to date.
|
// Our file's newer than the newest bundle mod - up to date.
|
||||||
|
// So don't actually do anything
|
||||||
|
|
||||||
// FIXME: We can't just skip it, since we would've normally trimmed it,
|
// TODO: Ideally, we'd like to skip re-trimming altogether, since that's
|
||||||
// so we need to get an appropriate TrimmedObjectTileSet added to our
|
// expensive, but for the moment, we're at least doing half as much by
|
||||||
// bundle in place of this old ObjectTileSet.
|
// not writing out the trimmed image.
|
||||||
//continue;
|
|
||||||
|
} else {
|
||||||
|
// It's changed, so let's open the file & do all that jazz
|
||||||
|
outFile.getParentFile().mkdirs();
|
||||||
|
fout = new FileOutputStream(outFile);
|
||||||
}
|
}
|
||||||
outFile.getParentFile().mkdirs();
|
|
||||||
FileOutputStream fout = new FileOutputStream(outFile);
|
|
||||||
TrimmedObjectTileSet tset =
|
TrimmedObjectTileSet tset =
|
||||||
TrimmedObjectTileSet.trimObjectTileSet(
|
TrimmedObjectTileSet.trimObjectTileSet((ObjectTileSet)set, fout, "png");
|
||||||
(ObjectTileSet)set, fout, "png");
|
|
||||||
tset.setImagePath(imagePath);
|
tset.setImagePath(imagePath);
|
||||||
// replace the original set with the trimmed
|
// replace the original set with the trimmed tileset in the tileset bundle
|
||||||
// tileset in the tileset bundle
|
|
||||||
bundle.addTileSet(tileSetId, tset);
|
bundle.addTileSet(tileSetId, tset);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -151,11 +151,13 @@ public class TileSetTrimmer
|
|||||||
xoff += tb.width;
|
xoff += tb.width;
|
||||||
}
|
}
|
||||||
|
|
||||||
// write out trimmed image
|
if (destImage != null) {
|
||||||
if (imgFormat == null || FastImageIO.FILE_SUFFIX.equals(imgFormat)) {
|
// write out trimmed image
|
||||||
FastImageIO.write(image, destImage);
|
if (imgFormat == null || FastImageIO.FILE_SUFFIX.equals(imgFormat)) {
|
||||||
} else {
|
FastImageIO.write(image, destImage);
|
||||||
ImageIO.write(image, imgFormat, destImage);
|
} else {
|
||||||
|
ImageIO.write(image, imgFormat, destImage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user