* Added MatParam.getValueAsString() to print out the material param value as it would appear in a J3M file.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7199 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
sha..rd 14 years ago
parent bb238c3c99
commit ff344c6a96
  1. 77
      engine/src/core/com/jme3/material/MatParam.java

@ -32,15 +32,22 @@
package com.jme3.material;
import com.jme3.asset.TextureKey;
import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.export.Savable;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector2f;
import com.jme3.math.Vector3f;
import com.jme3.math.Vector4f;
import com.jme3.renderer.GL1Renderer;
import com.jme3.renderer.Renderer;
import com.jme3.shader.Uniform;
import com.jme3.shader.VarType;
import com.jme3.texture.Texture;
import com.jme3.texture.Texture.WrapMode;
import java.io.IOException;
public class MatParam implements Savable, Cloneable {
@ -49,7 +56,6 @@ public class MatParam implements Savable, Cloneable {
protected String name;
protected Object value;
protected FixedFuncBinding ffBinding;
// protected Uniform uniform;
public MatParam(VarType type, String name, Object value, FixedFuncBinding ffBinding){
this.type = type;
@ -85,13 +91,66 @@ public class MatParam implements Savable, Cloneable {
this.value = value;
}
// public Uniform getUniform() {
// return uniform;
// }
//
// public void setUniform(Uniform uniform) {
// this.uniform = uniform;
// }
/**
* Returns the material parameter value as it would appear in a J3M
* file. E.g.<br/>
* <code>
* MaterialParameters {<br/>
* ABC : 1 2 3 4<br/>
* }<br/>
* </code>
* Assuming "ABC" is a Vector4 parameter, then the value
* "1 2 3 4" would be returned by this method.
* <br/><br/>
* @return material parameter value as it would appear in a J3M file.
*/
public String getValueAsString(){
switch (type){
case Boolean:
case Float:
case Int:
return value.toString();
case Vector2:
Vector2f v2 = (Vector2f) value;
return v2.getX() + " " + v2.getY();
case Vector3:
Vector3f v3 = (Vector3f) value;
return v3.getX() + " " + v3.getY() + " " + v3.getZ();
case Vector4:
// can be either ColorRGBA, Vector4f or Quaternion
if (value instanceof Vector4f){
Vector4f v4 = (Vector4f) value;
return v4.getX() + " " + v4.getY() + " " +
v4.getZ() + " " + v4.getW();
}else if (value instanceof ColorRGBA){
ColorRGBA color = (ColorRGBA) value;
return color.getRed() + " " + color.getGreen() + " " +
color.getBlue() + " " + color.getAlpha();
}else if (value instanceof Quaternion){
Quaternion quat = (Quaternion) value;
return quat.getX() + " " + quat.getY() + " " +
quat.getZ() + " " + quat.getW();
}else{
throw new UnsupportedOperationException("Unexpected Vector4 type: " + value);
}
case Texture2D:
case Texture3D:
case TextureArray:
case TextureBuffer:
case TextureCubeMap:
Texture texVal = (Texture) value;
TextureKey texKey = (TextureKey) texVal.getKey();
String ret = "";
if (texKey.isFlipY())
ret += "Flip ";
if (texVal.getWrap(Texture.WrapAxis.S) == WrapMode.Repeat)
ret += "Repeat ";
return ret + texKey.getName();
default:
return null; // parameter type not supported in J3M
}
}
@Override
public MatParam clone(){

Loading…
Cancel
Save