|
|
|
@ -70,19 +70,12 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
private final Geometry quadGeom = new Geometry("nifty-quad", quad); |
|
|
|
|
private final Material unshadedMat; |
|
|
|
|
private boolean clipWasSet = false; |
|
|
|
|
private BlendMode blendMode = null; |
|
|
|
|
private VertexBuffer quadDefaultTC = quad.getBuffer(Type.TexCoord); |
|
|
|
|
private VertexBuffer quadModTC = quadDefaultTC.clone(); |
|
|
|
|
private VertexBuffer quadColor; |
|
|
|
|
private Matrix4f tempMat = new Matrix4f(); |
|
|
|
|
private ColorRGBA tempColor = new ColorRGBA(); |
|
|
|
|
|
|
|
|
|
private static final RenderState noZWriteState = new RenderState(); |
|
|
|
|
|
|
|
|
|
static { |
|
|
|
|
noZWriteState.setDepthTest(false); |
|
|
|
|
noZWriteState.setDepthWrite(false); |
|
|
|
|
} |
|
|
|
|
private RenderState renderState = new RenderState(); |
|
|
|
|
|
|
|
|
|
private static class CachedTextKey { |
|
|
|
|
|
|
|
|
@ -127,8 +120,10 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
|
|
|
|
|
// GUI material
|
|
|
|
|
unshadedMat = new Material(display.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); |
|
|
|
|
unshadedMat.getAdditionalRenderState().setDepthTest(false); |
|
|
|
|
unshadedMat.getAdditionalRenderState().setDepthWrite(false); |
|
|
|
|
|
|
|
|
|
// Shared render state
|
|
|
|
|
renderState.setDepthTest(false); |
|
|
|
|
renderState.setDepthWrite(false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setResourceLoader(NiftyResourceLoader niftyResourceLoader) { |
|
|
|
@ -163,7 +158,6 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void beginFrame() { |
|
|
|
|
rm.setForcedRenderState(noZWriteState); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void endFrame() { |
|
|
|
@ -186,12 +180,10 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setBlendMode(BlendMode blendMode) { |
|
|
|
|
if (this.blendMode != blendMode) { |
|
|
|
|
this.blendMode = blendMode; |
|
|
|
|
} |
|
|
|
|
renderState.setBlendMode(convertBlend(blendMode)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private RenderState.BlendMode convertBlend() { |
|
|
|
|
private RenderState.BlendMode convertBlend(BlendMode blendMode) { |
|
|
|
|
if (blendMode == null) { |
|
|
|
|
return RenderState.BlendMode.Off; |
|
|
|
|
} else if (blendMode == BlendMode.BLEND) { |
|
|
|
@ -218,11 +210,7 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void renderFont(RenderFont font, String str, int x, int y, Color color, float sizeX, float sizeY) { |
|
|
|
|
if (str.length() == 0) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (font instanceof RenderFontNull) { |
|
|
|
|
if (str.length() == 0 || font instanceof RenderFontNull) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -238,11 +226,6 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
} |
|
|
|
|
textCacheCurrentFrame.put(key, text); |
|
|
|
|
|
|
|
|
|
// unshadedMat.getAdditionalRenderState().setBlendMode(convertBlend());
|
|
|
|
|
// unshadedMat.setBoolean("VertexColor", true);
|
|
|
|
|
// unshadedMat.setColor("Color", convertColor(color, tempColor));
|
|
|
|
|
// text.setMaterial(unshadedMat);
|
|
|
|
|
|
|
|
|
|
float width = text.getLineWidth(); |
|
|
|
|
// float height = text.getLineHeight();
|
|
|
|
|
float x0 = x + 0.5f * width * (1f - sizeX); |
|
|
|
@ -253,6 +236,7 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
tempMat.setScale(sizeX, sizeY, 0); |
|
|
|
|
|
|
|
|
|
rm.setWorldMatrix(tempMat); |
|
|
|
|
rm.setForcedRenderState(renderState); |
|
|
|
|
text.render(rm, colorRgba); |
|
|
|
|
|
|
|
|
|
// System.out.format("renderFont(%s, %s, %d, %d, %s, %f, %f)\n", jmeFont.getFont(), str, x, y, color.toString(), sizeX, sizeY);
|
|
|
|
@ -262,10 +246,10 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
int srcX, int srcY, int srcW, int srcH, |
|
|
|
|
Color color, float scale, |
|
|
|
|
int centerX, int centerY) { |
|
|
|
|
|
|
|
|
|
RenderImageJme jmeImage = (RenderImageJme) image; |
|
|
|
|
Texture2D texture = jmeImage.getTexture(); |
|
|
|
|
|
|
|
|
|
unshadedMat.getAdditionalRenderState().setBlendMode(convertBlend()); |
|
|
|
|
unshadedMat.setColor("Color", convertColor(color, tempColor)); |
|
|
|
|
unshadedMat.setTexture("ColorMap", texture); |
|
|
|
|
unshadedMat.setBoolean("VertexColor", false); |
|
|
|
@ -301,6 +285,7 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
tempMat.setScale(w * scale, h * scale, 0); |
|
|
|
|
|
|
|
|
|
rm.setWorldMatrix(tempMat); |
|
|
|
|
rm.setForcedRenderState(renderState); |
|
|
|
|
unshadedMat.render(quadGeom, rm); |
|
|
|
|
|
|
|
|
|
//System.out.format("renderImage2(%s, %d, %d, %d, %d, %d, %d, %d, %d, %s, %f, %d, %d)\n", texture.getKey().toString(),
|
|
|
|
@ -313,7 +298,6 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
|
|
|
|
|
RenderImageJme jmeImage = (RenderImageJme) image; |
|
|
|
|
|
|
|
|
|
unshadedMat.getAdditionalRenderState().setBlendMode(convertBlend()); |
|
|
|
|
unshadedMat.setColor("Color", convertColor(color, tempColor)); |
|
|
|
|
unshadedMat.setTexture("ColorMap", jmeImage.getTexture()); |
|
|
|
|
unshadedMat.setBoolean("VertexColor", false); |
|
|
|
@ -329,13 +313,13 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
tempMat.setScale(width * imageScale, height * imageScale, 0); |
|
|
|
|
|
|
|
|
|
rm.setWorldMatrix(tempMat); |
|
|
|
|
rm.setForcedRenderState(renderState); |
|
|
|
|
unshadedMat.render(quadGeom, rm); |
|
|
|
|
|
|
|
|
|
//System.out.format("renderImage1(%s, %d, %d, %d, %d, %s, %f)\n", jmeImage.getTexture().getKey().toString(), x, y, width, height, color.toString(), imageScale);
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void renderQuad(int x, int y, int width, int height, Color color) { |
|
|
|
|
unshadedMat.getAdditionalRenderState().setBlendMode(convertBlend()); |
|
|
|
|
unshadedMat.setColor("Color", convertColor(color, tempColor)); |
|
|
|
|
unshadedMat.setTexture("ColorMap", null); |
|
|
|
|
unshadedMat.setBoolean("VertexColor", false); |
|
|
|
@ -345,6 +329,7 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
tempMat.setScale(width, height, 0); |
|
|
|
|
|
|
|
|
|
rm.setWorldMatrix(tempMat); |
|
|
|
|
rm.setForcedRenderState(renderState); |
|
|
|
|
unshadedMat.render(quadGeom, rm); |
|
|
|
|
|
|
|
|
|
//System.out.format("renderQuad1(%d, %d, %d, %d, %s)\n", x, y, width, height, color.toString());
|
|
|
|
@ -365,7 +350,6 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
buf.flip(); |
|
|
|
|
quadColor.updateData(buf); |
|
|
|
|
|
|
|
|
|
unshadedMat.getAdditionalRenderState().setBlendMode(convertBlend()); |
|
|
|
|
unshadedMat.setColor("Color", ColorRGBA.White); |
|
|
|
|
unshadedMat.setTexture("ColorMap", null); |
|
|
|
|
unshadedMat.setBoolean("VertexColor", true); |
|
|
|
@ -375,6 +359,7 @@ public class RenderDeviceJme implements RenderDevice { |
|
|
|
|
tempMat.setScale(width, height, 0); |
|
|
|
|
|
|
|
|
|
rm.setWorldMatrix(tempMat); |
|
|
|
|
rm.setForcedRenderState(renderState); |
|
|
|
|
unshadedMat.render(quadGeom, rm); |
|
|
|
|
|
|
|
|
|
//System.out.format("renderQuad2(%d, %d, %d, %d, %s, %s, %s, %s)\n", x, y, width, height, topLeft.toString(),
|
|
|
|
|