Files
CodeChickenCore/codechicken/lib/tool/module/ModuleQBConverter.java
T

70 lines
2.8 KiB
Java
Raw Normal View History

2014-02-03 11:02:42 +10:00
package codechicken.lib.tool.module;
import codechicken.lib.render.QBImporter;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import java.io.File;
import static java.util.Arrays.asList;
public class ModuleQBConverter extends JOptModule
{
public ModuleQBConverter() {
parser.acceptsAll(asList("?", "h", "help"), "Show the help");
parser.acceptsAll(asList("i", "input"), "comma separated list of paths to models (.qb or directories)")
.withRequiredArg().ofType(File.class).withValuesSeparatedBy(',').required();
parser.acceptsAll(asList("o", "out"), "Output Directory")
.withRequiredArg().ofType(File.class);
parser.acceptsAll(asList("o2", "textureplanes"), "2nd level optimisation. Merges coplanar polygons. Increases texture size");
parser.acceptsAll(asList("s", "squaretextures"), "Produce square textures");
parser.acceptsAll(asList("t", "mergetextures"), "Use the same texture for all models");
parser.acceptsAll(asList("r", "scalemc"), "Resize model to mc standard (shrink by factor of 16)");
}
protected void main(OptionParser parser, OptionSet options) {
int flags = 0;
if(options.has("o2")) flags |= QBImporter.TEXTUREPLANES;
if(options.has("s")) flags |= QBImporter.SQUARETEXTURE;
if(options.has("t")) flags |= QBImporter.MERGETEXTURES;
if(options.has("r")) flags |= QBImporter.SCALEMC;
File[] input = options.valuesOf("input").toArray(new File[0]);
File[] outDir = new File[input.length];
if(options.has("out")) {
File output = (File)options.valueOf("out");
if(output.isFile())
throw new RuntimeException("Output Path is not a directory");
if(!output.exists())
output.mkdirs();
for(int i = 0; i < input.length; i++)
outDir[i] = output;
} else {
for(int i = 0; i < input.length; i++)
outDir[i] = input[i].isDirectory() ? input[i] : input[i].getParentFile();
}
for(int i = 0; i < input.length; i++) {
File file = input[i];
if(file.isDirectory()) {
for(File file2 : file.listFiles())
if(file2.getName().endsWith(".qb"))
convert(file2, outDir[i], flags);
}
else
convert(file, outDir[i], flags);
}
}
private void convert(File in, File outDir, int flags) {
System.out.println("Converting: "+in.getName());
QBImporter.RasterisedModel m = QBImporter.loadQB(in).toRasterisedModel(flags);
m.export(new File(outDir, in.getName().replace(".qb", ".obj")), outDir);
}
@Override
public String name() {
return "QBConverter";
}
}