Mouse lock support

This commit is contained in:
Lubos Lenco 2017-12-14 18:12:01 +01:00
parent f305059e4c
commit 11a8389feb
4 changed files with 38 additions and 11 deletions

View 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();
}
}

View file

@ -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();

View file

@ -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")) {

View 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')