Adds option to disable VR mouse cursor and thus enable the cursor on the desktop.
Fixes repeated attachment of mouseImage as scene to gui viewport (because its parent was always null).
This commit is contained in:
parent
3b24067a3c
commit
88a9069662
@ -9,7 +9,6 @@ import com.jme3.input.MouseInput;
|
||||
import com.jme3.input.lwjgl.GlfwMouseInputVR;
|
||||
import com.jme3.material.RenderState.BlendMode;
|
||||
import com.jme3.math.Vector2f;
|
||||
import com.jme3.scene.Node;
|
||||
import com.jme3.system.AppSettings;
|
||||
import com.jme3.system.lwjgl.LwjglWindow;
|
||||
import com.jme3.texture.Texture;
|
||||
@ -27,8 +26,8 @@ public abstract class AbstractVRMouseManager implements VRMouseManager {
|
||||
|
||||
private VREnvironment environment = null;
|
||||
|
||||
|
||||
|
||||
private boolean vrMouseEnabled = true;
|
||||
private boolean mouseAttached = false;
|
||||
private Picture mouseImage;
|
||||
private int recentCenterCount = 0;
|
||||
|
||||
@ -71,6 +70,11 @@ public abstract class AbstractVRMouseManager implements VRMouseManager {
|
||||
return environment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVRMouseEnabled(boolean enabled) {
|
||||
vrMouseEnabled = enabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setThumbstickMode(boolean set) {
|
||||
thumbstickMode = set;
|
||||
@ -185,10 +189,9 @@ public abstract class AbstractVRMouseManager implements VRMouseManager {
|
||||
@Override
|
||||
public void update(float tpf) {
|
||||
// if we are showing the cursor, add our picture as it
|
||||
|
||||
if( environment.getApplication().getInputManager().isCursorVisible() ) {
|
||||
if( mouseImage.getParent() == null ) {
|
||||
|
||||
if( vrMouseEnabled && environment.getApplication().getInputManager().isCursorVisible() ) {
|
||||
if(!mouseAttached) {
|
||||
mouseAttached = true;
|
||||
environment.getApplication().getGuiViewPort().attachScene(mouseImage);
|
||||
centerMouse();
|
||||
// the "real" mouse pointer should stay hidden
|
||||
@ -216,13 +219,13 @@ public abstract class AbstractVRMouseManager implements VRMouseManager {
|
||||
|
||||
mouseImage.updateGeometricState();
|
||||
|
||||
} else if( mouseImage.getParent() != null ) {
|
||||
Node n = mouseImage.getParent();
|
||||
mouseImage.removeFromParent();
|
||||
} else if(mouseAttached) {
|
||||
mouseAttached = false;
|
||||
environment.getApplication().getGuiViewPort().detachScene(mouseImage);
|
||||
|
||||
if (n != null){
|
||||
n.updateGeometricState();
|
||||
}
|
||||
// Use the setCursorVisible implementation to show the cursor again, depending on the state of cursorVisible
|
||||
boolean cursorVisible = environment.getApplication().getInputManager().isCursorVisible();
|
||||
environment.getApplication().getContext().getMouseInput().setCursorVisible(cursorVisible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,12 @@ public interface VRMouseManager {
|
||||
*/
|
||||
public VREnvironment getVREnvironment();
|
||||
|
||||
/**
|
||||
* Set if the mouse cursor should be used in the VR view.
|
||||
* @param enabled <code>true</code> if the mouse cursor should be displayed in VR and <code>false</code> otherwise.
|
||||
*/
|
||||
public void setVRMouseEnabled(boolean enabled);
|
||||
|
||||
/**
|
||||
* Set if the VR device controller is used within thumb stick mode.
|
||||
* @param set <code>true</code> if the VR device controller is used within thumb stick mode and <code>false</code> otherwise.
|
||||
@ -29,7 +35,7 @@ public interface VRMouseManager {
|
||||
public void setThumbstickMode(boolean set);
|
||||
|
||||
/**
|
||||
* Get if the VR device controller is used within thumb stick mode.
|
||||
* Get if the VR device controller is used within thumb stick mode.
|
||||
* @return <code>true</code> if the VR device controller is used within thumb stick mode and <code>false</code> otherwise.
|
||||
*/
|
||||
public boolean isThumbstickMode();
|
||||
|
Loading…
x
Reference in New Issue
Block a user