Live patch: support for socket default values
This commit is contained in:
parent
96aa0ee890
commit
ee194a1806
|
@ -55,5 +55,15 @@ class LivePatch extends iron.Trait {
|
||||||
|
|
||||||
Reflect.setField(node, propName, value);
|
Reflect.setField(node, propName, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function patchUpdateNodeInputVal(treeName: String, nodeName: String, socketIndex: Int, value: Dynamic) {
|
||||||
|
var tree = LogicTree.nodeTrees[treeName];
|
||||||
|
if (tree == null) return;
|
||||||
|
|
||||||
|
var node = tree.nodes[nodeName];
|
||||||
|
if (node == null) return;
|
||||||
|
|
||||||
|
@:privateAccess node.inputs[socketIndex].set(value);
|
||||||
|
}
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,7 +178,7 @@ def send_event(event_id: str, opt_data: Any = None):
|
||||||
js = f'LivePatch.patchCreateNodeLink("{tree_name}", "{from_node_name}", "{to_node_name}", "{from_index}", "{to_index}");'
|
js = f'LivePatch.patchCreateNodeLink("{tree_name}", "{from_node_name}", "{to_node_name}", "{from_index}", "{to_index}");'
|
||||||
write_patch(js)
|
write_patch(js)
|
||||||
|
|
||||||
if event_id == 'ln_update_prop':
|
elif event_id == 'ln_update_prop':
|
||||||
node: ArmLogicTreeNode
|
node: ArmLogicTreeNode
|
||||||
prop_name: str
|
prop_name: str
|
||||||
node, prop_name = opt_data
|
node, prop_name = opt_data
|
||||||
|
@ -191,6 +191,30 @@ def send_event(event_id: str, opt_data: Any = None):
|
||||||
js = f'LivePatch.patchUpdateNodeProp("{tree_name}", "{node_name}", "{prop_name}", {value});'
|
js = f'LivePatch.patchUpdateNodeProp("{tree_name}", "{node_name}", "{prop_name}", {value});'
|
||||||
write_patch(js)
|
write_patch(js)
|
||||||
|
|
||||||
|
elif event_id == 'ln_socket_val':
|
||||||
|
node: ArmLogicTreeNode
|
||||||
|
socket: bpy.types.NodeSocket
|
||||||
|
node, socket = opt_data
|
||||||
|
|
||||||
|
socket_index = arm.node_utils.get_socket_index(node.inputs, socket)
|
||||||
|
|
||||||
|
if socket_index != -1:
|
||||||
|
tree_name = arm.node_utils.get_export_tree_name(node.get_tree())
|
||||||
|
node_name = arm.node_utils.get_export_node_name(node)[1:]
|
||||||
|
|
||||||
|
value = arm.node_utils.haxe_format_socket_val(socket.get_default_value())
|
||||||
|
inp_type = socket.arm_socket_type
|
||||||
|
|
||||||
|
if inp_type in ('VECTOR', 'RGB'):
|
||||||
|
value = '{' + f'"x": {value[0]}, "y": {value[1]}, "z": {value[2]}' + '}'
|
||||||
|
elif inp_type == 'RGBA':
|
||||||
|
value = '{' + f'"x": {value[0]}, "y": {value[1]}, "z": {value[2]}, "w": {value[3]}' + '}'
|
||||||
|
elif inp_type == 'BOOLEAN':
|
||||||
|
value = str(value).lower()
|
||||||
|
|
||||||
|
js = f'LivePatch.patchUpdateNodeInputVal("{tree_name}", "{node_name}", {socket_index}, {value});'
|
||||||
|
write_patch(js)
|
||||||
|
|
||||||
|
|
||||||
def on_operator(operator_id: str):
|
def on_operator(operator_id: str):
|
||||||
"""As long as bpy.msgbus doesn't listen to changes made by
|
"""As long as bpy.msgbus doesn't listen to changes made by
|
||||||
|
|
|
@ -62,7 +62,7 @@ class ArmLogicTreeNode(bpy.types.Node):
|
||||||
arm.live_patch.send_event('ln_update_prop', (self, prop_name))
|
arm.live_patch.send_event('ln_update_prop', (self, prop_name))
|
||||||
|
|
||||||
def on_socket_val_update(self, context: bpy.types.Context, socket: bpy.types.NodeSocket):
|
def on_socket_val_update(self, context: bpy.types.Context, socket: bpy.types.NodeSocket):
|
||||||
pass
|
arm.live_patch.send_event('ln_socket_val', (self, socket))
|
||||||
|
|
||||||
def insert_link(self, link: bpy.types.NodeLink):
|
def insert_link(self, link: bpy.types.NodeLink):
|
||||||
"""Called on *both* nodes when a link between two nodes is created."""
|
"""Called on *both* nodes when a link between two nodes is created."""
|
||||||
|
|
Loading…
Reference in a new issue