mirror of
https://github.com/GTNewHorizons/CodeChickenCore.git
synced 2026-11-11 15:57:42 +00:00
71 lines
2.8 KiB
Java
71 lines
2.8 KiB
Java
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";
|
|
}
|
|
}
|