diff options
Diffstat (limited to 'engine/src/niftygui')
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/Nifty.frag | 13 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.frag | 6 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md | 19 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.vert | 9 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.frag | 6 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md | 18 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.vert | 14 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.frag | 10 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md (renamed from engine/src/niftygui/Common/MatDefs/Nifty/Nifty.j3md) | 5 | ||||
-rw-r--r-- | engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.vert (renamed from engine/src/niftygui/Common/MatDefs/Nifty/Nifty.vert) | 5 | ||||
-rw-r--r-- | engine/src/niftygui/com/jme3/niftygui/InputSystemJme.java | 507 | ||||
-rw-r--r-- | engine/src/niftygui/com/jme3/niftygui/RenderDeviceJme.java | 289 |
12 files changed, 499 insertions, 402 deletions
diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/Nifty.frag b/engine/src/niftygui/Common/MatDefs/Nifty/Nifty.frag deleted file mode 100644 index 5e77548..0000000 --- a/engine/src/niftygui/Common/MatDefs/Nifty/Nifty.frag +++ /dev/null @@ -1,13 +0,0 @@ -uniform bool m_UseTex;
-uniform sampler2D m_Texture;
-uniform vec4 m_Color;
-
-varying vec2 texCoord;
-varying vec4 color;
-
-void main() {
- vec4 texVal = texture2D(m_Texture, texCoord);
- texVal = m_UseTex ? texVal : vec4(1.0);
- gl_FragColor = texVal * color * m_Color;
-}
-
diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.frag b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.frag new file mode 100644 index 0000000..31f49d6 --- /dev/null +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.frag @@ -0,0 +1,6 @@ +uniform vec4 m_Color;
+
+void main() {
+ gl_FragColor = m_Color;
+}
+
diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md new file mode 100644 index 0000000..d0213e9 --- /dev/null +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md @@ -0,0 +1,19 @@ +MaterialDef Default GUI {
+
+ MaterialParameters {
+ Vector4 Color (Color)
+ }
+
+ Technique {
+ VertexShader GLSL100: Common/MatDefs/Nifty/NiftyQuad.vert
+ FragmentShader GLSL100: Common/MatDefs/Nifty/NiftyQuad.frag
+
+ WorldParameters {
+ WorldViewProjectionMatrix
+ }
+ }
+
+ Technique FixedFunc {
+ }
+
+}
\ No newline at end of file diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.vert b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.vert new file mode 100644 index 0000000..1eb1616 --- /dev/null +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.vert @@ -0,0 +1,9 @@ +uniform mat4 g_WorldViewProjectionMatrix;
+
+attribute vec4 inPosition;
+
+
+void main() {
+ vec2 pos = (g_WorldViewProjectionMatrix * inPosition).xy;
+ gl_Position = vec4(pos, 0.0, 1.0);
+}
\ No newline at end of file diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.frag b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.frag new file mode 100644 index 0000000..1f0a645 --- /dev/null +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.frag @@ -0,0 +1,6 @@ +varying vec4 color;
+
+void main() {
+ gl_FragColor = color;
+}
+
diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md new file mode 100644 index 0000000..4b3b22d --- /dev/null +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md @@ -0,0 +1,18 @@ +MaterialDef Default GUI {
+
+ MaterialParameters {
+ }
+
+ Technique {
+ VertexShader GLSL100: Common/MatDefs/Nifty/NiftyQuadGrad.vert
+ FragmentShader GLSL100: Common/MatDefs/Nifty/NiftyQuadGrad.frag
+
+ WorldParameters {
+ WorldViewProjectionMatrix
+ }
+ }
+
+ Technique FixedFunc {
+ }
+
+}
\ No newline at end of file diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.vert b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.vert new file mode 100644 index 0000000..0ecaee4 --- /dev/null +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.vert @@ -0,0 +1,14 @@ +uniform mat4 g_WorldViewProjectionMatrix;
+
+attribute vec4 inPosition;
+attribute vec4 inColor;
+attribute vec4 inIndex;
+
+varying vec4 color;
+
+void main() {
+ vec2 pos = (g_WorldViewProjectionMatrix * inPosition).xy;
+ gl_Position = vec4(pos, 0.0, 1.0);
+
+ color = inIndex;
+}
\ No newline at end of file diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.frag b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.frag new file mode 100644 index 0000000..b2b4b95 --- /dev/null +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.frag @@ -0,0 +1,10 @@ +uniform sampler2D m_Texture;
+uniform vec4 m_Color;
+
+varying vec2 texCoord;
+
+void main() {
+ vec4 texVal = texture2D(m_Texture, texCoord);
+ gl_FragColor = texVal * m_Color ;
+}
+
diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/Nifty.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md index 9ba39b1..07f5e92 100644 --- a/engine/src/niftygui/Common/MatDefs/Nifty/Nifty.j3md +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md @@ -2,13 +2,12 @@ MaterialDef Default GUI { MaterialParameters {
Texture2D Texture
- Boolean UseTex
Vector4 Color (Color)
}
Technique {
- VertexShader GLSL100: Common/MatDefs/Nifty/Nifty.vert
- FragmentShader GLSL100: Common/MatDefs/Nifty/Nifty.frag
+ VertexShader GLSL100: Common/MatDefs/Nifty/NiftyTex.vert
+ FragmentShader GLSL100: Common/MatDefs/Nifty/NiftyTex.frag
WorldParameters {
WorldViewProjectionMatrix
diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/Nifty.vert b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.vert index 67c864d..c5c3dc1 100644 --- a/engine/src/niftygui/Common/MatDefs/Nifty/Nifty.vert +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.vert @@ -1,16 +1,13 @@ uniform mat4 g_WorldViewProjectionMatrix;
attribute vec4 inPosition;
-attribute vec4 inColor;
attribute vec2 inTexCoord;
varying vec2 texCoord;
-varying vec4 color;
void main() {
vec2 pos = (g_WorldViewProjectionMatrix * inPosition).xy;
gl_Position = vec4(pos, 0.0, 1.0);
- texCoord = inTexCoord;
- color = inColor;
+ texCoord = inTexCoord;
}
\ No newline at end of file diff --git a/engine/src/niftygui/com/jme3/niftygui/InputSystemJme.java b/engine/src/niftygui/com/jme3/niftygui/InputSystemJme.java index 0b80131..01c2ac7 100644 --- a/engine/src/niftygui/com/jme3/niftygui/InputSystemJme.java +++ b/engine/src/niftygui/com/jme3/niftygui/InputSystemJme.java @@ -1,233 +1,274 @@ -/* - * 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.niftygui; - -import com.jme3.input.InputManager; -import com.jme3.input.KeyInput; -import com.jme3.input.RawInputListener; -import com.jme3.input.event.*; -import de.lessvoid.nifty.Nifty; -import de.lessvoid.nifty.NiftyInputConsumer; -import de.lessvoid.nifty.tools.resourceloader.NiftyResourceLoader; -import de.lessvoid.nifty.input.keyboard.KeyboardInputEvent; -import de.lessvoid.nifty.spi.input.InputSystem; -import java.util.ArrayList; - -public class InputSystemJme implements InputSystem, RawInputListener { - - private final ArrayList<InputEvent> inputQueue = new ArrayList<InputEvent>(); - - private InputManager inputManager; - - private boolean isDragging = false, niftyOwnsDragging = false; - private boolean pressed = false; - private int buttonIndex; - private int x, y; - private int height; - - private boolean shiftDown = false; - private boolean ctrlDown = false; - - private Nifty nifty; - - public InputSystemJme(InputManager inputManager){ - this.inputManager = inputManager; - } - - public void setResourceLoader(NiftyResourceLoader niftyResourceLoader) { - } - - public void setNifty(Nifty nifty) { - this.nifty = nifty; - } - - /** - * @param height The height of the viewport. Used to convert - * buttom-left origin to upper-left origin. - */ - public void setHeight(int height){ - this.height = height; - } - - public void setMousePosition(int x, int y){ - } - - public void beginInput(){ - } - - public void endInput(){ - boolean result = nifty.update(); - } - - private void onTouchEventQueued(TouchEvent evt, NiftyInputConsumer nic) { - boolean consumed = false; - - x = (int) evt.getX(); - y = (int) (height - evt.getY()); - - switch (evt.getType()) { - case DOWN: - consumed = nic.processMouseEvent(x, y, 0, 0, false); - isDragging = true; - niftyOwnsDragging = consumed; - if (consumed){ - evt.setConsumed(); - } - - break; - - case UP: - if (niftyOwnsDragging){ - consumed = nic.processMouseEvent(x, y, 0, buttonIndex, pressed); - if (consumed){ - evt.setConsumed(); - } - } - - isDragging = false; - niftyOwnsDragging = false; - break; - } - } - - private void onMouseMotionEventQueued(MouseMotionEvent evt, NiftyInputConsumer nic) { - x = evt.getX(); - y = height - evt.getY(); - nic.processMouseEvent(x, y, evt.getDeltaWheel(), buttonIndex, pressed); -// if (nic.processMouseEvent(niftyEvt) /*|| nifty.getCurrentScreen().isMouseOverElement()*/){ - // Do not consume motion events - //evt.setConsumed(); -// } - } - - private void onMouseButtonEventQueued(MouseButtonEvent evt, NiftyInputConsumer nic) { - boolean wasPressed = pressed; - boolean forwardToNifty = true; - - buttonIndex = evt.getButtonIndex(); - pressed = evt.isPressed(); - - // Mouse button raised. End dragging - if (wasPressed && !pressed){ - if (!niftyOwnsDragging){ - forwardToNifty = false; - } - isDragging = false; - niftyOwnsDragging = false; - } - - boolean consumed = false; - if (forwardToNifty){ - consumed = nic.processMouseEvent(x, y, 0, buttonIndex, pressed); - if (consumed){ - evt.setConsumed(); - } - } - - // Mouse button pressed. Begin dragging - if (!wasPressed && pressed){ - isDragging = true; - niftyOwnsDragging = consumed; - } - } - - private void onKeyEventQueued(KeyInputEvent evt, NiftyInputConsumer nic) { - int code = evt.getKeyCode(); - - if (code == KeyInput.KEY_LSHIFT || code == KeyInput.KEY_RSHIFT) { - shiftDown = evt.isPressed(); - } else if (code == KeyInput.KEY_LCONTROL || code == KeyInput.KEY_RCONTROL) { - ctrlDown = evt.isPressed(); - } - - KeyboardInputEvent keyEvt = new KeyboardInputEvent(code, - evt.getKeyChar(), - evt.isPressed(), - shiftDown, - ctrlDown); - - if (nic.processKeyboardEvent(keyEvt)){ - evt.setConsumed(); - } - } - - public void onMouseMotionEvent(MouseMotionEvent evt) { - // Only forward the event if there's actual motion involved. - if (inputManager.isCursorVisible() && (evt.getDX() != 0 || - evt.getDY() != 0 || - evt.getDeltaWheel() != 0)){ - inputQueue.add(evt); - } - } - - public void onMouseButtonEvent(MouseButtonEvent evt) { - if (inputManager.isCursorVisible() && evt.getButtonIndex() >= 0 && evt.getButtonIndex() <= 2){ - inputQueue.add(evt); - } - } - - public void onJoyAxisEvent(JoyAxisEvent evt) { - } - - public void onJoyButtonEvent(JoyButtonEvent evt) { - } - - public void onKeyEvent(KeyInputEvent evt) { - inputQueue.add(evt); - } - - public void onTouchEvent(TouchEvent evt) { - inputQueue.add(evt); - } - - public void forwardEvents(NiftyInputConsumer nic) { - int queueSize = inputQueue.size(); - - for (int i = 0; i < queueSize; i++){ - InputEvent evt = inputQueue.get(i); - if (evt instanceof MouseMotionEvent){ - onMouseMotionEventQueued( (MouseMotionEvent)evt, nic); - }else if (evt instanceof MouseButtonEvent){ - onMouseButtonEventQueued( (MouseButtonEvent)evt, nic); - }else if (evt instanceof KeyInputEvent){ - onKeyEventQueued( (KeyInputEvent)evt, nic); - }else if (evt instanceof TouchEvent){ - onTouchEventQueued( (TouchEvent)evt, nic); - } - } - - inputQueue.clear(); - } - - -} +/*
+ * 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.niftygui;
+
+import com.jme3.input.InputManager;
+import com.jme3.input.KeyInput;
+import com.jme3.input.RawInputListener;
+import com.jme3.input.SoftTextDialogInput;
+import com.jme3.input.controls.SoftTextDialogInputListener;
+import com.jme3.input.event.*;
+import com.jme3.system.JmeSystem;
+import de.lessvoid.nifty.Nifty;
+import de.lessvoid.nifty.NiftyInputConsumer;
+import de.lessvoid.nifty.controls.TextField;
+import de.lessvoid.nifty.controls.nullobjects.TextFieldNull;
+import de.lessvoid.nifty.elements.Element;
+import de.lessvoid.nifty.tools.resourceloader.NiftyResourceLoader;
+import de.lessvoid.nifty.input.keyboard.KeyboardInputEvent;
+import de.lessvoid.nifty.spi.input.InputSystem;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public class InputSystemJme implements InputSystem, RawInputListener {
+
+ private final ArrayList<InputEvent> inputQueue = new ArrayList<InputEvent>();
+ private InputManager inputManager;
+ private boolean isDragging = false, niftyOwnsDragging = false;
+ private boolean pressed = false;
+ private int buttonIndex;
+ private int x, y;
+ private int height;
+ private boolean shiftDown = false;
+ private boolean ctrlDown = false;
+ private Nifty nifty;
+
+ public InputSystemJme(InputManager inputManager) {
+ this.inputManager = inputManager;
+ }
+
+ public void setResourceLoader(NiftyResourceLoader niftyResourceLoader) {
+ }
+
+ public void setNifty(Nifty nifty) {
+ this.nifty = nifty;
+ }
+
+ /**
+ * @param height The height of the viewport. Used to convert
+ * buttom-left origin to upper-left origin.
+ */
+ public void setHeight(int height) {
+ this.height = height;
+ }
+
+ public void setMousePosition(int x, int y) {
+ }
+
+ public void beginInput() {
+ }
+
+ public void endInput() {
+ boolean result = nifty.update();
+ }
+
+ private void onTouchEventQueued(TouchEvent evt, NiftyInputConsumer nic) {
+ boolean consumed = false;
+
+ x = (int) evt.getX();
+ y = (int) (height - evt.getY());
+
+ if (!inputManager.getSimulateMouse()) {
+ switch (evt.getType()) {
+ case DOWN:
+ consumed = nic.processMouseEvent(x, y, 0, 0, true);
+ isDragging = true;
+ niftyOwnsDragging = consumed;
+ if (consumed) {
+ evt.setConsumed();
+ }
+
+ break;
+
+ case UP:
+ if (niftyOwnsDragging) {
+ consumed = nic.processMouseEvent(x, y, 0, 0, false);
+ if (consumed) {
+ evt.setConsumed();
+ }
+ }
+
+ isDragging = false;
+ niftyOwnsDragging = false;
+
+ if (consumed) {
+ processSoftKeyboard();
+ }
+
+ break;
+ }
+ }
+ }
+
+ private void onMouseMotionEventQueued(MouseMotionEvent evt, NiftyInputConsumer nic) {
+ x = evt.getX();
+ y = height - evt.getY();
+ nic.processMouseEvent(x, y, evt.getDeltaWheel(), buttonIndex, pressed);
+// if (nic.processMouseEvent(niftyEvt) /*|| nifty.getCurrentScreen().isMouseOverElement()*/){
+ // Do not consume motion events
+ //evt.setConsumed();
+// }
+ }
+
+ private void onMouseButtonEventQueued(MouseButtonEvent evt, NiftyInputConsumer nic) {
+ boolean wasPressed = pressed;
+ boolean forwardToNifty = true;
+
+ buttonIndex = evt.getButtonIndex();
+ pressed = evt.isPressed();
+
+ // Mouse button raised. End dragging
+ if (wasPressed && !pressed) {
+ if (!niftyOwnsDragging) {
+ forwardToNifty = false;
+ }
+ isDragging = false;
+ niftyOwnsDragging = false;
+ }
+
+ boolean consumed = false;
+ if (forwardToNifty) {
+ consumed = nic.processMouseEvent(x, y, 0, buttonIndex, pressed);
+ if (consumed) {
+ evt.setConsumed();
+ }
+ }
+
+ // Mouse button pressed. Begin dragging
+ if (!wasPressed && pressed) {
+ isDragging = true;
+ niftyOwnsDragging = consumed;
+ }
+
+ if (consumed && pressed) {
+ processSoftKeyboard();
+ }
+
+ }
+
+ private void onKeyEventQueued(KeyInputEvent evt, NiftyInputConsumer nic) {
+ int code = evt.getKeyCode();
+
+ if (code == KeyInput.KEY_LSHIFT || code == KeyInput.KEY_RSHIFT) {
+ shiftDown = evt.isPressed();
+ } else if (code == KeyInput.KEY_LCONTROL || code == KeyInput.KEY_RCONTROL) {
+ ctrlDown = evt.isPressed();
+ }
+
+ KeyboardInputEvent keyEvt = new KeyboardInputEvent(code,
+ evt.getKeyChar(),
+ evt.isPressed(),
+ shiftDown,
+ ctrlDown);
+
+ if (nic.processKeyboardEvent(keyEvt)) {
+ evt.setConsumed();
+ }
+ }
+
+ public void onMouseMotionEvent(MouseMotionEvent evt) {
+ // Only forward the event if there's actual motion involved.
+ if (inputManager.isCursorVisible() && (evt.getDX() != 0
+ || evt.getDY() != 0
+ || evt.getDeltaWheel() != 0)) {
+ inputQueue.add(evt);
+ }
+ }
+
+ public void onMouseButtonEvent(MouseButtonEvent evt) {
+ if (inputManager.isCursorVisible() && evt.getButtonIndex() >= 0 && evt.getButtonIndex() <= 2) {
+ inputQueue.add(evt);
+ }
+ }
+
+ public void onJoyAxisEvent(JoyAxisEvent evt) {
+ }
+
+ public void onJoyButtonEvent(JoyButtonEvent evt) {
+ }
+
+ public void onKeyEvent(KeyInputEvent evt) {
+ inputQueue.add(evt);
+ }
+
+ public void onTouchEvent(TouchEvent evt) {
+ inputQueue.add(evt);
+ }
+
+ public void forwardEvents(NiftyInputConsumer nic) {
+ int queueSize = inputQueue.size();
+
+ for (int i = 0; i < queueSize; i++) {
+ InputEvent evt = inputQueue.get(i);
+ if (evt instanceof MouseMotionEvent) {
+ onMouseMotionEventQueued((MouseMotionEvent) evt, nic);
+ } else if (evt instanceof MouseButtonEvent) {
+ onMouseButtonEventQueued((MouseButtonEvent) evt, nic);
+ } else if (evt instanceof KeyInputEvent) {
+ onKeyEventQueued((KeyInputEvent) evt, nic);
+ } else if (evt instanceof TouchEvent) {
+ onTouchEventQueued((TouchEvent) evt, nic);
+ }
+ }
+
+ inputQueue.clear();
+ }
+
+ private void processSoftKeyboard() {
+ SoftTextDialogInput softTextDialogInput = JmeSystem.getSoftTextDialogInput();
+ if (softTextDialogInput != null) {
+
+ Element element = nifty.getCurrentScreen().getFocusHandler().getKeyboardFocusElement();
+ if (element != null) {
+ final TextField textField = element.getNiftyControl(TextField.class);
+ if (textField != null && !(textField instanceof TextFieldNull)) {
+ Logger.getLogger(InputSystemJme.class.getName()).log(Level.INFO, "Current TextField: {0}", textField.getId());
+ String initialValue = textField.getText();
+ if (initialValue == null) {
+ initialValue = "";
+ }
+
+ softTextDialogInput.requestDialog(SoftTextDialogInput.TEXT_ENTRY_DIALOG, "Enter Text", initialValue, new SoftTextDialogInputListener() {
+
+ public void onSoftText(int action, String text) {
+ if (action == SoftTextDialogInputListener.COMPLETE) {
+ textField.setText(text);
+ }
+ }
+ });
+ }
+ }
+ }
+
+ }
+}
diff --git a/engine/src/niftygui/com/jme3/niftygui/RenderDeviceJme.java b/engine/src/niftygui/com/jme3/niftygui/RenderDeviceJme.java index 8977ed6..1f36a97 100644 --- a/engine/src/niftygui/com/jme3/niftygui/RenderDeviceJme.java +++ b/engine/src/niftygui/com/jme3/niftygui/RenderDeviceJme.java @@ -29,7 +29,6 @@ * 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.niftygui;
import com.jme3.font.BitmapText;
@@ -60,140 +59,148 @@ import java.nio.FloatBuffer; import java.util.HashMap;
public class RenderDeviceJme implements RenderDevice {
-
+
private NiftyJmeDisplay display;
private RenderManager rm;
private Renderer r;
-
private HashMap<String, BitmapText> textCacheLastFrame = new HashMap<String, BitmapText>();
private HashMap<String, BitmapText> textCacheCurrentFrame = new HashMap<String, BitmapText>();
-
private final Quad quad = new Quad(1, -1, true);
private final Geometry quadGeom = new Geometry("nifty-quad", quad);
private final Material niftyMat;
-
+ private final Material niftyQuadMat;
+ private final Material niftyQuadGradMat;
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();
-
- public RenderDeviceJme(NiftyJmeDisplay display){
+
+ public RenderDeviceJme(NiftyJmeDisplay display) {
this.display = display;
-
+
quadColor = new VertexBuffer(Type.Color);
quadColor.setNormalized(true);
ByteBuffer bb = BufferUtils.createByteBuffer(4 * 4);
quadColor.setupData(Usage.Stream, 4, Format.UnsignedByte, bb);
quad.setBuffer(quadColor);
-
+
quadModTC.setUsage(Usage.Stream);
-
- niftyMat = new Material(display.getAssetManager(), "Common/MatDefs/Nifty/Nifty.j3md");
+
+ //Color + texture color material for text and images
+ niftyMat = new Material(display.getAssetManager(), "Common/MatDefs/Nifty/NiftyTex.j3md");
niftyMat.getAdditionalRenderState().setDepthTest(false);
+ //Color material for uniform colored quads
+ niftyQuadMat = new Material(display.getAssetManager(), "Common/MatDefs/Nifty/NiftyQuad.j3md");
+ niftyQuadMat.getAdditionalRenderState().setDepthTest(false);
+
+ //vertex color only for gradient quads (although i didn't find a way in nifty to make a gradient using vertex color)
+ niftyQuadGradMat = new Material(display.getAssetManager(), "Common/MatDefs/Nifty/NiftyQuadGrad.j3md");
+ niftyQuadGradMat.getAdditionalRenderState().setDepthTest(false);
+
}
-
+
public void setResourceLoader(NiftyResourceLoader niftyResourceLoader) {
}
-
- public void setRenderManager(RenderManager rm){
+
+ public void setRenderManager(RenderManager rm) {
this.rm = rm;
this.r = rm.getRenderer();
}
// TODO: Cursor support
- public MouseCursor createMouseCursor(String str, int x, int y){
+ public MouseCursor createMouseCursor(String str, int x, int y) {
return new MouseCursor() {
+
public void dispose() {
}
};
}
-
- public void enableMouseCursor(MouseCursor cursor){
+
+ public void enableMouseCursor(MouseCursor cursor) {
}
-
- public void disableMouseCursor(){
+
+ public void disableMouseCursor() {
}
-
+
public RenderImage createImage(String filename, boolean linear) {
return new RenderImageJme(filename, linear, display);
}
-
+
public RenderFont createFont(String filename) {
return new RenderFontJme(filename, display);
}
-
+
public void beginFrame() {
}
-
+
public void endFrame() {
HashMap<String, BitmapText> temp = textCacheLastFrame;
textCacheLastFrame = textCacheCurrentFrame;
textCacheCurrentFrame = temp;
textCacheCurrentFrame.clear();
-
+
// System.exit(1);
}
-
+
public int getWidth() {
return display.getWidth();
}
-
+
public int getHeight() {
return display.getHeight();
}
-
+
public void clear() {
}
-
+
public void setBlendMode(BlendMode blendMode) {
- if (this.blendMode != blendMode){
+ if (this.blendMode != blendMode) {
this.blendMode = blendMode;
}
}
-
- private RenderState.BlendMode convertBlend(){
- if (blendMode == null)
+
+ private RenderState.BlendMode convertBlend() {
+ if (blendMode == null) {
return RenderState.BlendMode.Off;
- else if (blendMode == BlendMode.BLEND)
+ } else if (blendMode == BlendMode.BLEND) {
return RenderState.BlendMode.Alpha;
- else if (blendMode == BlendMode.MULIPLY)
+ } else if (blendMode == BlendMode.MULIPLY) {
return RenderState.BlendMode.Modulate;
- else
+ } else {
throw new UnsupportedOperationException();
+ }
}
-
- private int convertColor(Color color){
+
+ private int convertColor(Color color) {
int color2 = 0;
- color2 |= ((int)(255.0 * color.getAlpha())) << 24;
- color2 |= ((int)(255.0 * color.getBlue())) << 16;
- color2 |= ((int)(255.0 * color.getGreen())) << 8;
- color2 |= ((int)(255.0 * color.getRed()));
+ color2 |= ((int) (255.0 * color.getAlpha())) << 24;
+ color2 |= ((int) (255.0 * color.getBlue())) << 16;
+ color2 |= ((int) (255.0 * color.getGreen())) << 8;
+ color2 |= ((int) (255.0 * color.getRed()));
return color2;
}
-
- private ColorRGBA convertColor(Color inColor, ColorRGBA outColor){
+
+ private ColorRGBA convertColor(Color inColor, ColorRGBA outColor) {
return outColor.set(inColor.getRed(), inColor.getGreen(), inColor.getBlue(), inColor.getAlpha());
}
-
- private void setColor(Color color){
- ByteBuffer buf = (ByteBuffer) quadColor.getData();
- buf.rewind();
-
- int color2 = convertColor(color);
- buf.putInt(color2);
- buf.putInt(color2);
- buf.putInt(color2);
- buf.putInt(color2);
-
- buf.flip();
- quadColor.updateData(buf);
- }
+// private void setColor(Color color) {
+// ByteBuffer buf = (ByteBuffer) quadColor.getData();
+// buf.rewind();
+//
+// int color2 = convertColor(color);
+// buf.putInt(color2);
+// buf.putInt(color2);
+// buf.putInt(color2);
+// buf.putInt(color2);
+//
+// buf.flip();
+// quadColor.updateData(buf);
+// }
+
/**
*
* @param font
@@ -205,22 +212,23 @@ public class RenderDeviceJme implements RenderDevice { * @deprecated use renderFont(RenderFont font, String str, int x, int y, Color color, float sizeX, float sizeY) instead
*/
@Deprecated
- public void renderFont(RenderFont font, String str, int x, int y, Color color, float size){
+ public void renderFont(RenderFont font, String str, int x, int y, Color color, float size) {
renderFont(font, str, x, y, color, size, size);
}
-
+
@Override
- public void renderFont(RenderFont font, String str, int x, int y, Color color, float sizeX, float sizeY){
- //TODO find out what the f1 param is for
- if (str.length() == 0)
+ 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 (font instanceof RenderFontNull) {
return;
-
+ }
+
RenderFontJme jmeFont = (RenderFontJme) font;
- String key = font+str+color.getColorString();
+ String key = font + str + color.getColorString();
BitmapText text = textCacheLastFrame.get(key);
if (text == null) {
text = jmeFont.createText();
@@ -228,166 +236,149 @@ public class RenderDeviceJme implements RenderDevice { text.updateLogicalState(0);
}
textCacheCurrentFrame.put(key, text);
-
- niftyMat.setColor("Color", convertColor(color, tempColor));
- niftyMat.setBoolean("UseTex", true);
+
+ niftyMat.setColor("Color", convertColor(color, tempColor));
niftyMat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
// niftyMat.getAdditionalRenderState().setBlendMode(convertBlend());
text.setMaterial(niftyMat);
-
- float width = text.getLineWidth();
- float height = text.getLineHeight();
-
- float x0 = x + 0.5f * width * (1f - sizeX);
- float y0 = y + 0.5f * height * (1f - sizeY);
-
+
tempMat.loadIdentity();
- tempMat.setTranslation(x0, getHeight() - y0, 0);
+ tempMat.setTranslation(x, getHeight() - y, 0);
tempMat.setScale(sizeX, sizeY, 0);
-
+
rm.setWorldMatrix(tempMat);
text.render(rm);
-
+
// System.out.println("renderFont");
}
-
+
public void renderImage(RenderImage image, int x, int y, int w, int h,
- int srcX, int srcY, int srcW, int srcH,
- Color color, float scale,
- int centerX, int centerY){
+ int srcX, int srcY, int srcW, int srcH,
+ Color color, float scale,
+ int centerX, int centerY) {
RenderImageJme jmeImage = (RenderImageJme) image;
Texture2D texture = jmeImage.getTexture();
-
+
niftyMat.getAdditionalRenderState().setBlendMode(convertBlend());
- niftyMat.setColor("Color", ColorRGBA.White);
- niftyMat.setTexture("Texture", texture);
- niftyMat.setBoolean("UseTex", true);
- setColor(color);
-
- float imageWidth = jmeImage.getWidth();
+ niftyMat.setColor("Color", convertColor(color, tempColor));
+ niftyMat.setTexture("Texture", texture);
+ //setColor(color);
+
+ float imageWidth = jmeImage.getWidth();
float imageHeight = jmeImage.getHeight();
FloatBuffer texCoords = (FloatBuffer) quadModTC.getData();
-
+
float startX = srcX / imageWidth;
float startY = srcY / imageHeight;
- float endX = startX + (srcW / imageWidth);
- float endY = startY + (srcH / imageHeight);
-
+ float endX = startX + (srcW / imageWidth);
+ float endY = startY + (srcH / imageHeight);
+
startY = 1f - startY;
- endY = 1f - endY;
-
+ endY = 1f - endY;
+
texCoords.rewind();
texCoords.put(startX).put(startY);
- texCoords.put(endX) .put(startY);
- texCoords.put(endX) .put(endY);
+ texCoords.put(endX).put(startY);
+ texCoords.put(endX).put(endY);
texCoords.put(startX).put(endY);
texCoords.flip();
quadModTC.updateData(texCoords);
-
+
quad.clearBuffer(Type.TexCoord);
quad.setBuffer(quadModTC);
-
+
float x0 = centerX + (x - centerX) * scale;
float y0 = centerY + (y - centerY) * scale;
-
+
tempMat.loadIdentity();
tempMat.setTranslation(x0, getHeight() - y0, 0);
tempMat.setScale(w * scale, h * scale, 0);
-
+
rm.setWorldMatrix(tempMat);
niftyMat.render(quadGeom, rm);
//
// System.out.println("renderImage (Sub)");
}
-
+
public void renderImage(RenderImage image, int x, int y, int width, int height,
- Color color, float imageScale){
-
+ Color color, float imageScale) {
+
RenderImageJme jmeImage = (RenderImageJme) image;
-
+
niftyMat.getAdditionalRenderState().setBlendMode(convertBlend());
- niftyMat.setColor("Color", ColorRGBA.White);
- niftyMat.setTexture("Texture", jmeImage.getTexture());
- niftyMat.setBoolean("UseTex", true);
- setColor(color);
-
+ niftyMat.setColor("Color", convertColor(color, tempColor));
+ niftyMat.setTexture("Texture", jmeImage.getTexture());
+ //setColor(color);
+
quad.clearBuffer(Type.TexCoord);
quad.setBuffer(quadDefaultTC);
-
- float x0 = x + 0.5f * width * (1f - imageScale);
+
+ float x0 = x + 0.5f * width * (1f - imageScale);
float y0 = y + 0.5f * height * (1f - imageScale);
-
+
tempMat.loadIdentity();
tempMat.setTranslation(x0, getHeight() - y0, 0);
tempMat.setScale(width * imageScale, height * imageScale, 0);
-
+
rm.setWorldMatrix(tempMat);
niftyMat.render(quadGeom, rm);
//
// System.out.println("renderImage");
}
-
- public void renderQuad(int x, int y, int width, int height, Color color){
- niftyMat.getAdditionalRenderState().setBlendMode(convertBlend());
- niftyMat.setColor("Color", ColorRGBA.White);
- niftyMat.clearParam("Texture");
- niftyMat.setBoolean("UseTex", false);
- setColor(color);
-
- tempMat.loadIdentity();
- tempMat.setTranslation(x, getHeight() - y, 0);
- tempMat.setScale(width, height, 0);
-
- rm.setWorldMatrix(tempMat);
- niftyMat.render(quadGeom, rm);
-
+
+ public void renderQuad(int x, int y, int width, int height, Color color) {
+ if (color.getAlpha() > 0) {
+ niftyQuadMat.getAdditionalRenderState().setBlendMode(convertBlend());
+ niftyQuadMat.setColor("Color", convertColor(color, tempColor));
+
+ tempMat.loadIdentity();
+ tempMat.setTranslation(x, getHeight() - y, 0);
+ tempMat.setScale(width, height, 0);
+
+ rm.setWorldMatrix(tempMat);
+ niftyQuadMat.render(quadGeom, rm);
+ }
// System.out.println("renderQuad (Solid)");
}
-
+
public void renderQuad(int x, int y, int width, int height,
- Color topLeft, Color topRight, Color bottomRight, Color bottomLeft) {
+ Color topLeft, Color topRight, Color bottomRight, Color bottomLeft) {
ByteBuffer buf = (ByteBuffer) quadColor.getData();
buf.rewind();
buf.putInt(convertColor(topRight));
buf.putInt(convertColor(topLeft));
-
+
buf.putInt(convertColor(bottomLeft));
buf.putInt(convertColor(bottomRight));
buf.flip();
quadColor.updateData(buf);
- niftyMat.getAdditionalRenderState().setBlendMode(convertBlend());
- niftyMat.setColor("Color", ColorRGBA.White);
- niftyMat.clearParam("Texture");
- niftyMat.setBoolean("UseTex", false);
-
+ niftyQuadGradMat.getAdditionalRenderState().setBlendMode(convertBlend());
+
tempMat.loadIdentity();
tempMat.setTranslation(x, getHeight() - y, 0);
tempMat.setScale(width, height, 0);
-
+
rm.setWorldMatrix(tempMat);
- niftyMat.render(quadGeom, rm);
+ niftyQuadGradMat.render(quadGeom, rm);
//
// System.out.println("renderQuad (Grad)");
}
-
- public void enableClip(int x0, int y0, int x1, int y1){
+
+ public void enableClip(int x0, int y0, int x1, int y1) {
// System.out.println("enableClip");
clipWasSet = true;
r.setClipRect(x0, getHeight() - y1, x1 - x0, y1 - y0);
}
-
+
public void disableClip() {
// System.out.println("disableClip");
- if (clipWasSet){
+ if (clipWasSet) {
r.clearClipRect();
clipWasSet = false;
}
}
-
-
-
}
|