/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.material.plugin.export.materialdef;
import com.jme3.export.JmeExporter;
import com.jme3.export.OutputCapsule;
import com.jme3.export.Savable;
import com.jme3.material.*;
import java.io.*;
import java.util.List;
/**
* Saves a Material to a j3m file with proper formatting.
*
* usage is :
* <pre>
* J3mdExporter exporter = new J3mdExporter();
* exporter.save(material, myFile);
* //or
* exporter.save(material, myOutputStream);
* </pre>
*
* @author tsr
* @author nehon (documentation and safety check)
*/
public class J3mdExporter {
/**
* Create a J3mdExporter
*/
public J3mdExporter() {
}
public void save(MaterialDef matDef, OutputStream f) throws IOException {
OutputStreamWriter out = new OutputStreamWriter(f);
J3mdMatParamWriter paramWriter = new J3mdMatParamWriter();
J3mdTechniqueDefWriter techniqueWriter = new J3mdTechniqueDefWriter();
// for (MatParam matParam : matDef.getMaterialParams()) {
// System.err.println(matParam.toString());
// }
//
// for (String key : matDef.getTechniqueDefsNames()) {
// System.err.println(matDef.getTechniqueDefs(key).toString());
// }
out.write("MaterialDef " + matDef.getName() + " {\n");
out.write(" MaterialParameters {\n");
for (MatParam matParam : matDef.getMaterialParams()) {
paramWriter.write(matParam, out);
}
out.write(" }\n\n");
for (String key : matDef.getTechniqueDefsNames()) {
List<TechniqueDef> defs = matDef.getTechniqueDefs(key);
for (TechniqueDef def : defs) {
techniqueWriter.write(def, matDef.getMaterialParams(), out);
}
}
out.write("}\n");
out.flush();
}
public void save(MaterialDef matDef, File f) throws IOException {
try (FileOutputStream fos = new FileOutputStream(f)) {
save(matDef, fos);
}
}
}