/* * 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 J3MRenderStateOutputCapsule extends J3MOutputCapsule { protected final static HashMap<String, String> NAME_MAP; protected String offsetUnit; static { NAME_MAP = new HashMap<>(); NAME_MAP.put( "wireframe", "Wireframe"); NAME_MAP.put( "cullMode", "FaceCull"); NAME_MAP.put( "depthWrite", "DepthWrite"); NAME_MAP.put( "depthTest", "DepthTest"); NAME_MAP.put( "blendMode", "Blend"); NAME_MAP.put( "alphaFallOff", "AlphaTestFalloff"); NAME_MAP.put( "offsetFactor", "PolyOffset"); NAME_MAP.put( "colorWrite", "ColorWrite"); NAME_MAP.put( "pointSprite", "PointSprite"); NAME_MAP.put( "depthFunc", "DepthFunc"); NAME_MAP.put( "alphaFunc", "AlphaFunc"); NAME_MAP.put( "lineWidth", "LineWidth"); } public J3MRenderStateOutputCapsule(J3MExporter exporter) { super(exporter); } public OutputCapsule getCapsule(Savable object) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void clear() { super.clear(); offsetUnit = ""; } @Override public void writeToStream(OutputStreamWriter out) throws IOException { out.write(" AdditionalRenderState {\n"); super.writeToStream(out); out.write(" }\n"); } @Override protected void writeParameter(OutputStreamWriter out, String name, String value) throws IOException { out.write(name); out.write(" "); out.write(value); if( "PolyOffset".equals(name) ) { out.write(" "); out.write(offsetUnit); } } @Override protected void putParameter(String name, String value ) { if( "offsetUnits".equals(name) ) { offsetUnit = value; return; } if( !NAME_MAP.containsKey(name) ) return; super.putParameter(NAME_MAP.get(name), value); } }