diff --git a/Sources/armory/logicnode/CanvasGetVisibleNode.hx b/Sources/armory/logicnode/CanvasGetVisibleNode.hx new file mode 100644 index 00000000..711d8398 --- /dev/null +++ b/Sources/armory/logicnode/CanvasGetVisibleNode.hx @@ -0,0 +1,29 @@ +package armory.logicnode; + +import iron.Scene; +import armory.trait.internal.CanvasScript; + +class CanvasGetVisibleNode extends LogicNode { + + var canvas: CanvasScript; + + public function new(tree: LogicTree) { + super(tree); + } + +#if arm_ui + override function get(from: Int): Dynamic { // Null + var element: String = inputs[0].get(); + if (canvas == null) canvas = Scene.active.getTrait(CanvasScript); + if (canvas == null) canvas = Scene.active.camera.getTrait(CanvasScript); + if (canvas == null || !canvas.ready) return null; + + // This Try/Catch hacks around an issue where the handles are + // not created yet, even though canvas.ready is true. + try { + return canvas.getElement(element).visible; + } + catch (e: Dynamic) { return null; } + } +#end +} diff --git a/Sources/armory/logicnode/GetMouseLockNode.hx b/Sources/armory/logicnode/GetMouseLockNode.hx new file mode 100644 index 00000000..961a5829 --- /dev/null +++ b/Sources/armory/logicnode/GetMouseLockNode.hx @@ -0,0 +1,16 @@ +package armory.logicnode; + +import iron.system.Input; + +class GetMouseLockNode extends LogicNode { + + public function new(tree: LogicTree) { + super(tree); + } + + override function get(from: Int): Dynamic { + var mouse = iron.system.Input.getMouse(); + + return mouse.locked; + } +} diff --git a/Sources/armory/logicnode/GetMouseVisibleNode.hx b/Sources/armory/logicnode/GetMouseVisibleNode.hx new file mode 100644 index 00000000..07b08c97 --- /dev/null +++ b/Sources/armory/logicnode/GetMouseVisibleNode.hx @@ -0,0 +1,17 @@ +package armory.logicnode; + +import iron.system.Input; + +class GetMouseVisibleNode extends LogicNode { + + public function new(tree: LogicTree) { + super(tree); + } + + override function get(from: Int): Dynamic { + var mouse = iron.system.Input.getMouse(); + + if (mouse.hidden == false) return true; + return false; + } +} diff --git a/blender/arm/logicnode/action_set_visible.py b/blender/arm/logicnode/action_set_visible.py index 9c652e31..6ec8886e 100644 --- a/blender/arm/logicnode/action_set_visible.py +++ b/blender/arm/logicnode/action_set_visible.py @@ -12,7 +12,7 @@ class SetVisibleNode(Node, ArmLogicTreeNode): def init(self, context): self.inputs.new('ArmNodeSocketAction', 'In') self.inputs.new('ArmNodeSocketObject', 'Object') - self.inputs.new('NodeSocketBool', 'Bool') + self.inputs.new('NodeSocketBool', 'Visible') self.outputs.new('ArmNodeSocketAction', 'Out') add_node(SetVisibleNode, category='Action') diff --git a/blender/arm/logicnode/canvas_get_visible.py b/blender/arm/logicnode/canvas_get_visible.py new file mode 100644 index 00000000..222dd3a6 --- /dev/null +++ b/blender/arm/logicnode/canvas_get_visible.py @@ -0,0 +1,16 @@ +import bpy +from bpy.props import * +from bpy.types import Node, NodeSocket +from arm.logicnode.arm_nodes import * + +class CanvasGetVisibleNode(Node, ArmLogicTreeNode): + '''Canvas Get Visible node''' + bl_idname = 'LNCanvasGetVisibleNode' + bl_label = 'Canvas Get Visible' + bl_icon = 'NONE' + + def init(self, context): + self.inputs.new('NodeSocketString', 'Element') + self.outputs.new('NodeSocketBool', 'Visible') + +add_node(CanvasGetVisibleNode, category='Canvas') diff --git a/blender/arm/logicnode/value_get_mouse_lock.py b/blender/arm/logicnode/value_get_mouse_lock.py new file mode 100644 index 00000000..5c5bb0bd --- /dev/null +++ b/blender/arm/logicnode/value_get_mouse_lock.py @@ -0,0 +1,15 @@ +import bpy +from bpy.props import * +from bpy.types import Node, NodeSocket +from arm.logicnode.arm_nodes import * + +class GetMouseLockNode(Node, ArmLogicTreeNode): + '''Get Mouse Lock node''' + bl_idname = 'LNGetMouseLockNode' + bl_label = 'Get Mouse Lock' + bl_icon = 'NONE' + + def init(self, context): + self.outputs.new('NodeSocketBool', 'Lock') + +add_node(GetMouseLockNode, category='Value') diff --git a/blender/arm/logicnode/value_get_mouse_visible.py b/blender/arm/logicnode/value_get_mouse_visible.py new file mode 100644 index 00000000..3762b262 --- /dev/null +++ b/blender/arm/logicnode/value_get_mouse_visible.py @@ -0,0 +1,15 @@ +import bpy +from bpy.props import * +from bpy.types import Node, NodeSocket +from arm.logicnode.arm_nodes import * + +class GetMouseVisibleNode(Node, ArmLogicTreeNode): + '''Get Mouse Visible node''' + bl_idname = 'LNGetMouseVisibleNode' + bl_label = 'Get Mouse Visible' + bl_icon = 'NONE' + + def init(self, context): + self.outputs.new('NodeSocketBool', 'Visible') + +add_node(GetMouseVisibleNode, category='Value')