Merge pull request #1174 from katharostech/feature_slider-nodes
Add Nodes for Getting and Setting Canvas Sliders
This commit is contained in:
commit
048bbaad6e
28
Sources/armory/logicnode/CanvasGetSliderNode.hx
Normal file
28
Sources/armory/logicnode/CanvasGetSliderNode.hx
Normal file
|
@ -0,0 +1,28 @@
|
|||
package armory.logicnode;
|
||||
|
||||
import iron.Scene;
|
||||
import armory.trait.internal.CanvasScript;
|
||||
|
||||
class CanvasGetSliderNode extends LogicNode {
|
||||
|
||||
var canvas:CanvasScript;
|
||||
|
||||
public function new(tree:LogicTree) {
|
||||
super(tree);
|
||||
}
|
||||
|
||||
#if arm_ui
|
||||
override function get(from:Int) {
|
||||
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.getHandle(inputs[0].get()).value;
|
||||
} catch (e:Dynamic) {return null;}
|
||||
}
|
||||
#end
|
||||
}
|
41
Sources/armory/logicnode/CanvasSetSliderNode.hx
Normal file
41
Sources/armory/logicnode/CanvasSetSliderNode.hx
Normal file
|
@ -0,0 +1,41 @@
|
|||
package armory.logicnode;
|
||||
|
||||
import iron.Scene;
|
||||
import armory.trait.internal.CanvasScript;
|
||||
|
||||
class CanvasSetSliderNode extends LogicNode {
|
||||
|
||||
var canvas:CanvasScript;
|
||||
var element:String;
|
||||
var value:Float;
|
||||
|
||||
public function new(tree:LogicTree) {
|
||||
super(tree);
|
||||
}
|
||||
|
||||
#if arm_ui
|
||||
function update() {
|
||||
if (!canvas.ready) return;
|
||||
|
||||
// This Try/Catch hacks around an issue where the handles are
|
||||
// not created yet, even though canvas.ready is true.
|
||||
try {
|
||||
canvas.getHandle(element).value = value;
|
||||
tree.removeUpdate(update);
|
||||
} catch (e:Dynamic) {}
|
||||
|
||||
runOutput(0);
|
||||
}
|
||||
|
||||
override function run(from:Int) {
|
||||
element = inputs[1].get();
|
||||
value = inputs[2].get();
|
||||
canvas = Scene.active.getTrait(CanvasScript);
|
||||
if (canvas == null) canvas = Scene.active.camera.getTrait(CanvasScript);
|
||||
|
||||
// Ensure canvas is ready
|
||||
tree.notifyOnUpdate(update);
|
||||
update();
|
||||
}
|
||||
#end
|
||||
}
|
16
blender/arm/logicnode/canvas_get_slider.py
Normal file
16
blender/arm/logicnode/canvas_get_slider.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
import bpy
|
||||
from bpy.props import *
|
||||
from bpy.types import Node, NodeSocket
|
||||
from arm.logicnode.arm_nodes import *
|
||||
|
||||
class CanvasGetSliderNode(Node, ArmLogicTreeNode):
|
||||
'''Set canvas text'''
|
||||
bl_idname = 'LNCanvasGetSliderNode'
|
||||
bl_label = 'Canvas Get Slider'
|
||||
bl_icon = 'QUESTION'
|
||||
|
||||
def init(self, context):
|
||||
self.inputs.new('NodeSocketString', 'Element')
|
||||
self.outputs.new('NodeSocketFloat', 'Value')
|
||||
|
||||
add_node(CanvasGetSliderNode, category='Canvas')
|
18
blender/arm/logicnode/canvas_set_slider.py
Normal file
18
blender/arm/logicnode/canvas_set_slider.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
import bpy
|
||||
from bpy.props import *
|
||||
from bpy.types import Node, NodeSocket
|
||||
from arm.logicnode.arm_nodes import *
|
||||
|
||||
class CanvasSetSliderNode(Node, ArmLogicTreeNode):
|
||||
'''Set canvas text'''
|
||||
bl_idname = 'LNCanvasSetSliderNode'
|
||||
bl_label = 'Canvas Set Slider'
|
||||
bl_icon = 'QUESTION'
|
||||
|
||||
def init(self, context):
|
||||
self.inputs.new('ArmNodeSocketAction', 'In')
|
||||
self.inputs.new('NodeSocketString', 'Element')
|
||||
self.inputs.new('NodeSocketFloat', 'Value')
|
||||
self.outputs.new('ArmNodeSocketAction', 'Out')
|
||||
|
||||
add_node(CanvasSetSliderNode, category='Canvas')
|
Loading…
Reference in a new issue