From 59b2e6871c65f58fdad78cd7229c292f6a177578 Mon Sep 17 00:00:00 2001 From: Scott Barta Date: Thu, 1 Mar 2012 12:35:35 -0800 Subject: Adds the jMonkeyEngine library to the build. Adds the jMonkeyEngine open source 3D game engine to the build. This is built as a static library and is only used by the Finsky client. Change-Id: I06a3f054df7b8a67757267d884854f70c5a16ca0 --- engine/src/core/com/jme3/ui/Picture.java | 160 +++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 engine/src/core/com/jme3/ui/Picture.java (limited to 'engine/src/core/com/jme3/ui') diff --git a/engine/src/core/com/jme3/ui/Picture.java b/engine/src/core/com/jme3/ui/Picture.java new file mode 100644 index 0000000..81371f5 --- /dev/null +++ b/engine/src/core/com/jme3/ui/Picture.java @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2009-2010 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.ui; + +import com.jme3.asset.AssetManager; +import com.jme3.asset.TextureKey; +import com.jme3.material.Material; +import com.jme3.material.RenderState.BlendMode; +import com.jme3.math.ColorRGBA; +import com.jme3.math.Vector3f; +import com.jme3.renderer.queue.RenderQueue.Bucket; +import com.jme3.scene.Geometry; +import com.jme3.scene.shape.Quad; +import com.jme3.texture.Texture2D; + +/** + * A Picture represents a 2D image drawn on the screen. + * It can be used to represent sprites or other background elements. + * + * @author Kirill Vainer + */ +public class Picture extends Geometry { + + private float width = 1f; + private float height = 1f; + + /** + * Create a named picture. + * + * By default a picture's width and height are 1 + * and its position is 0, 0. + * + * @param name the name of the picture in the scene graph + * @param flipY If true, the Y coordinates of the texture will be flipped. + */ + public Picture(String name, boolean flipY){ + super(name, new Quad(1, 1, flipY)); + setQueueBucket(Bucket.Gui); + setCullHint(CullHint.Never); + } + + /** + * Creates a named picture. + * By default a picture's width and height are 1 + * and its position is 0, 0. + * The image texture coordinates will not be flipped. + * + * @param name the name of the picture in the scene graph + */ + public Picture(String name){ + this(name, false); + } + + /* + * Serialization only. Do not use. + */ + public Picture(){ + } + + /** + * Set the width in pixels of the picture, if the width + * does not match the texture's width, then the texture will + * be scaled to fit the picture. + * + * @param width the width to set. + */ + public void setWidth(float width){ + this.width = width; + setLocalScale(new Vector3f(width, height, 1f)); + } + + /** + * Set the height in pixels of the picture, if the height + * does not match the texture's height, then the texture will + * be scaled to fit the picture. + * + * @param height the height to set. + */ + public void setHeight(float height){ + this.height = height; + setLocalScale(new Vector3f(width, height, 1f)); + } + + /** + * Set the position of the picture in pixels. + * The origin (0, 0) is at the bottom-left of the screen. + * + * @param x The x coordinate + * @param y The y coordinate + */ + public void setPosition(float x, float y){ + float z = getLocalTranslation().getZ(); + setLocalTranslation(x, y, z); + } + + /** + * Set the image to put on the picture. + * + * @param assetManager The {@link AssetManager} to use to load the image. + * @param imgName The image name. + * @param useAlpha If true, the picture will appear transparent and allow + * objects behind it to appear through. If false, the transparent + * portions will be the image's color at that pixel. + */ + public void setImage(AssetManager assetManager, String imgName, boolean useAlpha){ + TextureKey key = new TextureKey(imgName, true); + Texture2D tex = (Texture2D) assetManager.loadTexture(key); + setTexture(assetManager, tex, useAlpha); + } + + /** + * Set the texture to put on the picture. + * + * @param assetManager The {@link AssetManager} to use to load the material. + * @param tex The texture + * @param useAlpha If true, the picture will appear transparent and allow + * objects behind it to appear through. If false, the transparent + * portions will be the image's color at that pixel. + */ + public void setTexture(AssetManager assetManager, Texture2D tex, boolean useAlpha){ + if (getMaterial() == null){ + Material mat = new Material(assetManager, "Common/MatDefs/Gui/Gui.j3md"); + mat.setColor("Color", ColorRGBA.White); + setMaterial(mat); + } + material.getAdditionalRenderState().setBlendMode(useAlpha ? BlendMode.Alpha : BlendMode.Off); + material.setTexture("Texture", tex); + } + +} -- cgit v1.2.3