Mouse lock support
This commit is contained in:
parent
f305059e4c
commit
11a8389feb
15
Sources/armory/logicnode/SetMouseLockNode.hx
Normal file
15
Sources/armory/logicnode/SetMouseLockNode.hx
Normal file
|
@ -0,0 +1,15 @@
|
|||
package armory.logicnode;
|
||||
|
||||
class SetMouseLockNode extends LogicNode {
|
||||
|
||||
public function new(tree:LogicTree) {
|
||||
super(tree);
|
||||
}
|
||||
|
||||
override function run() {
|
||||
var lock:Bool = inputs[1].get();
|
||||
var mouse = iron.system.Input.getMouse();
|
||||
lock ? mouse.lock() : mouse.unlock();
|
||||
super.run();
|
||||
}
|
||||
}
|
|
@ -14,7 +14,6 @@ class FirstPersonController extends CameraController {
|
|||
#else
|
||||
|
||||
var head:Object;
|
||||
var locked = false;
|
||||
static inline var rotationSpeed = 2.0;
|
||||
|
||||
public function new() {
|
||||
|
@ -37,18 +36,12 @@ class FirstPersonController extends CameraController {
|
|||
if (Input.occupied || !body.ready) return;
|
||||
|
||||
var mouse = Input.getMouse();
|
||||
var kb = Input.getKeyboard();
|
||||
|
||||
// if (mouse.started() && !locked) {
|
||||
// kha.SystemImpl.lockMouse();
|
||||
// locked = true;
|
||||
// }
|
||||
// else if (escape && locked) {
|
||||
// kha.SystemImpl.unlockMouse();
|
||||
// locked = false;
|
||||
// }
|
||||
if (mouse.started() && !mouse.locked) mouse.lock();
|
||||
else if (kb.started("esc") && mouse.locked) mouse.unlock();
|
||||
|
||||
// if (locked) {
|
||||
if (mouse.down()) {
|
||||
if (mouse.locked) {
|
||||
head.transform.rotate(xVec, -mouse.movementY / 250 * rotationSpeed);
|
||||
transform.rotate(zVec, -mouse.movementX / 250 * rotationSpeed);
|
||||
body.syncTransform();
|
||||
|
|
|
@ -44,11 +44,13 @@ class SpaceArmory extends Trait {
|
|||
|
||||
function update() {
|
||||
|
||||
#if arm_viewport
|
||||
var keyboard = Input.getKeyboard();
|
||||
if (keyboard.started("esc")) {
|
||||
var viewStr = iron.Scene.active.camera != null ? '|' + iron.Scene.active.camera.V.toArray() : '';
|
||||
trace('__arm|quit' + viewStr);
|
||||
}
|
||||
#end
|
||||
|
||||
// var mouse = Input.getMouse();
|
||||
// if (mouse.started("right")) {
|
||||
|
|
17
blender/arm/logicnode/input_set_mouse_lock.py
Normal file
17
blender/arm/logicnode/input_set_mouse_lock.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
import bpy
|
||||
from bpy.props import *
|
||||
from bpy.types import Node, NodeSocket
|
||||
from arm.logicnode.arm_nodes import *
|
||||
|
||||
class SetMouseLockNode(Node, ArmLogicTreeNode):
|
||||
'''Set Mouse Lock node'''
|
||||
bl_idname = 'LNSetMouseLockNode'
|
||||
bl_label = 'Set Mouse Lock'
|
||||
bl_icon = 'GAME'
|
||||
|
||||
def init(self, context):
|
||||
self.inputs.new('ArmNodeSocketAction', 'In')
|
||||
self.inputs.new('NodeSocketBool', 'Lock')
|
||||
self.outputs.new('ArmNodeSocketAction', 'Out')
|
||||
|
||||
add_node(SetMouseLockNode, category='Input')
|
Loading…
Reference in a new issue