/* * 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.material; import com.jme3.export.OutputCapsule; import com.jme3.export.Savable; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.HashMap; /** * @author tsr */ public class J3MRootOutputCapsule extends J3MOutputCapsule { private final HashMap<Savable, J3MOutputCapsule> outCapsules; private String name; private String materialDefinition; private Boolean isTransparent; public J3MRootOutputCapsule(J3MExporter exporter) { super(exporter); outCapsules = new HashMap<>(); } @Override public void clear() { super.clear(); isTransparent = null; name = ""; materialDefinition = ""; outCapsules.clear(); } public OutputCapsule getCapsule(Savable object) { if (!outCapsules.containsKey(object)) { outCapsules.put(object, new J3MRenderStateOutputCapsule(exporter)); } return outCapsules.get(object); } @Override public void writeToStream(OutputStreamWriter out) throws IOException { out.write("Material " + name + " : " + materialDefinition + " {\n\n"); if (isTransparent != null) out.write(" Transparent " + ((isTransparent) ? "On" : "Off") + "\n\n"); out.write(" MaterialParameters {\n"); super.writeToStream(out); out.write(" }\n\n"); for (J3MOutputCapsule c : outCapsules.values()) { c.writeToStream(out); } out.write("}\n"); } @Override public void write(String value, String name, String defVal) throws IOException { switch (name) { case "material_def": materialDefinition = value; break; case "name": this.name = value; break; default: throw new UnsupportedOperationException(name + " string material parameter not supported yet"); } } @Override public void write(boolean value, String name, boolean defVal) throws IOException { if( value == defVal) return; switch (name) { case "is_transparent": isTransparent = value; break; default: throw new UnsupportedOperationException(name + " boolean material parameter not supported yet"); } } @Override public void write(Savable object, String name, Savable defVal) throws IOException { if(object != null && !object.equals(defVal)) { object.write(exporter); } } }