parent
0e064e2d6a
commit
81053352ac
@ -0,0 +1,72 @@ |
||||
/* |
||||
* 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.*; |
||||
|
||||
/** |
||||
* 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 implements JmeExporter { |
||||
|
||||
private final J3mdMatDefOutputCapsule rootCapsule; |
||||
|
||||
/** |
||||
* Create a J3mdExporter |
||||
*/ |
||||
public J3mdExporter() { |
||||
rootCapsule = new J3mdMatDefOutputCapsule(this); |
||||
} |
||||
|
||||
@Override |
||||
public void save(Savable object, OutputStream f) throws IOException { |
||||
|
||||
if (!(object instanceof MaterialDef)) { |
||||
throw new IllegalArgumentException("J3mdExporter can only save com.jme3.material.MaterialDef class"); |
||||
} |
||||
|
||||
OutputStreamWriter out = new OutputStreamWriter(f); |
||||
|
||||
rootCapsule.clear(); |
||||
object.write(this); |
||||
rootCapsule.writeToStream(out); |
||||
|
||||
out.flush(); |
||||
} |
||||
|
||||
@Override |
||||
public void save(Savable object, File f) throws IOException { |
||||
try (FileOutputStream fos = new FileOutputStream(f)) { |
||||
save(object, fos); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public OutputCapsule getCapsule(Savable object) { |
||||
if (object instanceof MaterialDef) { |
||||
return rootCapsule; |
||||
} |
||||
|
||||
return rootCapsule.getCapsule(object); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,101 @@ |
||||
/* |
||||
* 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.*; |
||||
import com.jme3.material.*; |
||||
|
||||
import java.io.*; |
||||
import java.util.*; |
||||
|
||||
/** |
||||
* @author nehon |
||||
*/ |
||||
public class J3mdMatDefOutputCapsule extends J3mdOutputCapsuleAdapter { |
||||
|
||||
//private final HashMap<Savable, J3mdOutputCapsuleAdapter> outCapsules;
|
||||
private String name; |
||||
private List<J3mdOutputCapsuleAdapter> matParams = new ArrayList<J3mdOutputCapsuleAdapter>(); |
||||
boolean textureParam= false; |
||||
|
||||
|
||||
public J3mdMatDefOutputCapsule(J3mdExporter exporter) { |
||||
super(exporter); |
||||
} |
||||
|
||||
@Override |
||||
public void clear() { |
||||
super.clear(); |
||||
name = ""; |
||||
matParams.clear(); |
||||
} |
||||
|
||||
public OutputCapsule getCapsule(Savable object) { |
||||
if(object instanceof MatParam){ |
||||
if(object instanceof MatParamTexture && textureParam){ |
||||
textureParam = false; |
||||
return matParams.get(matParams.size() - 1); |
||||
} |
||||
if( object instanceof MatParamTexture){ |
||||
textureParam = true; |
||||
} |
||||
J3mdMatParamOutputCapsule matParamCapsule = new J3mdMatParamOutputCapsule(exporter); |
||||
matParams.add(matParamCapsule); |
||||
return matParamCapsule; |
||||
} |
||||
|
||||
throw new IllegalArgumentException("Unsupported type : " + object.getClass().getName()); |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void writeToStream(OutputStreamWriter out) throws IOException { |
||||
out.write("MaterialDef " + name + " {\n"); |
||||
|
||||
out.write(" MaterialParameters {\n"); |
||||
for (J3mdOutputCapsuleAdapter matParam : matParams) { |
||||
matParam.writeToStream(out); |
||||
} |
||||
out.write(" }\n\n"); |
||||
//
|
||||
// for (J3mdOutputCapsule c : outCapsules.values()) {
|
||||
// c.writeToStream(out);
|
||||
// }
|
||||
out.write("}\n"); |
||||
} |
||||
|
||||
@Override |
||||
public void write(String value, String name, String defVal) throws IOException { |
||||
switch (name) { |
||||
case "name": |
||||
this.name = value; |
||||
break; |
||||
default: |
||||
throw new UnsupportedOperationException(name + " string material parameter not supported yet"); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void write(Savable object, String name, Savable defVal) throws IOException { |
||||
object.write(exporter); |
||||
} |
||||
|
||||
@Override |
||||
public void writeStringSavableMap(Map<String, ? extends Savable> map, String name, Map<String, ? extends Savable> defVal) throws IOException { |
||||
switch (name) { |
||||
case "matParams": |
||||
for (Savable savable : map.values()) { |
||||
savable.write(exporter); |
||||
} |
||||
break; |
||||
case "techniques": |
||||
//nothing for now
|
||||
break; |
||||
default: |
||||
throw new UnsupportedOperationException(name + " string material parameter not supported yet"); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,151 @@ |
||||
/* |
||||
* 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.*; |
||||
import com.jme3.math.*; |
||||
import com.jme3.texture.image.ColorSpace; |
||||
|
||||
import java.io.*; |
||||
import java.util.*; |
||||
|
||||
import static com.jme3.shader.VarType.Vector2; |
||||
import static com.jme3.shader.VarType.Vector3; |
||||
import static com.jme3.shader.VarType.Vector4; |
||||
|
||||
/** |
||||
* @author nehon |
||||
*/ |
||||
public class J3mdMatParamOutputCapsule extends J3mdOutputCapsuleAdapter { |
||||
|
||||
private String name; |
||||
private String varType; |
||||
private String value; |
||||
private String space; |
||||
|
||||
|
||||
|
||||
public J3mdMatParamOutputCapsule(J3mdExporter exporter) { |
||||
super(exporter); |
||||
} |
||||
|
||||
@Override |
||||
public void clear() { |
||||
super.clear(); |
||||
name = ""; |
||||
varType = ""; |
||||
value = ""; |
||||
space = ""; |
||||
} |
||||
|
||||
@Override |
||||
public void writeToStream(OutputStreamWriter out) throws IOException { |
||||
out.write(" "); |
||||
out.write(varType); |
||||
out.write(" "); |
||||
out.write(name); |
||||
if(space != null) { |
||||
out.write(" "); |
||||
out.write(space); |
||||
} |
||||
if(value != null){ |
||||
out.write(" : "); |
||||
out.write(value); |
||||
} |
||||
out.write("\n"); |
||||
} |
||||
|
||||
@Override |
||||
public void write(String value, String name, String defVal) throws IOException { |
||||
switch (name) { |
||||
case "name": |
||||
this.name = value; |
||||
break; |
||||
default: |
||||
throw new UnsupportedOperationException(name + " string material parameter not supported yet"); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void write(Savable object, String name, Savable defVal) throws IOException { |
||||
|
||||
|
||||
if(name.equals("texture")){ |
||||
return; |
||||
} |
||||
|
||||
if(name.equals("value_savable")){ |
||||
if(object instanceof Vector2f) { |
||||
Vector2f v = (Vector2f)object; |
||||
this.value = v.getX() + " " + v.getY(); |
||||
} else if (object instanceof Vector3f) { |
||||
Vector3f v = (Vector3f)object; |
||||
this.value = v.getX() + " " + v.getY()+ " " + v.getZ(); |
||||
} else if (object instanceof Vector4f ) { |
||||
Vector4f v = (Vector4f)object; |
||||
this.value = v.getX() + " " + v.getY()+ " " + v.getZ()+ " " + v.getW(); |
||||
} else if (object instanceof ColorRGBA) { |
||||
ColorRGBA v = (ColorRGBA)object; |
||||
this.value = v.getRed() + " " + v.getGreen() + " " + v.getBlue() + " " + v.getAlpha(); |
||||
} else { |
||||
throw new UnsupportedOperationException(object.getClass() + " Unsupported type"); |
||||
} |
||||
|
||||
} else { |
||||
throw new UnsupportedOperationException(name + " string material parameter not supported yet"); |
||||
} |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void write(Enum value, String name, Enum defVal) throws IOException { |
||||
|
||||
|
||||
switch (name) { |
||||
case "varType": |
||||
this.varType = value.name(); |
||||
break; |
||||
case "colorSpace": |
||||
space = value == ColorSpace.Linear?"-LINEAR":null; |
||||
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(name.equals("value_bool")){ |
||||
this.value = Boolean.toString(value); |
||||
} else { |
||||
throw new UnsupportedOperationException(name + " string material parameter not supported yet"); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void write(float value, String name, float defVal) throws IOException { |
||||
if(name.equals("value_float")){ |
||||
this.value = Float.toString(value); |
||||
} else { |
||||
throw new UnsupportedOperationException(name + " string material parameter not supported yet"); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void write(int value, String name, int defVal) throws IOException { |
||||
if(name.equals("texture_unit")){ |
||||
return; |
||||
} |
||||
if(name.equals("value_int")){ |
||||
this.value = Integer.toString(value); |
||||
} else { |
||||
throw new UnsupportedOperationException(name + " string material parameter not supported yet"); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
@ -0,0 +1,255 @@ |
||||
/* |
||||
* 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.asset.TextureKey; |
||||
import com.jme3.export.*; |
||||
import com.jme3.material.*; |
||||
import com.jme3.math.*; |
||||
import com.jme3.shader.VarType; |
||||
import com.jme3.texture.Texture; |
||||
import com.jme3.texture.Texture.WrapMode; |
||||
import com.jme3.util.IntMap; |
||||
|
||||
import java.io.*; |
||||
import java.nio.*; |
||||
import java.util.*; |
||||
|
||||
/** |
||||
* |
||||
* @author tsr |
||||
*/ |
||||
public abstract class J3mdOutputCapsuleAdapter implements OutputCapsule { |
||||
|
||||
protected final J3mdExporter exporter; |
||||
|
||||
public J3mdOutputCapsuleAdapter(J3mdExporter exporter) { |
||||
this.exporter = exporter; |
||||
} |
||||
|
||||
public void writeToStream(OutputStreamWriter out) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
protected void writeParameter(OutputStreamWriter out, String name, String value) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
public void clear() { |
||||
|
||||
} |
||||
|
||||
protected void putParameter(String name, String value) { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
@Override |
||||
public void write(boolean value, String name, boolean defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
@Override |
||||
public void writeStringSavableMap(Map<String, ? extends Savable> map, String name, Map<String, ? extends Savable> defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void write(Enum value, String name, Enum defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
@Override |
||||
public void write(float value, String name, float defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
@Override |
||||
public void write(float[] value, String name, float[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); |
||||
} |
||||
|
||||
@Override |
||||
public void write(float[][] value, String name, float[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(double value, String name, double defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(double[] value, String name, double[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(double[][] value, String name, double[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(long value, String name, long defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(long[] value, String name, long[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(long[][] value, String name, long[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(short value, String name, short defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(short[] value, String name, short[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(short[][] value, String name, short[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(boolean[] value, String name, boolean[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(boolean[][] value, String name, boolean[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(String value, String name, String defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(String[] value, String name, String[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(String[][] value, String name, String[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(BitSet value, String name, BitSet defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(Savable object, String name, Savable defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(Savable[] objects, String name, Savable[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(Savable[][] objects, String name, Savable[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void writeSavableArrayList(ArrayList array, String name, ArrayList defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void writeSavableArrayListArray(ArrayList[] array, String name, ArrayList[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void writeSavableArrayListArray2D(ArrayList[][] array, String name, ArrayList[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void writeFloatBufferArrayList(ArrayList<FloatBuffer> array, String name, ArrayList<FloatBuffer> defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void writeByteBufferArrayList(ArrayList<ByteBuffer> array, String name, ArrayList<ByteBuffer> defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void writeSavableMap(Map<? extends Savable, ? extends Savable> map, String name, Map<? extends Savable, ? extends Savable> defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void writeIntSavableMap(IntMap<? extends Savable> map, String name, IntMap<? extends Savable> defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(FloatBuffer value, String name, FloatBuffer defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(IntBuffer value, String name, IntBuffer defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(ByteBuffer value, String name, ByteBuffer defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(ShortBuffer value, String name, ShortBuffer defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(byte value, String name, byte defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(byte[] value, String name, byte[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(byte[][] value, String name, byte[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(int value, String name, int defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(int[] value, String name, int[] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
@Override |
||||
public void write(int[][] value, String name, int[][] defVal) throws IOException { |
||||
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,110 @@ |
||||
/* |
||||
* Copyright (c) 2009-2016 jMonkeyEngine |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are |
||||
* met: |
||||
* |
||||
* * Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* * Redistributions in binary form must reproduce the above copyright |
||||
* notice, this list of conditions and the following disclaimer in the |
||||
* documentation and/or other materials provided with the distribution. |
||||
* |
||||
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors |
||||
* may be used to endorse or promote products derived from this software |
||||
* without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
package com.jme3.material.plugin; |
||||
|
||||
import com.jme3.asset.*; |
||||
import com.jme3.material.*; |
||||
import com.jme3.material.plugin.export.materialdef.J3mdExporter; |
||||
import com.jme3.material.plugins.J3MLoader; |
||||
import com.jme3.system.JmeSystem; |
||||
import org.junit.*; |
||||
|
||||
import java.io.*; |
||||
|
||||
import static org.junit.Assert.assertTrue; |
||||
|
||||
public class TestMaterialDefWrite { |
||||
|
||||
private AssetManager assetManager; |
||||
|
||||
@Before |
||||
public void init() { |
||||
assetManager = JmeSystem.newAssetManager( |
||||
TestMaterialDefWrite.class.getResource("/com/jme3/asset/Desktop.cfg")); |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
@Test |
||||
public void testWriteMat() throws Exception { |
||||
|
||||
Material mat = new Material(assetManager,"Common/MatDefs/Light/Lighting.j3md"); |
||||
//
|
||||
// mat.setBoolean("UseMaterialColors", true);
|
||||
// mat.setColor("Diffuse", ColorRGBA.White);
|
||||
// mat.setColor("Ambient", ColorRGBA.DarkGray);
|
||||
// mat.setFloat("AlphaDiscardThreshold", 0.5f);
|
||||
//
|
||||
// mat.setFloat("Shininess", 2.5f);
|
||||
//
|
||||
// Texture tex = assetManager.loadTexture("Common/Textures/MissingTexture.png");
|
||||
// tex.setMagFilter(Texture.MagFilter.Nearest);
|
||||
// tex.setMinFilter(Texture.MinFilter.BilinearNoMipMaps);
|
||||
// tex.setWrap(Texture.WrapAxis.S, Texture.WrapMode.Repeat);
|
||||
// tex.setWrap(Texture.WrapAxis.T, Texture.WrapMode.MirroredRepeat);
|
||||
//
|
||||
// mat.setTexture("DiffuseMap", tex);
|
||||
// mat.getAdditionalRenderState().setDepthWrite(false);
|
||||
// mat.getAdditionalRenderState().setDepthTest(false);
|
||||
// mat.getAdditionalRenderState().setLineWidth(5);
|
||||
// mat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
|
||||
|
||||
final ByteArrayOutputStream stream = new ByteArrayOutputStream(); |
||||
|
||||
J3mdExporter exporter = new J3mdExporter(); |
||||
try { |
||||
exporter.save(mat.getMaterialDef(), stream); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
// System.err.println(stream.toString());
|
||||
|
||||
J3MLoader loader = new J3MLoader(); |
||||
AssetInfo info = new AssetInfo(assetManager, new AssetKey("test")) { |
||||
@Override |
||||
public InputStream openStream() { |
||||
return new ByteArrayInputStream(stream.toByteArray()); |
||||
} |
||||
}; |
||||
MaterialDef matDef = (MaterialDef)loader.load(info); |
||||
MaterialDef ref = mat.getMaterialDef(); |
||||
|
||||
for (MatParam matParam : matDef.getMaterialParams()) { |
||||
MatParam refParam = ref.getMaterialParam(matParam.getName()); |
||||
assertTrue(refParam != null); |
||||
assertTrue(refParam.equals(matParam)); |
||||
} |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue