* Some minor optimizations

* Disable dead zone check for mouse axes

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8732 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
sha..rd 13 years ago
parent 2b89d5870e
commit c6c4cf53a0
  1. 19
      engine/src/core/com/jme3/input/InputManager.java
  2. 6
      engine/src/core/com/jme3/material/Material.java
  3. 2
      engine/src/lwjgl-ogl/com/jme3/system/lwjgl/LwjglCanvas.java

@ -262,8 +262,8 @@ public class InputManager implements RawInputListener {
} }
} }
private void invokeAnalogsAndActions(int hash, float value, boolean applyTpf) { private void invokeAnalogsAndActions(int hash, float value, boolean applyTpf, float deadZone) {
if (value < axisDeadZone) { if (value < deadZone) {
invokeAnalogs(hash, value, !applyTpf); invokeAnalogs(hash, value, !applyTpf);
return; return;
} }
@ -276,6 +276,10 @@ public class InputManager implements RawInputListener {
boolean valueChanged = !axisValues.containsKey(hash); boolean valueChanged = !axisValues.containsKey(hash);
if (applyTpf) { if (applyTpf) {
value *= frameTPF; value *= frameTPF;
}else{
if (value != 0){
axisValues.put(hash, value);
}
} }
int size = maps.size(); int size = maps.size();
@ -338,13 +342,13 @@ public class InputManager implements RawInputListener {
} else if (value < 0) { } else if (value < 0) {
int hash = JoyAxisTrigger.joyAxisHash(joyId, axis, true); int hash = JoyAxisTrigger.joyAxisHash(joyId, axis, true);
int otherHash = JoyAxisTrigger.joyAxisHash(joyId, axis, false); int otherHash = JoyAxisTrigger.joyAxisHash(joyId, axis, false);
invokeAnalogsAndActions(hash, -value, true); invokeAnalogsAndActions(hash, -value, true, axisDeadZone);
axisValues.put(hash, -value); axisValues.put(hash, -value);
axisValues.remove(otherHash); axisValues.remove(otherHash);
} else { } else {
int hash = JoyAxisTrigger.joyAxisHash(joyId, axis, false); int hash = JoyAxisTrigger.joyAxisHash(joyId, axis, false);
int otherHash = JoyAxisTrigger.joyAxisHash(joyId, axis, true); int otherHash = JoyAxisTrigger.joyAxisHash(joyId, axis, true);
invokeAnalogsAndActions(hash, value, true); invokeAnalogsAndActions(hash, value, true, axisDeadZone);
axisValues.put(hash, value); axisValues.put(hash, value);
axisValues.remove(otherHash); axisValues.remove(otherHash);
} }
@ -387,17 +391,18 @@ public class InputManager implements RawInputListener {
// rawListeners.get(i).onMouseMotionEvent(evt); // rawListeners.get(i).onMouseMotionEvent(evt);
// } // }
// Do not use dead zone for mouse motion events
if (evt.getDX() != 0) { if (evt.getDX() != 0) {
float val = Math.abs(evt.getDX()) / 1024f; float val = Math.abs(evt.getDX()) / 1024f;
invokeAnalogsAndActions(MouseAxisTrigger.mouseAxisHash(MouseInput.AXIS_X, evt.getDX() < 0), val, false); invokeAnalogsAndActions(MouseAxisTrigger.mouseAxisHash(MouseInput.AXIS_X, evt.getDX() < 0), val, false, 0);
} }
if (evt.getDY() != 0) { if (evt.getDY() != 0) {
float val = Math.abs(evt.getDY()) / 1024f; float val = Math.abs(evt.getDY()) / 1024f;
invokeAnalogsAndActions(MouseAxisTrigger.mouseAxisHash(MouseInput.AXIS_Y, evt.getDY() < 0), val, false); invokeAnalogsAndActions(MouseAxisTrigger.mouseAxisHash(MouseInput.AXIS_Y, evt.getDY() < 0), val, false, 0);
} }
if (evt.getDeltaWheel() != 0) { if (evt.getDeltaWheel() != 0) {
float val = Math.abs(evt.getDeltaWheel()) / 100f; float val = Math.abs(evt.getDeltaWheel()) / 100f;
invokeAnalogsAndActions(MouseAxisTrigger.mouseAxisHash(MouseInput.AXIS_WHEEL, evt.getDeltaWheel() < 0), val, false); invokeAnalogsAndActions(MouseAxisTrigger.mouseAxisHash(MouseInput.AXIS_WHEEL, evt.getDeltaWheel() < 0), val, false, 0);
} }
} }

@ -942,7 +942,8 @@ public class Material implements Asset, Cloneable, Savable, Comparable<Material>
private void clearUniformsSetByCurrent(Shader shader) { private void clearUniformsSetByCurrent(Shader shader) {
ListMap<String, Uniform> uniforms = shader.getUniformMap(); ListMap<String, Uniform> uniforms = shader.getUniformMap();
for (int i = 0; i < uniforms.size(); i++) { int size = uniforms.size();
for (int i = 0; i < size; i++) {
Uniform u = uniforms.getValue(i); Uniform u = uniforms.getValue(i);
u.clearSetByCurrentMaterial(); u.clearSetByCurrentMaterial();
} }
@ -950,7 +951,8 @@ public class Material implements Asset, Cloneable, Savable, Comparable<Material>
private void resetUniformsNotSetByCurrent(Shader shader) { private void resetUniformsNotSetByCurrent(Shader shader) {
ListMap<String, Uniform> uniforms = shader.getUniformMap(); ListMap<String, Uniform> uniforms = shader.getUniformMap();
for (int i = 0; i < uniforms.size(); i++) { int size = uniforms.size();
for (int i = 0; i < size; i++) {
Uniform u = uniforms.getValue(i); Uniform u = uniforms.getValue(i);
if (!u.isSetByCurrentMaterial()) { if (!u.isSetByCurrentMaterial()) {
u.clearValue(); u.clearValue();

@ -295,6 +295,8 @@ public class LwjglCanvas extends LwjglAbstractDisplay implements JmeCanvasContex
*/ */
protected PixelFormat acquirePixelFormat(boolean forPbuffer){ protected PixelFormat acquirePixelFormat(boolean forPbuffer){
if (forPbuffer){ if (forPbuffer){
// Use 0 samples for pbuffer format, prevents
// crashes on bad drivers
if (pbufferFormat == null){ if (pbufferFormat == null){
pbufferFormat = new PixelFormat(settings.getBitsPerPixel(), pbufferFormat = new PixelFormat(settings.getBitsPerPixel(),
0, 0,

Loading…
Cancel
Save