1 package com.jme3.material; 2 3 import com.jme3.export.InputCapsule; 4 import com.jme3.export.JmeExporter; 5 import com.jme3.export.JmeImporter; 6 import com.jme3.export.OutputCapsule; 7 import com.jme3.renderer.Renderer; 8 import com.jme3.shader.VarType; 9 import com.jme3.texture.Texture; 10 import java.io.IOException; 11 12 public class MatParamTexture extends MatParam { 13 14 private Texture texture; 15 private int unit; 16 MatParamTexture(VarType type, String name, Texture texture, int unit)17 public MatParamTexture(VarType type, String name, Texture texture, int unit) { 18 super(type, name, texture, null); 19 this.texture = texture; 20 this.unit = unit; 21 } 22 MatParamTexture()23 public MatParamTexture() { 24 } 25 getTextureValue()26 public Texture getTextureValue() { 27 return texture; 28 } 29 setTextureValue(Texture value)30 public void setTextureValue(Texture value) { 31 this.value = value; 32 this.texture = value; 33 } 34 setUnit(int unit)35 public void setUnit(int unit) { 36 this.unit = unit; 37 } 38 getUnit()39 public int getUnit() { 40 return unit; 41 } 42 43 @Override apply(Renderer r, Technique technique)44 public void apply(Renderer r, Technique technique) { 45 TechniqueDef techDef = technique.getDef(); 46 r.setTexture(getUnit(), getTextureValue()); 47 if (techDef.isUsingShaders()) { 48 technique.updateUniformParam(getPrefixedName(), getVarType(), getUnit(), true); 49 } 50 } 51 52 @Override write(JmeExporter ex)53 public void write(JmeExporter ex) throws IOException { 54 super.write(ex); 55 OutputCapsule oc = ex.getCapsule(this); 56 oc.write(unit, "texture_unit", -1); 57 oc.write(texture, "texture", null); 58 } 59 60 @Override read(JmeImporter im)61 public void read(JmeImporter im) throws IOException { 62 super.read(im); 63 InputCapsule ic = im.getCapsule(this); 64 unit = ic.readInt("texture_unit", -1); 65 texture = (Texture) ic.readSavable("texture", null); 66 } 67 }