initial and partial implementation of a j3md exporter with test
This commit is contained in:
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…
x
Reference in New Issue
Block a user