1

How can I draw a simple red box?

Joey
  • 809
  • 1
  • 10
  • 24
  • Everything the jMonkeyEngine displays is ultimately a Mesh. Do you mean a filled box or only the outlines? – 1000ml Dec 07 '14 at 23:08

1 Answers1

3

Quad is a predefined mesh (or shape) that has a height, a width and lies on the X/Y plane. A Geometry is needed for rendering the mesh and a Material will define it's color. You also have to synchronize the position of the rectangle with the position of the mouse cursor. All these things are necessary and you'll always end up with a minimum amount of code.

public void simpleInitApp() {
    // Create red transparent material
    Material mat = new Material(getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setColor("Color", new ColorRGBA(1, 0, 0, 0.5f)); // 0.5f is the alpha value

    // Activate the use of the alpha channel
    mat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);

    // Create rectangle of size 10x10
    Geometry mouseRect = new Geometry("MouseRect", new Quad(10, 10));
    mouseRect.setMaterial(mat);
    guiNode.attachChild(mouseRect);
}

public void simpleUpdate(float tpf) {
    // Move the rectangle to the cursor position
    Vector2f cursor = inputManager.getCursorPosition();
    guiNode.getChild("MouseRect").setLocalTranslation(cursor.x, cursor.y, 0);
}

The origin of the rectangle is on its lower left corner. You may want to use an offset to center the rectangle at the cursor position:setLocalTranslation(cursor.x - 5, cursor.y - 5, 0).

More information about
Shapes: http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:shape
Materials: http://hub.jmonkeyengine.org/wiki/doku.php/jme3:intermediate:how_to_use_materials

As an alternative you could also replace the mouse cursor with a custom image.
See http://hub.jmonkeyengine.org/forum/topic/custom-mouse-cursor-committed/

1000ml
  • 864
  • 6
  • 14