From 07ffe06c1daf37c06148d15493bbd25d183bf316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 18 May 2021 21:24:45 +0200 Subject: [PATCH 01/45] Live patch: move to dedicated module and use msgbus --- blender/arm/handlers.py | 31 ++------- blender/arm/live_patch.py | 134 ++++++++++++++++++++++++++++++++++++++ blender/arm/make.py | 36 +--------- 3 files changed, 143 insertions(+), 58 deletions(-) create mode 100644 blender/arm/live_patch.py diff --git a/blender/arm/handlers.py b/blender/arm/handlers.py index aa8460e8..364ae17e 100644 --- a/blender/arm/handlers.py +++ b/blender/arm/handlers.py @@ -6,13 +6,14 @@ import bpy from bpy.app.handlers import persistent import arm.api +import arm.live_patch as live_patch import arm.logicnode.arm_nodes as arm_nodes import arm.nodes_logic -import arm.make as make import arm.make_state as state import arm.props as props import arm.utils + @persistent def on_depsgraph_update_post(self): if state.proc_build != None: @@ -40,12 +41,10 @@ def on_depsgraph_update_post(self): # Send last operator to Krom wrd = bpy.data.worlds['Arm'] - if state.proc_play != None and \ - state.target == 'krom' and \ - wrd.arm_live_patch: + if state.proc_play is not None and state.target == 'krom' and wrd.arm_live_patch: ops = bpy.context.window_manager.operators - if len(ops) > 0 and ops[-1] != None: - send_operator(ops[-1]) + if len(ops) > 0 and ops[-1] is not None: + live_patch.on_operator(ops[-1].bl_idname) # Hacky solution to update armory props after operator executions last_operator = bpy.context.active_operator @@ -71,24 +70,6 @@ def on_operator_post(operator_id: str) -> None: target_obj.arm_rb_collision_filter_mask = source_obj.arm_rb_collision_filter_mask -def send_operator(op): - if hasattr(bpy.context, 'object') and bpy.context.object != None: - obj = bpy.context.object.name - if op.name == 'Move': - vec = bpy.context.object.location - js = 'var o = iron.Scene.active.getChild("' + obj + '"); o.transform.loc.set(' + str(vec[0]) + ', ' + str(vec[1]) + ', ' + str(vec[2]) + '); o.transform.dirty = true;' - make.write_patch(js) - elif op.name == 'Resize': - vec = bpy.context.object.scale - js = 'var o = iron.Scene.active.getChild("' + obj + '"); o.transform.scale.set(' + str(vec[0]) + ', ' + str(vec[1]) + ', ' + str(vec[2]) + '); o.transform.dirty = true;' - make.write_patch(js) - elif op.name == 'Rotate': - vec = bpy.context.object.rotation_euler.to_quaternion() - js = 'var o = iron.Scene.active.getChild("' + obj + '"); o.transform.rot.set(' + str(vec[1]) + ', ' + str(vec[2]) + ', ' + str(vec[3]) + ' ,' + str(vec[0]) + '); o.transform.dirty = true;' - make.write_patch(js) - else: # Rebuild - make.patch() - def always(): # Force ui redraw if state.redraw_ui and context_screen != None: @@ -102,9 +83,11 @@ def always(): space.node_tree.arm_cached = False return 0.5 + appended_py_paths = [] context_screen = None + @persistent def on_load_post(context): global appended_py_paths diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py new file mode 100644 index 00000000..1273b28e --- /dev/null +++ b/blender/arm/live_patch.py @@ -0,0 +1,134 @@ +import os +import shutil +from typing import Type + +import bpy + +import arm.assets as assets +from arm.exporter import ArmoryExporter +import arm.log as log +import arm.make as make +import arm.make_state as state +import arm.utils + +# Current patch id +patch_id = 0 + +# Any object can act as a message bus owner +msgbus_owner = object() + + +def start(): + log.debug("Live patch session started") + + listen(bpy.types.Object, "location", "obj_location") + listen(bpy.types.Object, "rotation_euler", "obj_rotation") + listen(bpy.types.Object, "scale", "obj_scale") + + +def patch_export(): + """Re-export the current scene and update the game accordingly.""" + if state.proc_build is not None: + return + + assets.invalidate_enabled = False + fp = arm.utils.get_fp() + + with arm.utils.WorkingDir(fp): + asset_path = arm.utils.get_fp_build() + '/compiled/Assets/' + arm.utils.safestr(bpy.context.scene.name) + '.arm' + ArmoryExporter.export_scene(bpy.context, asset_path, scene=bpy.context.scene) + + if not os.path.isdir(arm.utils.build_dir() + '/compiled/Shaders/std'): + raw_shaders_path = arm.utils.get_sdk_path() + '/armory/Shaders/' + shutil.copytree(raw_shaders_path + 'std', arm.utils.build_dir() + '/compiled/Shaders/std') + node_path = arm.utils.get_node_path() + khamake_path = arm.utils.get_khamake_path() + + cmd = [ + node_path, khamake_path, 'krom', + '--shaderversion', '330', + '--parallelAssetConversion', '4', + '--to', arm.utils.build_dir() + '/debug', + '--nohaxe', + '--noproject' + ] + + assets.invalidate_enabled = True + state.proc_build = make.run_proc(cmd, patch_done) + + +def patch_done(): + """Signal Iron to reload the running scene after a re-export.""" + js = 'iron.Scene.patch();' + write_patch(js) + state.proc_build = None + bpy.msgbus.clear_by_owner(msgbus_owner) + + +def write_patch(js: str): + """Write the given javascript code to 'krom.patch'.""" + global patch_id + with open(arm.utils.get_fp_build() + '/debug/krom/krom.patch', 'w') as f: + patch_id += 1 + f.write(str(patch_id) + '\n') + f.write(js) + + +def listen(rna_type: Type[bpy.types.Struct], prop: str, event_id: str): + """Subscribe to '.'. The event_id can be choosen + freely but must match with the id used in send_event(). + """ + bpy.msgbus.subscribe_rna( + key=(rna_type, prop), + owner=msgbus_owner, + args=(event_id, ), + notify=send_event + # options={"PERSISTENT"} + ) + + +def send_event(event_id: str): + """Send the result of the given event to Krom.""" + if hasattr(bpy.context, 'object') and bpy.context.object is not None: + obj = bpy.context.object.name + + if bpy.context.object.mode == "OBJECT": + if event_id == "obj_location": + vec = bpy.context.object.location + js = f'var o = iron.Scene.active.getChild("{obj}"); o.transform.loc.set({vec[0]}, {vec[1]}, {vec[2]}); o.transform.dirty = true;' + write_patch(js) + + elif event_id == 'obj_scale': + vec = bpy.context.object.scale + js = f'var o = iron.Scene.active.getChild("{obj}"); o.transform.scale.set({vec[0]}, {vec[1]}, {vec[2]}); o.transform.dirty = true;' + write_patch(js) + + elif event_id == 'obj_rotation': + vec = bpy.context.object.rotation_euler.to_quaternion() + js = f'var o = iron.Scene.active.getChild("{obj}"); o.transform.rot.set({vec[1]}, {vec[2]}, {vec[3]}, {vec[0]}); o.transform.dirty = true;' + write_patch(js) + + else: + patch_export() + + +def on_operator(operator_id: str): + """As long as bpy.msgbus doesn't listen to changes made by + operators (*), additionally notify the callback manually. + + (*) https://developer.blender.org/T72109 + """ + # Don't re-export the scene for the following operators + if operator_id in ("VIEW3D_OT_select", "OUTLINER_OT_item_activate", "OBJECT_OT_editmode_toggle"): + return + + if operator_id == "TRANSFORM_OT_translate": + send_event("obj_location") + elif operator_id == "TRANSFORM_OT_rotate": + send_event("obj_rotation") + elif operator_id == "TRANSFORM_OT_resize": + send_event("obj_scale") + + # Rebuild + else: + patch_export() diff --git a/blender/arm/make.py b/blender/arm/make.py index 001eb2d4..cb40c320 100755 --- a/blender/arm/make.py +++ b/blender/arm/make.py @@ -17,6 +17,7 @@ import arm.assets as assets from arm.exporter import ArmoryExporter import arm.lib.make_datas import arm.lib.server +import arm.live_patch as live_patch import arm.log as log import arm.make_logic as make_logic import arm.make_renderpath as make_renderpath @@ -445,40 +446,6 @@ def build_done(): else: log.error('Build failed, check console') -def patch(): - if state.proc_build != None: - return - assets.invalidate_enabled = False - fp = arm.utils.get_fp() - os.chdir(fp) - asset_path = arm.utils.get_fp_build() + '/compiled/Assets/' + arm.utils.safestr(bpy.context.scene.name) + '.arm' - ArmoryExporter.export_scene(bpy.context, asset_path, scene=bpy.context.scene) - if not os.path.isdir(arm.utils.build_dir() + '/compiled/Shaders/std'): - raw_shaders_path = arm.utils.get_sdk_path() + '/armory/Shaders/' - shutil.copytree(raw_shaders_path + 'std', arm.utils.build_dir() + '/compiled/Shaders/std') - node_path = arm.utils.get_node_path() - khamake_path = arm.utils.get_khamake_path() - - cmd = [node_path, khamake_path, 'krom'] - cmd.extend(('--shaderversion', '330', '--parallelAssetConversion', '4', - '--to', arm.utils.build_dir() + '/debug', '--nohaxe', '--noproject')) - - assets.invalidate_enabled = True - state.proc_build = run_proc(cmd, patch_done) - -def patch_done(): - js = 'iron.Scene.patch();' - write_patch(js) - state.proc_build = None - -patch_id = 0 - -def write_patch(js): - global patch_id - with open(arm.utils.get_fp_build() + '/debug/krom/krom.patch', 'w') as f: - patch_id += 1 - f.write(str(patch_id) + '\n') - f.write(js) def runtime_to_target(): wrd = bpy.data.worlds['Arm'] @@ -545,6 +512,7 @@ def build_success(): webbrowser.open(html5_app_path) elif wrd.arm_runtime == 'Krom': if wrd.arm_live_patch: + live_patch.start() open(arm.utils.get_fp_build() + '/debug/krom/krom.patch', 'w').close() krom_location, krom_path = arm.utils.krom_paths() os.chdir(krom_location) From 68825516c9acb3ee6f14d7080e894f14bea9e3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 18 May 2021 21:31:02 +0200 Subject: [PATCH 02/45] Live patch: more robust shader paths --- blender/arm/live_patch.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 1273b28e..68000255 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -38,12 +38,13 @@ def patch_export(): asset_path = arm.utils.get_fp_build() + '/compiled/Assets/' + arm.utils.safestr(bpy.context.scene.name) + '.arm' ArmoryExporter.export_scene(bpy.context, asset_path, scene=bpy.context.scene) - if not os.path.isdir(arm.utils.build_dir() + '/compiled/Shaders/std'): - raw_shaders_path = arm.utils.get_sdk_path() + '/armory/Shaders/' - shutil.copytree(raw_shaders_path + 'std', arm.utils.build_dir() + '/compiled/Shaders/std') + dir_std_shaders_dst = os.path.join(arm.utils.build_dir(), 'compiled', 'Shaders', 'std') + if not os.path.isdir(dir_std_shaders_dst): + dir_std_shaders_src = os.path.join(arm.utils.get_sdk_path(), 'armory', 'Shaders', 'std') + shutil.copytree(dir_std_shaders_src, dir_std_shaders_dst) + node_path = arm.utils.get_node_path() khamake_path = arm.utils.get_khamake_path() - cmd = [ node_path, khamake_path, 'krom', '--shaderversion', '330', From 3d469105305f1aeeb9ac3c20c01f2fc78f301213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 18 May 2021 21:34:46 +0200 Subject: [PATCH 03/45] Live patch: don't re-export on trackball rotation (double 'r' key) --- blender/arm/live_patch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 68000255..f5f4ff1c 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -125,7 +125,7 @@ def on_operator(operator_id: str): if operator_id == "TRANSFORM_OT_translate": send_event("obj_location") - elif operator_id == "TRANSFORM_OT_rotate": + elif operator_id in ("TRANSFORM_OT_rotate", "TRANSFORM_OT_trackball"): send_event("obj_rotation") elif operator_id == "TRANSFORM_OT_resize": send_event("obj_scale") From 7b2961459c73e3b215acd4244526c6f43073d299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Wed, 19 May 2021 21:17:38 +0200 Subject: [PATCH 04/45] Live patch support for light strength and color --- blender/arm/live_patch.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index f5f4ff1c..73cb2ae9 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -25,6 +25,12 @@ def start(): listen(bpy.types.Object, "rotation_euler", "obj_rotation") listen(bpy.types.Object, "scale", "obj_scale") + # 'energy' is defined in sub classes only, also workaround for + # https://developer.blender.org/T88408 + for light_type in (bpy.types.AreaLight, bpy.types.PointLight, bpy.types.SpotLight, bpy.types.SunLight): + listen(light_type, "color", "light_color") + listen(light_type, "energy", "light_energy") + def patch_export(): """Re-export the current scene and update the game accordingly.""" @@ -109,6 +115,26 @@ def send_event(event_id: str): js = f'var o = iron.Scene.active.getChild("{obj}"); o.transform.rot.set({vec[1]}, {vec[2]}, {vec[3]}, {vec[0]}); o.transform.dirty = true;' write_patch(js) + elif event_id == 'light_color': + light: bpy.types.Light = bpy.context.object.data + vec = light.color + js = f'var lRaw = iron.Scene.active.getLight("{light.name}").data.raw; lRaw.color[0]={vec[0]}; lRaw.color[1]={vec[1]}; lRaw.color[2]={vec[2]};' + write_patch(js) + + elif event_id == 'light_energy': + light: bpy.types.Light = bpy.context.object.data + + # Align strength to Armory, see exporter.export_light() + # TODO: Use exporter.export_light() and simply reload all raw light data in Iron? + strength_fac = 1.0 + if light.type == 'SUN': + strength_fac = 0.325 + elif light.type in ('POINT', 'SPOT', 'AREA'): + strength_fac = 0.01 + + js = f'var lRaw = iron.Scene.active.getLight("{light.name}").data.raw; lRaw.strength={light.energy * strength_fac};' + write_patch(js) + else: patch_export() From 9fbc3d6cd4678032e5c87cd2fd4824fb572c4061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Wed, 19 May 2021 21:17:57 +0200 Subject: [PATCH 05/45] Small cleanup --- blender/arm/live_patch.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 73cb2ae9..83546001 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -38,9 +38,8 @@ def patch_export(): return assets.invalidate_enabled = False - fp = arm.utils.get_fp() - with arm.utils.WorkingDir(fp): + with arm.utils.WorkingDir(arm.utils.get_fp()): asset_path = arm.utils.get_fp_build() + '/compiled/Assets/' + arm.utils.safestr(bpy.context.scene.name) + '.arm' ArmoryExporter.export_scene(bpy.context, asset_path, scene=bpy.context.scene) @@ -81,7 +80,7 @@ def write_patch(js: str): f.write(js) -def listen(rna_type: Type[bpy.types.Struct], prop: str, event_id: str): +def listen(rna_type: Type[bpy.types.bpy_struct], prop: str, event_id: str): """Subscribe to '.'. The event_id can be choosen freely but must match with the id used in send_event(). """ From 088bc0f666738a4ddf89e1e69c7c00bd05f4f1c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Thu, 20 May 2021 20:38:43 +0200 Subject: [PATCH 06/45] Exporter: remove no longer used Blender version checks --- blender/arm/exporter.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/blender/arm/exporter.py b/blender/arm/exporter.py index ed408ae7..c177ebdc 100755 --- a/blender/arm/exporter.py +++ b/blender/arm/exporter.py @@ -1531,24 +1531,18 @@ Make sure the mesh only has tris/quads.""") # Less bias for bigger maps out_light['shadows_bias'] *= 1 / (out_light['shadowmap_size'] / 1024) elif objtype == 'POINT': - out_light['strength'] *= 2.6 - if bpy.app.version >= (2, 80, 72): - out_light['strength'] *= 0.01 + out_light['strength'] *= 0.01 out_light['fov'] = 1.5708 # pi/2 out_light['shadowmap_cube'] = True if light_ref.shadow_soft_size > 0.1: out_light['light_size'] = light_ref.shadow_soft_size * 10 elif objtype == 'SPOT': - out_light['strength'] *= 2.6 - if bpy.app.version >= (2, 80, 72): - out_light['strength'] *= 0.01 + out_light['strength'] *= 0.01 out_light['spot_size'] = math.cos(light_ref.spot_size / 2) # Cycles defaults to 0.15 out_light['spot_blend'] = light_ref.spot_blend / 10 elif objtype == 'AREA': - out_light['strength'] *= 80.0 / (light_ref.size * light_ref.size_y) - if bpy.app.version >= (2, 80, 72): - out_light['strength'] *= 0.01 + out_light['strength'] *= 0.01 out_light['size'] = light_ref.size out_light['size_y'] = light_ref.size_y From 441f42383e3c6296ac24c454ba167c54432f846a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 27 Jun 2021 22:35:37 +0200 Subject: [PATCH 07/45] Correctly stop live patching after player terminates --- blender/arm/live_patch.py | 8 +++++++- blender/arm/make.py | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 83546001..e0aa2e58 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -19,6 +19,7 @@ msgbus_owner = object() def start(): + """Start the live patch session.""" log.debug("Live patch session started") listen(bpy.types.Object, "location", "obj_location") @@ -32,6 +33,12 @@ def start(): listen(light_type, "energy", "light_energy") +def stop(): + """Stop the live patch session.""" + log.debug("Live patch session stopped") + bpy.msgbus.clear_by_owner(msgbus_owner) + + def patch_export(): """Re-export the current scene and update the game accordingly.""" if state.proc_build is not None: @@ -68,7 +75,6 @@ def patch_done(): js = 'iron.Scene.patch();' write_patch(js) state.proc_build = None - bpy.msgbus.clear_by_owner(msgbus_owner) def write_patch(js: str): diff --git a/blender/arm/make.py b/blender/arm/make.py index cb40c320..8dc9afd2 100755 --- a/blender/arm/make.py +++ b/blender/arm/make.py @@ -398,9 +398,11 @@ def build(target, is_play=False, is_publish=False, is_export=False): shutil.copy(fn, arm.utils.build_dir() + dest + os.path.basename(fn)) def play_done(): + """Called if the player was stopped/terminated.""" state.proc_play = None state.redraw_ui = True log.clear() + live_patch.stop() def assets_done(): if state.proc_build == None: From 202138304adf0d9c12ed7aaaef278572bbe25721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Mon, 28 Jun 2021 12:07:57 +0200 Subject: [PATCH 08/45] Live patch: add support for creating connections between nodes --- Sources/armory/logicnode/LogicNode.hx | 13 +++++--- Sources/armory/logicnode/LogicTree.hx | 13 ++++++++ Sources/armory/trait/internal/LivePatch.hx | 24 +++++++++++-- blender/arm/live_patch.py | 37 ++++++++++++++++---- blender/arm/logicnode/arm_nodes.py | 10 +++++- blender/arm/make_logic.py | 31 +++++++++++------ blender/arm/node_utils.py | 39 +++++++++++++++++++++- 7 files changed, 140 insertions(+), 27 deletions(-) diff --git a/Sources/armory/logicnode/LogicNode.hx b/Sources/armory/logicnode/LogicNode.hx index 9e5e367c..9255a559 100644 --- a/Sources/armory/logicnode/LogicNode.hx +++ b/Sources/armory/logicnode/LogicNode.hx @@ -6,12 +6,15 @@ class LogicNode { var inputs: Array = []; var outputs: Array> = []; - #if arm_debug + #if (arm_debug || arm_patch) public var name = ""; - public function watch(b: Bool) { // Watch in debug console - var nodes = armory.trait.internal.DebugConsole.watchNodes; - b ? nodes.push(this) : nodes.remove(this); - } + + #if (arm_debug) + public function watch(b: Bool) { // Watch in debug console + var nodes = armory.trait.internal.DebugConsole.watchNodes; + b ? nodes.push(this) : nodes.remove(this); + } + #end #end public function new(tree: LogicTree) { diff --git a/Sources/armory/logicnode/LogicTree.hx b/Sources/armory/logicnode/LogicTree.hx index ce2b26e4..22daf13a 100644 --- a/Sources/armory/logicnode/LogicTree.hx +++ b/Sources/armory/logicnode/LogicTree.hx @@ -2,10 +2,23 @@ package armory.logicnode; class LogicTree extends iron.Trait { + #if arm_patch + public static var nodeTrees = new Map(); + + /** + [node name => logic node] for later node replacement for live patching. + **/ + public var nodes: Map; + #end + public var loopBreak = false; // Trigger break from loop nodes public function new() { super(); + + #if arm_patch + nodes = new Map(); + #end } public function add() {} diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 220d42ba..49c4cd26 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -1,8 +1,16 @@ package armory.trait.internal; +import armory.logicnode.LogicNode.LogicNodeInput; +import armory.logicnode.LogicTree; + + +#if arm_patch @:expose("LivePatch") #end +@:access(armory.logicnode.LogicNode) class LivePatch extends iron.Trait { -#if arm_patch +#if !arm_patch + public function new() { super(); } +#else static var patchId = 0; @@ -23,9 +31,19 @@ class LivePatch extends iron.Trait { }); } -#else + public static function patchCreateNodeLink(treeName: String, fromNodeName: String, toNodeName: String, fromIndex: Int, toIndex: Int) { + var tree = LogicTree.nodeTrees[treeName]; + if (tree == null) return; - public function new() { super(); } + var fromNode = tree.nodes[fromNodeName]; + var toNode = tree.nodes[toNodeName]; + if (fromNode == null || toNode == null) return; + // Don't add a connection twice + if (!fromNode.outputs[fromIndex].contains(toNode)) { + fromNode.outputs[fromIndex].push(toNode); + } + toNode.inputs[toIndex] = new LogicNodeInput(fromNode, fromIndex); + } #end } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index e0aa2e58..1403d58c 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -1,12 +1,14 @@ import os import shutil -from typing import Type +from typing import Any, Type import bpy -import arm.assets as assets +import arm.assets +import arm.node_utils from arm.exporter import ArmoryExporter import arm.log as log +from arm.logicnode.arm_nodes import ArmLogicTreeNode import arm.make as make import arm.make_state as state import arm.utils @@ -44,7 +46,7 @@ def patch_export(): if state.proc_build is not None: return - assets.invalidate_enabled = False + arm.assets.invalidate_enabled = False with arm.utils.WorkingDir(arm.utils.get_fp()): asset_path = arm.utils.get_fp_build() + '/compiled/Assets/' + arm.utils.safestr(bpy.context.scene.name) + '.arm' @@ -66,7 +68,7 @@ def patch_export(): '--noproject' ] - assets.invalidate_enabled = True + arm.assets.invalidate_enabled = True state.proc_build = make.run_proc(cmd, patch_done) @@ -99,7 +101,7 @@ def listen(rna_type: Type[bpy.types.bpy_struct], prop: str, event_id: str): ) -def send_event(event_id: str): +def send_event(event_id: str, opt_data: Any = None): """Send the result of the given event to Krom.""" if hasattr(bpy.context, 'object') and bpy.context.object is not None: obj = bpy.context.object.name @@ -143,6 +145,29 @@ def send_event(event_id: str): else: patch_export() + if event_id == 'ln_insert_link': + node: ArmLogicTreeNode + link: bpy.types.NodeLink + node, link = opt_data + + # This event is called twice for a connection but we only need + # send it once + if node == link.from_node: + node_tree = node.get_tree() + tree_name = arm.node_utils.get_export_tree_name(node_tree) + + # [1:] is used here because make_logic already uses that for + # node names if arm_debug is used + from_node_name = arm.node_utils.get_export_node_name(node)[1:] + to_node_name = arm.node_utils.get_export_node_name(link.to_node)[1:] + + from_index = arm.node_utils.get_socket_index(node.outputs, link.from_socket) + to_index = arm.node_utils.get_socket_index(link.to_node.inputs, link.to_socket) + + js = f'LivePatch.patchCreateNodeLink("{tree_name}", "{from_node_name}", "{to_node_name}", "{from_index}", "{to_index}");' + write_patch(js) + + def on_operator(operator_id: str): """As long as bpy.msgbus doesn't listen to changes made by @@ -151,7 +176,7 @@ def on_operator(operator_id: str): (*) https://developer.blender.org/T72109 """ # Don't re-export the scene for the following operators - if operator_id in ("VIEW3D_OT_select", "OUTLINER_OT_item_activate", "OBJECT_OT_editmode_toggle"): + if operator_id in ("VIEW3D_OT_select", "OUTLINER_OT_item_activate", "OBJECT_OT_editmode_toggle", "NODE_OT_select", "NODE_OT_translate_attach_remove_on_cancel"): return if operator_id == "TRANSFORM_OT_translate": diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index e99b8bd2..1a0dad15 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -7,7 +7,8 @@ import bpy.types from bpy.props import * from nodeitems_utils import NodeItem -# Pass NodeReplacment forward to individual node modules that import arm_nodes +import arm # we cannot import arm.livepatch here or we have a circular import +# Pass NodeReplacement forward to individual node modules that import arm_nodes from arm.logicnode.replacement import NodeReplacement import arm.node_utils @@ -48,6 +49,13 @@ class ArmLogicTreeNode(bpy.types.Node): def on_unregister(cls): pass + def get_tree(self): + return self.id_data + + def insert_link(self, link: bpy.types.NodeLink): + """Called on *both* nodes when a link between two nodes is created.""" + arm.live_patch.send_event('ln_insert_link', (self, link)) + def get_replacement_node(self, node_tree: bpy.types.NodeTree): # needs to be overridden by individual node classes with arm_version>1 """(only called if the node's version is inferior to the node class's version) diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index 6ee7aac8..289bb6b0 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -5,6 +5,7 @@ import bpy from arm.exporter import ArmoryExporter import arm.log +import arm.node_utils import arm.utils parsed_nodes = [] @@ -13,14 +14,16 @@ function_nodes = dict() function_node_outputs = dict() group_name = '' -def get_logic_trees(): + +def get_logic_trees() -> list['arm.nodes_logic.ArmLogicTree']: ar = [] for node_group in bpy.data.node_groups: if node_group.bl_idname == 'ArmLogicTreeType': - node_group.use_fake_user = True # Keep fake references for now + node_group.use_fake_user = True # Keep fake references for now ar.append(node_group) return ar + # Generating node sources def build(): os.chdir(arm.utils.get_fp()) @@ -34,7 +37,7 @@ def build(): for tree in trees: build_node_tree(tree) -def build_node_tree(node_group): +def build_node_tree(node_group: 'arm.nodes_logic.ArmLogicTree'): global parsed_nodes global parsed_ids global function_nodes @@ -48,12 +51,8 @@ def build_node_tree(node_group): pack_path = arm.utils.safestr(bpy.data.worlds['Arm'].arm_project_package) path = 'Sources/' + pack_path.replace('.', '/') + '/node/' - group_name = arm.utils.safesrc(node_group.name[0].upper() + node_group.name[1:]) - - if group_name != node_group.name: - arm.log.warn('Logic node tree and generated trait names differ! Node' - f' tree: "{node_group.name}", trait: "{group_name}"') + group_name = arm.node_utils.get_export_tree_name(node_group, do_warn=True) file = path + group_name + '.hx' # Import referenced node group @@ -65,6 +64,8 @@ def build_node_tree(node_group): if node_group.arm_cached and os.path.isfile(file): return + wrd = bpy.data.worlds['Arm'] + with open(file, 'w', encoding="utf-8") as f: f.write('package ' + pack_path + '.node;\n\n') f.write('@:keep class ' + group_name + ' extends armory.logicnode.LogicTree {\n\n') @@ -72,10 +73,12 @@ def build_node_tree(node_group): f.write('\tvar functionOutputNodes:Map;\n\n') f.write('\tpublic function new() {\n') f.write('\t\tsuper();\n') - if bpy.data.worlds['Arm'].arm_debug_console: + if wrd.arm_debug_console: f.write('\t\tname = "' + group_name + '";\n') f.write('\t\tthis.functionNodes = new Map();\n') f.write('\t\tthis.functionOutputNodes = new Map();\n') + if wrd.arm_live_patch: + f.write(f'\t\tarmory.logicnode.LogicTree.nodeTrees["{group_name}"] = this;\n') f.write('\t\tnotifyOnAdd(add);\n') f.write('\t}\n\n') f.write('\toverride public function add() {\n') @@ -116,7 +119,7 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: return None # Get node name - name = '_' + arm.utils.safesrc(node.name) + name = arm.node_utils.get_export_node_name(node) # Link nodes using IDs if node.arm_logic_id != '': @@ -143,11 +146,17 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: # Index function output name by corresponding function name function_node_outputs[node.function_name] = name + wrd = bpy.data.worlds['Arm'] + # Watch in debug console - if node.arm_watch and bpy.data.worlds['Arm'].arm_debug_console: + if node.arm_watch and wrd.arm_debug_console: f.write('\t\t' + name + '.name = "' + name[1:] + '";\n') f.write('\t\t' + name + '.watch(true);\n') + elif wrd.arm_live_patch: + f.write('\t\t' + name + '.name = "' + name[1:] + '";\n') + f.write(f'\t\tthis.nodes["{name[1:]}"] = {name};\n') + # Properties for i in range(0, 10): prop_name = 'property' + str(i) + '_get' diff --git a/blender/arm/node_utils.py b/blender/arm/node_utils.py index e8808f49..5cee6346 100755 --- a/blender/arm/node_utils.py +++ b/blender/arm/node_utils.py @@ -1,8 +1,12 @@ -from typing import Type +from typing import Type, Union import bpy +from bpy.types import NodeSocket, NodeInputs, NodeOutputs from nodeitems_utils import NodeItem +import arm.log +import arm.utils + def find_node_by_link(node_group, to_node, inp): for link in node_group.links: @@ -46,6 +50,39 @@ def get_output_node(node_group, from_node, output_index): return link.to_node +def get_socket_index(sockets: Union[NodeInputs, NodeOutputs], socket: NodeSocket) -> int: + """Find the socket index in the given node input or output + collection, return -1 if not found. + """ + for i in range(0, len(sockets)): + if sockets[i] == socket: + return i + return -1 + + +def get_export_tree_name(tree: bpy.types.NodeTree, do_warn=False) -> str: + """Return the name of the given node tree that's used in the + exported Haxe code. + + If `do_warn` is true, a warning is displayed if the export name + differs from the actual tree name. + """ + export_name = arm.utils.safesrc(tree.name[0].upper() + tree.name[1:]) + + if export_name != tree.name: + arm.log.warn('Logic node tree and generated trait names differ! Node' + f' tree: "{tree.name}", trait: "{export_name}"') + + return export_name + + +def get_export_node_name(node: bpy.types.Node) -> str: + """Return the name of the given node that's used in the exported + Haxe code. + """ + return '_' + arm.utils.safesrc(node.name) + + def nodetype_to_nodeitem(node_type: Type[bpy.types.Node]) -> NodeItem: """Create a NodeItem from a given node class.""" # Internal node types seem to have no bl_idname attribute From 4387d774cc2d9036a67fffd47b6828aa81a48c58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 3 Jul 2021 19:45:05 +0200 Subject: [PATCH 09/45] Live patch: add support for node property updates --- Sources/armory/logicnode/AddRigidBodyNode.hx | 39 ++- Sources/armory/logicnode/MathNode.hx | 6 +- Sources/armory/logicnode/MixNode.hx | 6 +- .../armory/logicnode/PhysicsConstraintNode.hx | 35 +-- Sources/armory/logicnode/VectorMixNode.hx | 4 +- Sources/armory/trait/internal/LivePatch.hx | 10 + blender/arm/live_patch.py | 15 +- blender/arm/logicnode/arm_nodes.py | 13 +- blender/arm/logicnode/arm_props.py | 267 ++++++++++++++++++ .../logicnode/canvas/LN_on_canvas_element.py | 9 +- .../arm/logicnode/deprecated/LN_on_gamepad.py | 6 +- .../logicnode/deprecated/LN_on_keyboard.py | 6 +- .../arm/logicnode/deprecated/LN_on_mouse.py | 6 +- .../arm/logicnode/deprecated/LN_on_surface.py | 3 +- .../deprecated/LN_on_virtual_button.py | 5 +- blender/arm/logicnode/event/LN_on_event.py | 2 +- blender/arm/logicnode/event/LN_on_update.py | 3 +- blender/arm/logicnode/input/LN_gamepad.py | 6 +- blender/arm/logicnode/input/LN_keyboard.py | 6 +- blender/arm/logicnode/input/LN_mouse.py | 6 +- .../logicnode/input/LN_set_cursor_state.py | 3 +- blender/arm/logicnode/input/LN_touch.py | 3 +- .../arm/logicnode/input/LN_virtual_button.py | 5 +- blender/arm/logicnode/logic/LN_gate.py | 5 +- blender/arm/logicnode/material/LN_material.py | 2 +- blender/arm/logicnode/math/LN_compare.py | 5 +- blender/arm/logicnode/math/LN_math.py | 11 +- .../arm/logicnode/math/LN_math_expression.py | 4 +- blender/arm/logicnode/math/LN_matrix_math.py | 3 +- blender/arm/logicnode/math/LN_mix.py | 14 +- blender/arm/logicnode/math/LN_mix_vector.py | 14 +- .../arm/logicnode/math/LN_quaternion_math.py | 5 +- .../math/LN_screen_to_world_space.py | 11 +- blender/arm/logicnode/math/LN_vector_math.py | 5 +- .../logicnode/miscellaneous/LN_call_group.py | 2 +- .../LN_set_debug_console_settings.py | 3 +- blender/arm/logicnode/native/LN_expression.py | 2 +- blender/arm/logicnode/native/LN_script.py | 2 +- .../logicnode/object/LN_get_object_child.py | 3 +- blender/arm/logicnode/object/LN_mesh.py | 2 +- .../logicnode/object/LN_set_object_visible.py | 3 +- .../object/LN_spawn_object_by_name.py | 3 +- .../logicnode/physics/LN_Add_rigid_body.py | 14 +- .../physics/LN_add_physics_constraint.py | 3 +- .../arm/logicnode/physics/LN_on_contact.py | 3 +- .../logicnode/physics/LN_on_contact_array.py | 3 +- .../logicnode/physics/LN_on_volume_trigger.py | 3 +- .../physics/LN_physics_constraint.py | 45 ++- .../physics/LN_set_rb_activation_state.py | 3 +- .../logicnode/physics/LN_volume_trigger.py | 3 +- .../LN_colorgrading_set_global_node.py | 3 +- .../LN_colorgrading_set_highlight_node.py | 3 +- .../LN_colorgrading_set_midtone_node.py | 3 +- .../LN_colorgrading_set_shadow_node.py | 3 +- .../renderpath/LN_set_msaa_quality.py | 3 +- .../renderpath/LN_set_post_process_quality.py | 3 +- .../renderpath/LN_set_shader_uniform.py | 3 +- .../renderpath/LN_set_shadows_quality.py | 3 +- .../renderpath/LN_set_ssaa_quality.py | 3 +- blender/arm/logicnode/scene/LN_collection.py | 2 +- blender/arm/logicnode/scene/LN_scene.py | 2 +- .../logicnode/scene/LN_spawn_collection.py | 2 +- blender/arm/logicnode/sound/LN_play_sound.py | 17 +- .../arm/logicnode/string/LN_string_case.py | 3 +- .../logicnode/string/LN_string_contains.py | 3 +- blender/arm/logicnode/trait/LN_trait.py | 2 +- .../transform/LN_get_world_orientation.py | 3 +- blender/arm/logicnode/transform/LN_look_at.py | 3 +- .../logicnode/transform/LN_rotate_object.py | 13 +- .../transform/LN_set_object_rotation.py | 3 +- .../transform/LN_transform_to_vector.py | 3 +- blender/arm/make_logic.py | 34 +-- blender/arm/node_utils.py | 46 ++- 73 files changed, 565 insertions(+), 238 deletions(-) create mode 100644 blender/arm/logicnode/arm_props.py diff --git a/Sources/armory/logicnode/AddRigidBodyNode.hx b/Sources/armory/logicnode/AddRigidBodyNode.hx index a599e568..d896c2e0 100644 --- a/Sources/armory/logicnode/AddRigidBodyNode.hx +++ b/Sources/armory/logicnode/AddRigidBodyNode.hx @@ -9,7 +9,7 @@ import armory.trait.physics.RigidBody; class AddRigidBodyNode extends LogicNode { public var property0: String;//Shape - public var property1: String;//Advanced + public var property1: Bool;//Advanced public var object: Object; public function new(tree: LogicTree) { @@ -38,8 +38,7 @@ class AddRigidBodyNode extends LogicNode { var shape: Shape = 1; - if(property1 == 'true') - { + if (property1) { margin = inputs[9].get(); marginLen = inputs[10].get(); linDamp = inputs[11].get(); @@ -49,34 +48,29 @@ class AddRigidBodyNode extends LogicNode { angVelThreshold = inputs[15].get(); group = inputs[16].get(); mask = inputs[17].get(); - } - if (object == null) return; #if arm_physics var rb: RigidBody = object.getTrait(RigidBody); - if((group < 0) || (group > 32)) group = 1; //Limiting max groups to 32 - if((mask < 0) || (mask > 32)) mask = 1; //Limiting max masks to 32 - if(rb == null) - { - + if ((group < 0) || (group > 32)) group = 1; //Limiting max groups to 32 + if ((mask < 0) || (mask > 32)) mask = 1; //Limiting max masks to 32 + if (rb == null) { switch (property0){ - - case 'Box': + case "Box": shape = Box; - case 'Sphere': + case "Sphere": shape = Sphere; - case 'Capsule': + case "Capsule": shape = Capsule; - case 'Cone': + case "Cone": shape = Cone; - case 'Cylinder': + case "Cylinder": shape = Cylinder; - case 'Convex Hull': + case "Convex Hull": shape = ConvexHull; - case 'Mesh': + case "Mesh": shape = Mesh; } @@ -84,15 +78,14 @@ class AddRigidBodyNode extends LogicNode { rb.animated = animated; rb.staticObj = ! active; rb.isTriggerObject(trigger); - if(property1 == 'true') - { + + if (property1) { rb.linearDamping = linDamp; rb.angularDamping = angDamp; - if(margin) rb.collisionMargin = marginLen; - if(useDeactiv) { + if (margin) rb.collisionMargin = marginLen; + if (useDeactiv) { rb.setUpDeactivation(true, linearVelThreshold, angVelThreshold, 0.0); } - } object.addTrait(rb); diff --git a/Sources/armory/logicnode/MathNode.hx b/Sources/armory/logicnode/MathNode.hx index 4905c47e..5adc477d 100644 --- a/Sources/armory/logicnode/MathNode.hx +++ b/Sources/armory/logicnode/MathNode.hx @@ -3,7 +3,7 @@ package armory.logicnode; class MathNode extends LogicNode { public var property0: String; // Operation - public var property1: String; // Clamp + public var property1: Bool; // Clamp public function new(tree: LogicTree) { super(tree); @@ -80,8 +80,8 @@ class MathNode extends LogicNode { } } // Clamp - if (property1 == "true") r = r < 0.0 ? 0.0 : (r > 1.0 ? 1.0 : r); + if (property1) r = r < 0.0 ? 0.0 : (r > 1.0 ? 1.0 : r); return r; } -} \ No newline at end of file +} diff --git a/Sources/armory/logicnode/MixNode.hx b/Sources/armory/logicnode/MixNode.hx index 90f51bea..4f75884d 100644 --- a/Sources/armory/logicnode/MixNode.hx +++ b/Sources/armory/logicnode/MixNode.hx @@ -6,7 +6,7 @@ class MixNode extends LogicNode { public var property0: String; // Type public var property1: String; // Ease - public var property2: String; // Clamp + public var property2: Bool; // Clamp var ease: Float->Float = null; @@ -50,7 +50,9 @@ class MixNode extends LogicNode { var v2: Float = inputs[2].get(); var f = v1 + (v2 - v1) * ease(k); - if (property2 == "true") f = f < 0 ? 0 : f > 1 ? 1 : f; + // Clamp + if (property2) f = f < 0 ? 0 : f > 1 ? 1 : f; + return f; } } diff --git a/Sources/armory/logicnode/PhysicsConstraintNode.hx b/Sources/armory/logicnode/PhysicsConstraintNode.hx index 5446788b..e6bd0bf4 100644 --- a/Sources/armory/logicnode/PhysicsConstraintNode.hx +++ b/Sources/armory/logicnode/PhysicsConstraintNode.hx @@ -3,15 +3,14 @@ package armory.logicnode; #if arm_physics import armory.trait.physics.bullet.PhysicsConstraint.ConstraintAxis; #end -import iron.object.Object; class PhysicsConstraintNode extends LogicNode { - public var property0: String;//Linear or Angular - public var property1: String;//Axis - public var property2: String;//Is a spring - public var value1: Float;//Lower limit or Spring Stiffness - public var value2: Float;//Upper limit or Spring Damping + public var property0: String; //Linear or Angular + public var property1: String; //Axis + public var property2: Bool; //Is a spring + public var value1: Float; //Lower limit or Spring Stiffness + public var value2: Float; //Upper limit or Spring Damping public var isAngular: Bool; public var axis: ConstraintAxis; public var isSpring: Bool; @@ -24,27 +23,13 @@ class PhysicsConstraintNode extends LogicNode { value1 = inputs[0].get(); value2 = inputs[1].get(); - if(property0 == 'Linear') { - isAngular = false; - } - else{ - isAngular = true; - } - - if(property2 == 'true'){ - isSpring = true; - } - else { - isSpring = false; - } + isAngular = property0 != "Linear"; + isSpring = property2; switch (property1){ - case 'X': - axis = X; - case 'Y': - axis = Y; - case 'Z': - axis = Z; + case "X": axis = X; + case "Y": axis = Y; + case "Z": axis = Z; } return this; diff --git a/Sources/armory/logicnode/VectorMixNode.hx b/Sources/armory/logicnode/VectorMixNode.hx index 47286ac7..ae2b7938 100644 --- a/Sources/armory/logicnode/VectorMixNode.hx +++ b/Sources/armory/logicnode/VectorMixNode.hx @@ -7,7 +7,7 @@ class VectorMixNode extends LogicNode { public var property0: String; // Type public var property1: String; // Ease - public var property2: String; // Clamp + public var property2: Bool; // Clamp var v = new Vec4(); @@ -57,7 +57,7 @@ class VectorMixNode extends LogicNode { v.y = v1.y + (v2.y - v1.y) * f; v.z = v1.z + (v2.z - v1.z) * f; - if (property2 == "true") v.clamp(0, 1); + if (property2) v.clamp(0, 1); return v; } } diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 49c4cd26..8d8be7db 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -45,5 +45,15 @@ class LivePatch extends iron.Trait { } toNode.inputs[toIndex] = new LogicNodeInput(fromNode, fromIndex); } + + public static function patchUpdateNodeProp(treeName: String, nodeName: String, propName: String, value: Dynamic) { + var tree = LogicTree.nodeTrees[treeName]; + if (tree == null) return; + + var node = tree.nodes[nodeName]; + if (node == null) return; + + Reflect.setField(node, propName, value); + } #end } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 1403d58c..ce9f8f50 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -153,8 +153,7 @@ def send_event(event_id: str, opt_data: Any = None): # This event is called twice for a connection but we only need # send it once if node == link.from_node: - node_tree = node.get_tree() - tree_name = arm.node_utils.get_export_tree_name(node_tree) + tree_name = arm.node_utils.get_export_tree_name(node.get_tree()) # [1:] is used here because make_logic already uses that for # node names if arm_debug is used @@ -167,6 +166,18 @@ 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}");' write_patch(js) + if event_id == 'ln_update_prop': + node: ArmLogicTreeNode + prop_name: str + node, prop_name = opt_data + + 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_prop(node, prop_name) + + js = f'LivePatch.patchUpdateNodeProp("{tree_name}", "{node_name}", "{prop_name}", {value});' + write_patch(js) def on_operator(operator_id: str): diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index 1a0dad15..152901c3 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -1,6 +1,6 @@ import itertools from collections import OrderedDict -from typing import Any, Generator, List, Optional, Type, Dict +from typing import Any, Generator, List, Optional, Type from typing import OrderedDict as ODict # Prevent naming conflicts import bpy.types @@ -8,7 +8,9 @@ from bpy.props import * from nodeitems_utils import NodeItem import arm # we cannot import arm.livepatch here or we have a circular import -# Pass NodeReplacement forward to individual node modules that import arm_nodes +# Pass custom property types and NodeReplacement forward to individual +# node modules that import arm_nodes +from arm.logicnode.arm_props import * from arm.logicnode.replacement import NodeReplacement import arm.node_utils @@ -52,6 +54,13 @@ class ArmLogicTreeNode(bpy.types.Node): def get_tree(self): return self.id_data + def on_prop_update(self, context: bpy.types.Context, prop_name: str): + """Called if a property created with a function from the + arm_props module is changed. If the property has a custom update + function, it is called before `on_prop_update()`. + """ + arm.live_patch.send_event('ln_update_prop', (self, prop_name)) + def insert_link(self, link: bpy.types.NodeLink): """Called on *both* nodes when a link between two nodes is created.""" arm.live_patch.send_event('ln_insert_link', (self, link)) diff --git a/blender/arm/logicnode/arm_props.py b/blender/arm/logicnode/arm_props.py new file mode 100644 index 00000000..c2777689 --- /dev/null +++ b/blender/arm/logicnode/arm_props.py @@ -0,0 +1,267 @@ +"""Custom bpy property creators for logic nodes. Please be aware that +the code in this file is usually run once at registration and not for +each individual node instance when it is created. + +The functions for creating typed properties wrap the private __haxe_prop +function to allow for IDE autocompletion. + +Some default parameters in the signature of functions in this module are +mutable (common Python pitfall, be aware of this!), but because they +don't get accessed later it doesn't matter here and we keep it this way +for parity with the Blender API. +""" +from typing import Any, Callable, Sequence, Union + +import bpy +from bpy.props import * + +# Property parameter name `set` shadows built-in type `set` +__set = set + + +def __haxe_prop(prop_type: Callable, prop_name: str, *args, **kwargs) -> Any: + """Declares a logic node property as a property that will be + used ingame for a logic node.""" + update_callback: Callable = kwargs.get('update', None) + if update_callback is None: + def wrapper(self: bpy.types.Node, context: bpy.types.Context): + self.on_prop_update(context, prop_name) + kwargs['update'] = wrapper + else: + def wrapper(self: bpy.types.Node, context: bpy.types.Context): + update_callback(self, context) + self.on_prop_update(context, prop_name) + kwargs['update'] = wrapper + + # Tags are not allowed on classes other than bpy.types.ID or + # bpy.types.Bone, remove them here to prevent registration errors + if 'tags' in kwargs: + del kwargs['tags'] + + return prop_type(*args, **kwargs) + + +def HaxeBoolProperty( + prop_name: str, + *, # force passing further arguments as keywords, see PEP 3102 + name: str = "", + description: str = "", + default=False, + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + subtype: str = 'NONE', + update=None, + get=None, + set=None +) -> 'bpy.types.BoolProperty': + """Declares a new BoolProperty that has a counterpart with the given + prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(BoolProperty, **locals()) + + +def HaxeBoolVectorProperty( + prop_name: str, + *, + name: str = "", + description: str = "", + default: list = (False, False, False), + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + subtype: str = 'NONE', + size: int = 3, + update=None, + get=None, + set=None +) -> list['bpy.types.BoolProperty']: + """Declares a new BoolVectorProperty that has a counterpart with the + given prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(BoolVectorProperty, **locals()) + + +def HaxeCollectionProperty( + prop_name: str, + *, + type=None, + name: str = "", + description: str = "", + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set() +) -> 'bpy.types.CollectionProperty': + """Declares a new CollectionProperty that has a counterpart with the + given prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(CollectionProperty, **locals()) + + +def HaxeEnumProperty( + prop_name: str, + *, + items: Sequence, + name: str = "", + description: str = "", + default: Union[str, set[str]] = None, + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + update=None, + get=None, + set=None +) -> 'bpy.types.EnumProperty': + """Declares a new EnumProperty that has a counterpart with the given + prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(EnumProperty, **locals()) + + +def HaxeFloatProperty( + prop_name: str, + *, + name: str = "", + description: str = "", + default=0.0, + min: float = -3.402823e+38, + max: float = 3.402823e+38, + soft_min: float = -3.402823e+38, + soft_max: float = 3.402823e+38, + step: int = 3, + precision: int = 2, + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + subtype: str = 'NONE', + unit: str = 'NONE', + update=None, + get=None, + set=None +) -> 'bpy.types.FloatProperty': + """Declares a new FloatProperty that has a counterpart with the + given prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(FloatProperty, **locals()) + + +def HaxeFloatVectorProperty( + prop_name: str, + *, + name: str = "", + description: str = "", + default: list = (0.0, 0.0, 0.0), + min: float = 'sys.float_info.min', + max: float = 'sys.float_info.max', + soft_min: float = 'sys.float_info.min', + soft_max: float = 'sys.float_info.max', + step: int = 3, + precision: int = 2, + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + subtype: str = 'NONE', + unit: str = 'NONE', + size: int = 3, + update=None, + get=None, + set=None +) -> list['bpy.types.FloatProperty']: + """Declares a new FloatVectorProperty that has a counterpart with the + given prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(FloatVectorProperty, **locals()) + + +def HaxeIntProperty( + prop_name: str, + *, + name: str = "", + description: str = "", + default=0, + min: int = -2**31, + max: int = 2**31 - 1, + soft_min: int = -2**31, + soft_max: int = 2**31 - 1, + step: int = 1, + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + subtype: str = 'NONE', + update=None, + get=None, + set=None +) -> 'bpy.types.IntProperty': + """Declares a new IntProperty that has a counterpart with the given + prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(IntProperty, **locals()) + + +def HaxeIntVectorProperty( + prop_name: str, + *, + name: str = "", + description: str = "", + default: list = (0, 0, 0), + min: int = -2**31, + max: int = 2**31 - 1, + soft_min: int = -2**31, + soft_max: int = 2**31 - 1, + step: int = 1, + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + subtype: str = 'NONE', + size: int = 3, + update=None, + get=None, + set=None +) -> list['bpy.types.IntProperty']: + """Declares a new IntVectorProperty that has a counterpart with the given + prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(IntVectorProperty, **locals()) + + +def HaxePointerProperty( + prop_name: str, + *, + type=None, + name: str = "", + description: str = "", + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + poll=None, + update=None +) -> 'bpy.types.PointerProperty': + """Declares a new PointerProperty that has a counterpart with the + given prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(PointerProperty, **locals()) + + +def RemoveHaxeProperty(cls, attr: str): + RemoveProperty(cls, attr) + + +def HaxeStringProperty( + prop_name: str, + *, + name: str = "", + description: str = "", + default: str = "", + maxlen: int = 0, + options: set = {'ANIMATABLE'}, + override: set = set(), + tags: set = set(), + subtype: str = 'NONE', + update=None, + get=None, + set=None +) -> 'bpy.types.StringProperty': + """Declares a new StringProperty that has a counterpart with the + given prop_name (Python and Haxe names must be identical for now). + """ + return __haxe_prop(StringProperty, **locals()) diff --git a/blender/arm/logicnode/canvas/LN_on_canvas_element.py b/blender/arm/logicnode/canvas/LN_on_canvas_element.py index 4eab0872..ba1301c1 100644 --- a/blender/arm/logicnode/canvas/LN_on_canvas_element.py +++ b/blender/arm/logicnode/canvas/LN_on_canvas_element.py @@ -6,16 +6,19 @@ class OnCanvasElementNode(ArmLogicTreeNode): bl_label = 'On Canvas Element' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items=[('click', 'Click', 'Listen to mouse clicks'), ('hover', 'Hover', 'Listen to mouse hover')], name='Listen to', default='click') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items=[('started', 'Started', 'Started'), ('down', 'Down', 'Down'), ('released', 'Released', 'Released')], name='Status', default='started') - property2: EnumProperty( + property2: HaxeEnumProperty( + 'property2', items=[('left', 'Left', 'Left mouse button'), ('middle', 'Middle', 'Middle mouse button'), ('right', 'Right', 'Right mouse button')], diff --git a/blender/arm/logicnode/deprecated/LN_on_gamepad.py b/blender/arm/logicnode/deprecated/LN_on_gamepad.py index e2867026..39433482 100644 --- a/blender/arm/logicnode/deprecated/LN_on_gamepad.py +++ b/blender/arm/logicnode/deprecated/LN_on_gamepad.py @@ -11,7 +11,8 @@ class OnGamepadNode(ArmLogicTreeNode): arm_section = 'gamepad' arm_version = 2 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Down', 'Down', 'Down'), ('Started', 'Started', 'Started'), ('Released', 'Released', 'Released')], @@ -19,7 +20,8 @@ class OnGamepadNode(ArmLogicTreeNode): # ('Moved Right', 'Moved Right', 'Moved Right'),], name='', default='Started') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('cross', 'cross / a', 'cross / a'), ('circle', 'circle / b', 'circle / b'), ('square', 'square / x', 'square / x'), diff --git a/blender/arm/logicnode/deprecated/LN_on_keyboard.py b/blender/arm/logicnode/deprecated/LN_on_keyboard.py index 29d6d2a3..b5b8bbcf 100644 --- a/blender/arm/logicnode/deprecated/LN_on_keyboard.py +++ b/blender/arm/logicnode/deprecated/LN_on_keyboard.py @@ -11,13 +11,15 @@ class OnKeyboardNode(ArmLogicTreeNode): arm_section = 'keyboard' arm_version = 2 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Down', 'Down', 'Down'), ('Started', 'Started', 'Started'), ('Released', 'Released', 'Released')], name='', default='Started') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('a', 'a', 'a'), ('b', 'b', 'b'), ('c', 'c', 'c'), diff --git a/blender/arm/logicnode/deprecated/LN_on_mouse.py b/blender/arm/logicnode/deprecated/LN_on_mouse.py index c4ac60b9..487d634e 100644 --- a/blender/arm/logicnode/deprecated/LN_on_mouse.py +++ b/blender/arm/logicnode/deprecated/LN_on_mouse.py @@ -11,13 +11,15 @@ class OnMouseNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 2 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Down', 'Down', 'Down'), ('Started', 'Started', 'Started'), ('Released', 'Released', 'Released'), ('Moved', 'Moved', 'Moved')], name='', default='Down') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('left', 'left', 'left'), ('right', 'right', 'right'), ('middle', 'middle', 'middle')], diff --git a/blender/arm/logicnode/deprecated/LN_on_surface.py b/blender/arm/logicnode/deprecated/LN_on_surface.py index 066eb4a6..b906d143 100644 --- a/blender/arm/logicnode/deprecated/LN_on_surface.py +++ b/blender/arm/logicnode/deprecated/LN_on_surface.py @@ -11,7 +11,8 @@ class OnSurfaceNode(ArmLogicTreeNode): arm_section = 'surface' arm_version = 2 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Touched', 'Touched', 'Touched'), ('Started', 'Started', 'Started'), ('Released', 'Released', 'Released'), diff --git a/blender/arm/logicnode/deprecated/LN_on_virtual_button.py b/blender/arm/logicnode/deprecated/LN_on_virtual_button.py index 21ba0382..e5201612 100644 --- a/blender/arm/logicnode/deprecated/LN_on_virtual_button.py +++ b/blender/arm/logicnode/deprecated/LN_on_virtual_button.py @@ -11,12 +11,13 @@ class OnVirtualButtonNode(ArmLogicTreeNode): arm_section = 'virtual' arm_version = 2 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Down', 'Down', 'Down'), ('Started', 'Started', 'Started'), ('Released', 'Released', 'Released')], name='', default='Started') - property1: StringProperty(name='', default='button') + property1: HaxeStringProperty('property1', name='', default='button') def init(self, context): super(OnVirtualButtonNode, self).init(context) diff --git a/blender/arm/logicnode/event/LN_on_event.py b/blender/arm/logicnode/event/LN_on_event.py index 0d3df334..99d68c06 100644 --- a/blender/arm/logicnode/event/LN_on_event.py +++ b/blender/arm/logicnode/event/LN_on_event.py @@ -10,7 +10,7 @@ class OnEventNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'custom' - property0: StringProperty(name='', default='') + property0: HaxeStringProperty('property0', name='', default='') def init(self, context): super(OnEventNode, self).init(context) diff --git a/blender/arm/logicnode/event/LN_on_update.py b/blender/arm/logicnode/event/LN_on_update.py index df185213..3b39d066 100644 --- a/blender/arm/logicnode/event/LN_on_update.py +++ b/blender/arm/logicnode/event/LN_on_update.py @@ -10,7 +10,8 @@ class OnUpdateNode(ArmLogicTreeNode): bl_idname = 'LNOnUpdateNode' bl_label = 'On Update' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Update', 'Update', 'Update'), ('Late Update', 'Late Update', 'Late Update'), ('Physics Pre-Update', 'Physics Pre-Update', 'Physics Pre-Update')], diff --git a/blender/arm/logicnode/input/LN_gamepad.py b/blender/arm/logicnode/input/LN_gamepad.py index b27e705b..df8dec2b 100644 --- a/blender/arm/logicnode/input/LN_gamepad.py +++ b/blender/arm/logicnode/input/LN_gamepad.py @@ -15,7 +15,8 @@ class GamepadNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'gamepad' - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('started', 'Started', 'The gamepad button starts to be pressed'), ('down', 'Down', 'The gamepad button is pressed'), ('released', 'Released', 'The gamepad button stops being pressed')], @@ -23,7 +24,8 @@ class GamepadNode(ArmLogicTreeNode): # ('Moved Right', 'Moved Right', 'Moved Right'),], name='', default='down') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('cross', 'cross / a', 'cross / a'), ('circle', 'circle / b', 'circle / b'), ('square', 'square / x', 'square / x'), diff --git a/blender/arm/logicnode/input/LN_keyboard.py b/blender/arm/logicnode/input/LN_keyboard.py index 8e04c8df..230425db 100644 --- a/blender/arm/logicnode/input/LN_keyboard.py +++ b/blender/arm/logicnode/input/LN_keyboard.py @@ -7,13 +7,15 @@ class KeyboardNode(ArmLogicTreeNode): arm_section = 'keyboard' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('started', 'Started', 'The keyboard button starts to be pressed'), ('down', 'Down', 'The keyboard button is pressed'), ('released', 'Released', 'The keyboard button stops being pressed')], name='', default='down') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('a', 'a', 'a'), ('b', 'b', 'b'), ('c', 'c', 'c'), diff --git a/blender/arm/logicnode/input/LN_mouse.py b/blender/arm/logicnode/input/LN_mouse.py index cfdb052c..3152a132 100644 --- a/blender/arm/logicnode/input/LN_mouse.py +++ b/blender/arm/logicnode/input/LN_mouse.py @@ -7,13 +7,15 @@ class MouseNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('started', 'Started', 'The mouse button startes to be pressed'), ('down', 'Down', 'The mouse button is pressed'), ('released', 'Released', 'The mouse button stops being pressed'), ('moved', 'Moved', 'Moved')], name='', default='down') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('left', 'Left', 'Left mouse button'), ('middle', 'Middle', 'Middle mouse button'), ('right', 'Right', 'Right mouse button')], diff --git a/blender/arm/logicnode/input/LN_set_cursor_state.py b/blender/arm/logicnode/input/LN_set_cursor_state.py index ac83802c..15f280cb 100644 --- a/blender/arm/logicnode/input/LN_set_cursor_state.py +++ b/blender/arm/logicnode/input/LN_set_cursor_state.py @@ -14,7 +14,8 @@ class SetCursorStateNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('hide locked', 'Hide Locked', 'The mouse cursor is hidden and locked'), ('hide', 'Hide', 'The mouse cursor is hidden'), ('lock', 'Lock', 'The mouse cursor is locked'), diff --git a/blender/arm/logicnode/input/LN_touch.py b/blender/arm/logicnode/input/LN_touch.py index a5774ea5..2beb6ac1 100644 --- a/blender/arm/logicnode/input/LN_touch.py +++ b/blender/arm/logicnode/input/LN_touch.py @@ -7,7 +7,8 @@ class SurfaceNode(ArmLogicTreeNode): arm_section = 'surface' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('started', 'Started', 'The screen surface starts to be touched'), ('down', 'Down', 'The screen surface is touched'), ('released', 'Released', 'The screen surface stops being touched'), diff --git a/blender/arm/logicnode/input/LN_virtual_button.py b/blender/arm/logicnode/input/LN_virtual_button.py index d2bce52f..9d4c9c3f 100644 --- a/blender/arm/logicnode/input/LN_virtual_button.py +++ b/blender/arm/logicnode/input/LN_virtual_button.py @@ -7,12 +7,13 @@ class VirtualButtonNode(ArmLogicTreeNode): arm_section = 'virtual' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('started', 'Started', 'The virtual button starts to be pressed'), ('down', 'Down', 'The virtual button is pressed'), ('released', 'Released', 'The virtual button stops being pressed')], name='', default='down') - property1: StringProperty(name='', default='button') + property1: HaxeStringProperty('property1', name='', default='button') def init(self, context): super(VirtualButtonNode, self).init(context) diff --git a/blender/arm/logicnode/logic/LN_gate.py b/blender/arm/logicnode/logic/LN_gate.py index 5fbc6818..ad931f7c 100644 --- a/blender/arm/logicnode/logic/LN_gate.py +++ b/blender/arm/logicnode/logic/LN_gate.py @@ -20,7 +20,8 @@ class GateNode(ArmLogicTreeNode): arm_version = 1 min_inputs = 3 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Equal', 'Equal', 'Equal'), ('Almost Equal', 'Almost Equal', 'Almost Equal'), ('Greater', 'Greater', 'Greater'), @@ -31,7 +32,7 @@ class GateNode(ArmLogicTreeNode): ('And', 'And', 'And')], name='', default='Equal', update=remove_extra_inputs) - property1: FloatProperty(name='Tolerance', description='Precision for float compare', default=0.0001) + property1: HaxeFloatProperty('property1', name='Tolerance', description='Precision for float compare', default=0.0001) def __init__(self): super(GateNode, self).__init__() diff --git a/blender/arm/logicnode/material/LN_material.py b/blender/arm/logicnode/material/LN_material.py index 03e923b6..7b3a4cc0 100644 --- a/blender/arm/logicnode/material/LN_material.py +++ b/blender/arm/logicnode/material/LN_material.py @@ -18,7 +18,7 @@ class MaterialNode(ArmLogicTreeNode): return self.property0.name return arm.utils.asset_name(bpy.data.materials[self.property0.name]) - property0: PointerProperty(name='', type=bpy.types.Material) + property0: HaxePointerProperty('property0', name='', type=bpy.types.Material) def init(self, context): super(MaterialNode, self).init(context) diff --git a/blender/arm/logicnode/math/LN_compare.py b/blender/arm/logicnode/math/LN_compare.py index 7b1a59ef..3081376d 100644 --- a/blender/arm/logicnode/math/LN_compare.py +++ b/blender/arm/logicnode/math/LN_compare.py @@ -10,7 +10,8 @@ class CompareNode(ArmLogicTreeNode): bl_idname = 'LNCompareNode' bl_label = 'Compare' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Equal', 'Equal', 'Equal'), ('Almost Equal', 'Almost Equal', 'Almost Equal'), ('Greater', 'Greater', 'Greater'), @@ -22,7 +23,7 @@ class CompareNode(ArmLogicTreeNode): name='', default='Equal', update=remove_extra_inputs) min_inputs = 2 - property1: FloatProperty(name='Tolerance', description='Precision for float compare', default=0.0001) + property1: HaxeFloatProperty('property1', name='Tolerance', description='Precision for float compare', default=0.0001) def __init__(self): super(CompareNode, self).__init__() diff --git a/blender/arm/logicnode/math/LN_math.py b/blender/arm/logicnode/math/LN_math.py index 3d8c4796..e090811f 100644 --- a/blender/arm/logicnode/math/LN_math.py +++ b/blender/arm/logicnode/math/LN_math.py @@ -64,7 +64,8 @@ class MathNode(ArmLogicTreeNode): self.inputs.remove(self.inputs.values()[-1]) self['property0'] = value - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Add', 'Add', 'Add'), ('Multiply', 'Multiply', 'Multiply'), ('Sine', 'Sine', 'Sine'), @@ -92,11 +93,7 @@ class MathNode(ArmLogicTreeNode): ('Exponent', 'Exponent', 'Exponent')], name='', default='Add', set=set_enum, get=get_enum) - @property - def property1(self): - return 'true' if self.property1_ else 'false' - - property1_: BoolProperty(name='Clamp', default=False) + property1: HaxeBoolProperty('property1', name='Clamp', default=False) def __init__(self): array_nodes[str(id(self))] = self @@ -109,7 +106,7 @@ class MathNode(ArmLogicTreeNode): self.add_output('NodeSocketFloat', 'Result') def draw_buttons(self, context, layout): - layout.prop(self, 'property1_') + layout.prop(self, 'property1') layout.prop(self, 'property0') # Many arguments: Add, Subtract, Multiply, Divide if (self.get_count_in(self.property0) == 0): diff --git a/blender/arm/logicnode/math/LN_math_expression.py b/blender/arm/logicnode/math/LN_math_expression.py index b2fd3392..923b6aee 100644 --- a/blender/arm/logicnode/math/LN_math_expression.py +++ b/blender/arm/logicnode/math/LN_math_expression.py @@ -155,8 +155,8 @@ class MathExpressionNode(ArmLogicTreeNode): def get_exp(self): return self.get('property0', 'a + b') - property0: StringProperty(name='', description='Expression (operation: +, -, *, /, ^, (, ), %)', set=set_exp, get=get_exp) - property1: BoolProperty(name='Clamp', default=False) + property0: HaxeStringProperty('property0', name='', description='Expression (operation: +, -, *, /, ^, (, ), %)', set=set_exp, get=get_exp) + property1: HaxeBoolProperty('property1', name='Clamp', default=False) def __init__(self): array_nodes[str(id(self))] = self diff --git a/blender/arm/logicnode/math/LN_matrix_math.py b/blender/arm/logicnode/math/LN_matrix_math.py index 3a2fc6f4..4a05ce3d 100644 --- a/blender/arm/logicnode/math/LN_matrix_math.py +++ b/blender/arm/logicnode/math/LN_matrix_math.py @@ -7,7 +7,8 @@ class MatrixMathNode(ArmLogicTreeNode): arm_section = 'matrix' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Multiply', 'Multiply', 'Multiply')], name='', default='Multiply') diff --git a/blender/arm/logicnode/math/LN_mix.py b/blender/arm/logicnode/math/LN_mix.py index 7924c9c3..92fa80df 100644 --- a/blender/arm/logicnode/math/LN_mix.py +++ b/blender/arm/logicnode/math/LN_mix.py @@ -5,7 +5,8 @@ class MixNode(ArmLogicTreeNode): bl_idname = 'LNMixNode' bl_label = 'Mix' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Linear', 'Linear', 'Linear'), ('Sine', 'Sine', 'Sine'), ('Quad', 'Quad', 'Quad'), @@ -19,18 +20,15 @@ class MixNode(ArmLogicTreeNode): ('Elastic', 'Elastic', 'Elastic'), ], name='', default='Linear') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('In', 'In', 'In'), ('Out', 'Out', 'Out'), ('InOut', 'InOut', 'InOut'), ], name='', default='Out') - @property - def property2(self): - return 'true' if self.property2_ else 'false' - - property2_: BoolProperty(name='Clamp', default=False) + property2: HaxeBoolProperty('property2', name='Clamp', default=False) def init(self, context): super(MixNode, self).init(context) @@ -41,6 +39,6 @@ class MixNode(ArmLogicTreeNode): self.add_output('NodeSocketFloat', 'Result') def draw_buttons(self, context, layout): - layout.prop(self, 'property2_') + layout.prop(self, 'property2') layout.prop(self, 'property0') layout.prop(self, 'property1') diff --git a/blender/arm/logicnode/math/LN_mix_vector.py b/blender/arm/logicnode/math/LN_mix_vector.py index 31c7f587..cbab381b 100644 --- a/blender/arm/logicnode/math/LN_mix_vector.py +++ b/blender/arm/logicnode/math/LN_mix_vector.py @@ -7,7 +7,8 @@ class VectorMixNode(ArmLogicTreeNode): arm_section = 'vector' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Linear', 'Linear', 'Linear'), ('Sine', 'Sine', 'Sine'), ('Quad', 'Quad', 'Quad'), @@ -21,18 +22,15 @@ class VectorMixNode(ArmLogicTreeNode): ('Elastic', 'Elastic', 'Elastic'), ], name='', default='Linear') - property1: EnumProperty( + property1: HaxeEnumProperty( + 'property1', items = [('In', 'In', 'In'), ('Out', 'Out', 'Out'), ('InOut', 'InOut', 'InOut'), ], name='', default='Out') - @property - def property2(self): - return 'true' if self.property2_ else 'false' - - property2_: BoolProperty(name='Clamp', default=False) + property2: HaxeBoolProperty('property2', name='Clamp', default=False) def init(self, context): super(VectorMixNode, self).init(context) @@ -43,7 +41,7 @@ class VectorMixNode(ArmLogicTreeNode): self.add_output('NodeSocketVector', 'Result') def draw_buttons(self, context, layout): - layout.prop(self, 'property2_') + layout.prop(self, 'property2') layout.prop(self, 'property0') if self.property0 != 'Linear': layout.prop(self, 'property1') diff --git a/blender/arm/logicnode/math/LN_quaternion_math.py b/blender/arm/logicnode/math/LN_quaternion_math.py index d1f91abc..093b8c83 100644 --- a/blender/arm/logicnode/math/LN_quaternion_math.py +++ b/blender/arm/logicnode/math/LN_quaternion_math.py @@ -41,7 +41,7 @@ class QuaternionMathNode(ArmLogicTreeNode): if (self.property0 == 'ToAxisAngle'): self.add_output('NodeSocketFloat', 'To Axis Angle') # ToAxisAngle - property1: BoolProperty(name='Separator Out', default=False, set=set_bool, get=get_bool) + property1: HaxeBoolProperty('property1', name='Separator Out', default=False, set=set_bool, get=get_bool) @staticmethod def get_enum_id_value(obj, prop_name, value): @@ -132,7 +132,8 @@ class QuaternionMathNode(ArmLogicTreeNode): self.add_output('NodeSocketFloat', 'Module') self['property0'] = value - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Add', 'Add', 'Add'), ('Subtract', 'Subtract', 'Subtract'), ('DotProduct', 'Dot Product', 'Dot Product'), diff --git a/blender/arm/logicnode/math/LN_screen_to_world_space.py b/blender/arm/logicnode/math/LN_screen_to_world_space.py index 52b6fa36..b01ac4e1 100644 --- a/blender/arm/logicnode/math/LN_screen_to_world_space.py +++ b/blender/arm/logicnode/math/LN_screen_to_world_space.py @@ -10,12 +10,7 @@ class ScreenToWorldSpaceNode(ArmLogicTreeNode): min_outputs = 2 max_outputs = 8 - # Separator - @property - def property0(self): - return True if self.property0_ else False - - property0_: BoolProperty(name='Separator Out', default=False) + property0: HaxeBoolProperty('property0', name='Separator Out', default=False) def init(self, context): super(ScreenToWorldSpaceNode, self).init(context) @@ -26,8 +21,8 @@ class ScreenToWorldSpaceNode(ArmLogicTreeNode): self.add_output('NodeSocketVector', 'Direction') def draw_buttons(self, context, layout): - layout.prop(self, 'property0_') # Separator Out - if self.property0_: + layout.prop(self, 'property0') # Separator Out + if self.property0: if len(self.outputs) < self.max_outputs: self.outputs.remove(self.outputs.values()[-1]) # Direction vector self.add_output('NodeSocketFloat', 'X') # World X diff --git a/blender/arm/logicnode/math/LN_vector_math.py b/blender/arm/logicnode/math/LN_vector_math.py index 22f9eaa4..517babbf 100644 --- a/blender/arm/logicnode/math/LN_vector_math.py +++ b/blender/arm/logicnode/math/LN_vector_math.py @@ -42,7 +42,7 @@ class VectorMathNode(ArmLogicTreeNode): if (self.property0 == 'Dot Product'): self.add_output('NodeSocketFloat', 'Scalar') # Scalar - property1: BoolProperty(name='Separator Out', default=False, set=set_bool, get=get_bool) + property1: HaxeBoolProperty('property1', name='Separator Out', default=False, set=set_bool, get=get_bool) @staticmethod def get_enum_id_value(obj, prop_name, value): @@ -105,7 +105,8 @@ class VectorMathNode(ArmLogicTreeNode): self.add_output('NodeSocketFloat', 'Length') self['property0'] = value - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Add', 'Add', 'Add'), ('Dot Product', 'Dot Product', 'Dot Product'), ('Multiply', 'Multiply', 'Multiply'), diff --git a/blender/arm/logicnode/miscellaneous/LN_call_group.py b/blender/arm/logicnode/miscellaneous/LN_call_group.py index bf483e0d..cb5849bb 100644 --- a/blender/arm/logicnode/miscellaneous/LN_call_group.py +++ b/blender/arm/logicnode/miscellaneous/LN_call_group.py @@ -15,7 +15,7 @@ class CallGroupNode(ArmLogicTreeNode): def property0(self): return arm.utils.safesrc(bpy.data.worlds['Arm'].arm_project_package) + '.node.' + arm.utils.safesrc(self.property0_.name) - property0_: PointerProperty(name='Group', type=bpy.types.NodeTree) + property0_: HaxePointerProperty('property0', name='Group', type=bpy.types.NodeTree) def init(self, context): super(CallGroupNode, self).init(context) diff --git a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py index a40602e8..24f8d485 100644 --- a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py +++ b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py @@ -6,7 +6,8 @@ class SetDebugConsoleSettings(ArmLogicTreeNode): bl_label = 'Set Debug Console Settings' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('left', 'Anchor Left', 'Anchor debug console in the top left'), ('center', 'Anchor Center', 'Anchor debug console in the top center'), ('right', 'Anchor Right', 'Anchor the debug console in the top right')], diff --git a/blender/arm/logicnode/native/LN_expression.py b/blender/arm/logicnode/native/LN_expression.py index e216e5b2..d2d7e853 100644 --- a/blender/arm/logicnode/native/LN_expression.py +++ b/blender/arm/logicnode/native/LN_expression.py @@ -9,7 +9,7 @@ class ExpressionNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'haxe' - property0: StringProperty(name='', default='') + property0: HaxeStringProperty('property0', name='', default='') def init(self, context): super(ExpressionNode, self).init(context) diff --git a/blender/arm/logicnode/native/LN_script.py b/blender/arm/logicnode/native/LN_script.py index d9cf4550..c308bfe6 100644 --- a/blender/arm/logicnode/native/LN_script.py +++ b/blender/arm/logicnode/native/LN_script.py @@ -15,7 +15,7 @@ class ScriptNode(ArmLogicTreeNode): return bpy.data.texts[self.property0_].as_string() if self.property0_ in bpy.data.texts else '' - property0_: StringProperty(name='Text', default='') + property0_: HaxeStringProperty('property0', name='Text', default='') def init(self, context): super(ScriptNode, self).init(context) diff --git a/blender/arm/logicnode/object/LN_get_object_child.py b/blender/arm/logicnode/object/LN_get_object_child.py index 40fcf310..be1b4de3 100644 --- a/blender/arm/logicnode/object/LN_get_object_child.py +++ b/blender/arm/logicnode/object/LN_get_object_child.py @@ -7,7 +7,8 @@ class GetChildNode(ArmLogicTreeNode): arm_section = 'relations' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('By Name', 'By Name', 'By Name'), ('Contains', 'Contains', 'Contains'), ('Starts With', 'Starts With', 'Starts With'), diff --git a/blender/arm/logicnode/object/LN_mesh.py b/blender/arm/logicnode/object/LN_mesh.py index 0d4b1f00..d68f2233 100644 --- a/blender/arm/logicnode/object/LN_mesh.py +++ b/blender/arm/logicnode/object/LN_mesh.py @@ -9,7 +9,7 @@ class MeshNode(ArmLogicTreeNode): bl_label = 'Mesh' arm_version = 1 - property0_get: PointerProperty(name='', type=bpy.types.Mesh) + property0_get: HaxePointerProperty('property0_get', name='', type=bpy.types.Mesh) def init(self, context): super(MeshNode, self).init(context) diff --git a/blender/arm/logicnode/object/LN_set_object_visible.py b/blender/arm/logicnode/object/LN_set_object_visible.py index 6fa99efb..76fe036f 100644 --- a/blender/arm/logicnode/object/LN_set_object_visible.py +++ b/blender/arm/logicnode/object/LN_set_object_visible.py @@ -9,7 +9,8 @@ class SetVisibleNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('object', 'Object', 'All object componenets visibility'), ('mesh', 'Mesh', 'Mesh visibility only'), ('shadow', 'Shadow', 'Shadow visibility only'), diff --git a/blender/arm/logicnode/object/LN_spawn_object_by_name.py b/blender/arm/logicnode/object/LN_spawn_object_by_name.py index 92faa105..970f0bd7 100644 --- a/blender/arm/logicnode/object/LN_spawn_object_by_name.py +++ b/blender/arm/logicnode/object/LN_spawn_object_by_name.py @@ -6,7 +6,8 @@ class SpawnObjectByNameNode(ArmLogicTreeNode): bl_label = 'Spawn Object By Name' arm_version = 1 - property0: PointerProperty( + property0: HaxePointerProperty( + 'property0', type=bpy.types.Scene, name='Scene', description='The scene from which to take the object') diff --git a/blender/arm/logicnode/physics/LN_Add_rigid_body.py b/blender/arm/logicnode/physics/LN_Add_rigid_body.py index 27deaa24..165668d2 100644 --- a/blender/arm/logicnode/physics/LN_Add_rigid_body.py +++ b/blender/arm/logicnode/physics/LN_Add_rigid_body.py @@ -59,18 +59,16 @@ class AddRigidBodyNode(ArmLogicTreeNode): further down.""" self.update_sockets(context) - @property - def property1(self): - return 'true' if self.property1_ else 'false' - - property1_: BoolProperty( + property1: HaxeBoolProperty( + 'property1', name="Advanced", description="Show advanced options", default=False, update=update_advanced ) - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Box', 'Box', 'Box'), ('Sphere', 'Sphere', 'Sphere'), ('Capsule', 'Capsule', 'Capsule'), @@ -122,5 +120,5 @@ class AddRigidBodyNode(ArmLogicTreeNode): def draw_buttons(self, context, layout): - layout.prop(self, "property1_") - layout.prop(self, 'property0') \ No newline at end of file + layout.prop(self, "property1") + layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/physics/LN_add_physics_constraint.py b/blender/arm/logicnode/physics/LN_add_physics_constraint.py index 039a536f..d472d9b9 100644 --- a/blender/arm/logicnode/physics/LN_add_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_add_physics_constraint.py @@ -124,7 +124,8 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): self['property0'] = value - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Fixed', 'Fixed', 'Fixed'), ('Point', 'Point', 'Point'), ('Hinge', 'Hinge', 'Hinge'), diff --git a/blender/arm/logicnode/physics/LN_on_contact.py b/blender/arm/logicnode/physics/LN_on_contact.py index 7daa4e86..a96feb01 100644 --- a/blender/arm/logicnode/physics/LN_on_contact.py +++ b/blender/arm/logicnode/physics/LN_on_contact.py @@ -16,7 +16,8 @@ class OnContactNode(ArmLogicTreeNode): arm_section = 'contact' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('begin', 'Begin', 'The contact between the rigid bodies begins'), ('overlap', 'Overlap', 'The contact between the rigid bodies is happening'), ('end', 'End', 'The contact between the rigid bodies ends')], diff --git a/blender/arm/logicnode/physics/LN_on_contact_array.py b/blender/arm/logicnode/physics/LN_on_contact_array.py index 1a300c2d..9a35acf1 100644 --- a/blender/arm/logicnode/physics/LN_on_contact_array.py +++ b/blender/arm/logicnode/physics/LN_on_contact_array.py @@ -7,7 +7,8 @@ class OnContactArrayNode(ArmLogicTreeNode): arm_section = 'contact' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('begin', 'Begin', 'The contact between the rigid bodies begins'), ('overlap', 'Overlap', 'The contact between the rigid bodies is happening'), ('end', 'End', 'The contact between the rigid bodies ends')], diff --git a/blender/arm/logicnode/physics/LN_on_volume_trigger.py b/blender/arm/logicnode/physics/LN_on_volume_trigger.py index 225aa301..614a7e8f 100644 --- a/blender/arm/logicnode/physics/LN_on_volume_trigger.py +++ b/blender/arm/logicnode/physics/LN_on_volume_trigger.py @@ -10,7 +10,8 @@ class OnVolumeTriggerNode(ArmLogicTreeNode): bl_label = 'On Volume Trigger' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('begin', 'Begin', 'The contact between the rigid bodies begins'), ('overlap', 'Overlap', 'The contact between the rigid bodies is happening'), ('end', 'End', 'The contact between the rigid bodies ends')], diff --git a/blender/arm/logicnode/physics/LN_physics_constraint.py b/blender/arm/logicnode/physics/LN_physics_constraint.py index 457f24ca..fd9dd667 100644 --- a/blender/arm/logicnode/physics/LN_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_physics_constraint.py @@ -26,32 +26,21 @@ class PhysicsConstraintNode(ArmLogicTreeNode): def update_spring(self, context): self.update_sockets(context) - property0: EnumProperty( - items = [('Linear', 'Linear', 'Linear'), - ('Angular', 'Angular', 'Angular')], + property0: HaxeEnumProperty( + 'property0', + items=[('Linear', 'Linear', 'Linear'), + ('Angular', 'Angular', 'Angular')], name='Type', default='Linear') - - @property - def property1(self): - if(self.property1_ == 'X'): - return 'X' - if(self.property1_ == 'Y'): - return 'Y' - if(self.property1_ == 'Z'): - return 'Z' - property1_: EnumProperty( - items = [('X', 'X', 'X'), - ('Y', 'Y', 'Y'), - ('Z', 'Z', 'Z')], + property1: HaxeEnumProperty( + 'property1', + items=[('X', 'X', 'X'), + ('Y', 'Y', 'Y'), + ('Z', 'Z', 'Z')], name='Axis', default='X') - @property - def property2(self): - if(self.property2_): - return 'true' if self.property2_ else 'false' - - property2_: BoolProperty( + property2: HaxeBoolProperty( + 'property2', name="Spring", description="Is a spring constraint", default=False, @@ -66,14 +55,13 @@ class PhysicsConstraintNode(ArmLogicTreeNode): self.add_input('NodeSocketFloat', 'Lower limit') self.add_input('NodeSocketFloat', 'Upper limit') self.add_output('NodeSocketShader', 'Constraint') - - def update_sockets(self, context): - while (len(self.inputs) > 0): + def update_sockets(self, context): + while len(self.inputs) > 0: self.inputs.remove(self.inputs.values()[-1]) # Add dynamic input sockets - if self.property2_: + if self.property2: self.add_input('NodeSocketFloat', 'Stiffness', 10.0) self.add_input('NodeSocketFloat', 'Damping', 0.5) else: @@ -82,6 +70,5 @@ class PhysicsConstraintNode(ArmLogicTreeNode): def draw_buttons(self, context, layout): layout.prop(self, 'property0') - layout.prop(self, 'property1_') - layout.prop(self, 'property2_') - + layout.prop(self, 'property1') + layout.prop(self, 'property2') diff --git a/blender/arm/logicnode/physics/LN_set_rb_activation_state.py b/blender/arm/logicnode/physics/LN_set_rb_activation_state.py index 0d193707..120ead99 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_activation_state.py +++ b/blender/arm/logicnode/physics/LN_set_rb_activation_state.py @@ -7,7 +7,8 @@ class SetActivationStateNode(ArmLogicTreeNode): bl_icon = 'NONE' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('inactive', 'Inactive', 'The rigid body simulation is deactivated'), ('active', 'Active', 'The rigid body simulation is activated'), ('always active', 'Always Active', 'The rigid body simulation is never deactivated'), diff --git a/blender/arm/logicnode/physics/LN_volume_trigger.py b/blender/arm/logicnode/physics/LN_volume_trigger.py index e9ba5bb1..240588aa 100644 --- a/blender/arm/logicnode/physics/LN_volume_trigger.py +++ b/blender/arm/logicnode/physics/LN_volume_trigger.py @@ -12,7 +12,8 @@ class VolumeTriggerNode(ArmLogicTreeNode): arm_section = 'misc' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('begin', 'Begin', 'The contact between the rigid bodies begins'), ('overlap', 'Overlap', 'The contact between the rigid bodies is happening'), ('end', 'End', 'The contact between the rigid bodies ends')], diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py index 14f4e895..ee3aaad5 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py @@ -32,7 +32,8 @@ class ColorgradingSetGlobalNode(ArmLogicTreeNode): arm_version = 1 # TODO: RRESET FILE OPTION FOR THE BELOW - property0 : EnumProperty( + property0 : HaxeEnumProperty( + 'property0', items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py index 2f34d316..64144b18 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py @@ -32,7 +32,8 @@ class ColorgradingSetHighlightNode(ArmLogicTreeNode): arm_version = 1 # TODO: RRESET FILE OPTION FOR THE BELOW - property0 : EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py index 5b1c31e6..0845c625 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py @@ -32,7 +32,8 @@ class ColorgradingSetMidtoneNode(ArmLogicTreeNode): arm_version = 1 # TODO: RRESET FILE OPTION FOR THE BELOW - property0 : EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py index b014cff4..b32f64e7 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py @@ -32,7 +32,8 @@ class ColorgradingSetShadowNode(ArmLogicTreeNode): arm_version = 1 # TODO: RRESET FILE OPTION FOR THE BELOW - property0 : EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) diff --git a/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py b/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py index 52022aa4..0578c2d8 100644 --- a/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py @@ -5,7 +5,8 @@ class RpMSAANode(ArmLogicTreeNode): bl_idname = 'LNRpMSAANode' bl_label = 'Set MSAA Quality' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('1', '1', '1'), ('2', '2', '2'), ('4', '4', '4'), diff --git a/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py b/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py index a93d3f9e..e7b6e31e 100644 --- a/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py @@ -5,7 +5,8 @@ class RpConfigNode(ArmLogicTreeNode): bl_idname = 'LNRpConfigNode' bl_label = 'Set Post Process Quality' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('SSGI', 'SSGI', 'SSGI'), ('SSR', 'SSR', 'SSR'), ('Bloom', 'Bloom', 'Bloom'), diff --git a/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py b/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py index 676e6994..cf34577e 100644 --- a/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py +++ b/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py @@ -21,7 +21,8 @@ class SetShaderUniformNode(ArmLogicTreeNode): elif self.property0 in ('vec2', 'vec3', 'vec4'): self.add_input('NodeSocketVector', 'Vector') - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('int', 'int', 'int'), ('float', 'float', 'float'), ('vec2', 'vec2', 'vec2'), diff --git a/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py b/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py index ba42ac3a..0d26e950 100644 --- a/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py @@ -5,7 +5,8 @@ class RpShadowQualityNode(ArmLogicTreeNode): bl_idname = 'LNRpShadowQualityNode' bl_label = 'Set Shadows Quality' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('High', 'High', 'High'), ('Medium', 'Medium', 'Medium'), ('Low', 'Low', 'Low') diff --git a/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py b/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py index f102f21c..375b76e2 100644 --- a/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py @@ -5,7 +5,8 @@ class RpSuperSampleNode(ArmLogicTreeNode): bl_idname = 'LNRpSuperSampleNode' bl_label = 'Set SSAA Quality' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('1', '1', '1'), ('1.5', '1.5', '1.5'), ('2', '2', '2'), diff --git a/blender/arm/logicnode/scene/LN_collection.py b/blender/arm/logicnode/scene/LN_collection.py index 54442f2f..ce4e952c 100644 --- a/blender/arm/logicnode/scene/LN_collection.py +++ b/blender/arm/logicnode/scene/LN_collection.py @@ -12,7 +12,7 @@ class GroupNode(ArmLogicTreeNode): arm_section = 'collection' arm_version = 1 - property0: PointerProperty(name='', type=bpy.types.Collection) + property0: HaxePointerProperty('property0', name='', type=bpy.types.Collection) def init(self, context): super(GroupNode, self).init(context) diff --git a/blender/arm/logicnode/scene/LN_scene.py b/blender/arm/logicnode/scene/LN_scene.py index 29f68205..4131608a 100644 --- a/blender/arm/logicnode/scene/LN_scene.py +++ b/blender/arm/logicnode/scene/LN_scene.py @@ -9,7 +9,7 @@ class SceneNode(ArmLogicTreeNode): bl_label = 'Scene' arm_version = 1 - property0_get: PointerProperty(name='', type=bpy.types.Scene) + property0_get: HaxePointerProperty('property0_get', name='', type=bpy.types.Scene) def init(self, context): super(SceneNode, self).init(context) diff --git a/blender/arm/logicnode/scene/LN_spawn_collection.py b/blender/arm/logicnode/scene/LN_spawn_collection.py index b8d6caaf..12e995e9 100644 --- a/blender/arm/logicnode/scene/LN_spawn_collection.py +++ b/blender/arm/logicnode/scene/LN_spawn_collection.py @@ -28,7 +28,7 @@ class SpawnCollectionNode(ArmLogicTreeNode): arm_section = 'collection' arm_version = 1 - property0: PointerProperty(name='Collection', type=bpy.types.Collection) + property0: HaxePointerProperty('property0', name='Collection', type=bpy.types.Collection) def init(self, context): super(SpawnCollectionNode, self).init(context) diff --git a/blender/arm/logicnode/sound/LN_play_sound.py b/blender/arm/logicnode/sound/LN_play_sound.py index f87838ea..ac72729d 100644 --- a/blender/arm/logicnode/sound/LN_play_sound.py +++ b/blender/arm/logicnode/sound/LN_play_sound.py @@ -31,25 +31,30 @@ class PlaySoundNode(ArmLogicTreeNode): bl_width_default = 200 arm_version = 1 - property0: PointerProperty(name='', type=bpy.types.Sound) - property1: BoolProperty( + property0: HaxePointerProperty('property0', name='', type=bpy.types.Sound) + property1: HaxeBoolProperty( + 'property1', name='Loop', description='Play the sound in a loop', default=False) - property2: BoolProperty( + property2: HaxeBoolProperty( + 'property2', name='Retrigger', description='Play the sound from the beginning every time', default=False) - property3: BoolProperty( + property3: HaxeBoolProperty( + 'property3', name='Use Custom Sample Rate', description='If enabled, override the default sample rate', default=False) - property4: IntProperty( + property4: HaxeIntProperty( + 'property4', name='Sample Rate', description='Set the sample rate used to play this sound', default=44100, min=0) - property5: BoolProperty( + property5: HaxeBoolProperty( + 'property5', name='Stream', description='Stream the sound from disk', default=False diff --git a/blender/arm/logicnode/string/LN_string_case.py b/blender/arm/logicnode/string/LN_string_case.py index 30f8f276..64d35ae1 100644 --- a/blender/arm/logicnode/string/LN_string_case.py +++ b/blender/arm/logicnode/string/LN_string_case.py @@ -5,7 +5,8 @@ class CaseStringNode(ArmLogicTreeNode): bl_idname = 'LNCaseStringNode' bl_label = 'String Case' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Upper Case', 'Upper Case', 'Upper Case'), ('Lower Case', 'Lower Case', 'Lower Case'), ], diff --git a/blender/arm/logicnode/string/LN_string_contains.py b/blender/arm/logicnode/string/LN_string_contains.py index 1f99961a..dafe546f 100644 --- a/blender/arm/logicnode/string/LN_string_contains.py +++ b/blender/arm/logicnode/string/LN_string_contains.py @@ -5,7 +5,8 @@ class ContainsStringNode(ArmLogicTreeNode): bl_idname = 'LNContainsStringNode' bl_label = 'String Contains' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Contains', 'Contains', 'Contains'), ('Starts With', 'Starts With', 'Starts With'), ('Ends With', 'Ends With', 'Ends With'), diff --git a/blender/arm/logicnode/trait/LN_trait.py b/blender/arm/logicnode/trait/LN_trait.py index bcec41c0..b572923f 100644 --- a/blender/arm/logicnode/trait/LN_trait.py +++ b/blender/arm/logicnode/trait/LN_trait.py @@ -8,7 +8,7 @@ class TraitNode(ArmLogicTreeNode): bl_label = 'Trait' arm_version = 1 - property0: StringProperty(name='', default='') + property0: HaxeStringProperty('property0', name='', default='') def init(self, context): super(TraitNode, self).init(context) diff --git a/blender/arm/logicnode/transform/LN_get_world_orientation.py b/blender/arm/logicnode/transform/LN_get_world_orientation.py index 3ba71b5b..7efce5b3 100644 --- a/blender/arm/logicnode/transform/LN_get_world_orientation.py +++ b/blender/arm/logicnode/transform/LN_get_world_orientation.py @@ -7,7 +7,8 @@ class GetWorldNode(ArmLogicTreeNode): arm_section = 'rotation' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Right', 'Right', 'The object right (X) direction'), ('Look', 'Look', 'The object look (Y) direction'), ('Up', 'Up', 'The object up (Z) direction')], diff --git a/blender/arm/logicnode/transform/LN_look_at.py b/blender/arm/logicnode/transform/LN_look_at.py index b1bdc31a..0d276883 100644 --- a/blender/arm/logicnode/transform/LN_look_at.py +++ b/blender/arm/logicnode/transform/LN_look_at.py @@ -7,7 +7,8 @@ class LookAtNode(ArmLogicTreeNode): arm_section = 'rotation' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('X', ' X', 'X'), ('-X', '-X', '-X'), ('Y', ' Y', 'Y'), diff --git a/blender/arm/logicnode/transform/LN_rotate_object.py b/blender/arm/logicnode/transform/LN_rotate_object.py index 7b21abb4..29f2c39e 100644 --- a/blender/arm/logicnode/transform/LN_rotate_object.py +++ b/blender/arm/logicnode/transform/LN_rotate_object.py @@ -40,10 +40,11 @@ class RotateObjectNode(ArmLogicTreeNode): else: layout.prop(self, 'property0') - property0: EnumProperty( - items = [('Euler Angles', 'Euler Angles', 'Euler Angles'), - ('Angle Axies (Radians)', 'Angle Axies (Radians)', 'Angle Axies (Radians)'), - ('Angle Axies (Degrees)', 'Angle Axies (Degrees)', 'Angle Axies (Degrees)'), - ('Quaternion', 'Quaternion', 'Quaternion')], + property0: HaxeEnumProperty( + 'property0', + items=[('Euler Angles', 'Euler Angles', 'Euler Angles'), + ('Angle Axies (Radians)', 'Angle Axies (Radians)', 'Angle Axies (Radians)'), + ('Angle Axies (Degrees)', 'Angle Axies (Degrees)', 'Angle Axies (Degrees)'), + ('Quaternion', 'Quaternion', 'Quaternion')], name='', default='Euler Angles', - update = on_property_update) + update=on_property_update) diff --git a/blender/arm/logicnode/transform/LN_set_object_rotation.py b/blender/arm/logicnode/transform/LN_set_object_rotation.py index 4a59e161..b9c38a45 100644 --- a/blender/arm/logicnode/transform/LN_set_object_rotation.py +++ b/blender/arm/logicnode/transform/LN_set_object_rotation.py @@ -33,7 +33,8 @@ class SetRotationNode(ArmLogicTreeNode): def draw_buttons(self, context, layout): layout.prop(self, 'property0') - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Euler Angles', 'Euler Angles', 'Euler Angles'), ('Angle Axies (Radians)', 'Angle Axies (Radians)', 'Angle Axies (Radians)'), ('Angle Axies (Degrees)', 'Angle Axies (Degrees)', 'Angle Axies (Degrees)'), diff --git a/blender/arm/logicnode/transform/LN_transform_to_vector.py b/blender/arm/logicnode/transform/LN_transform_to_vector.py index bb70185c..9fbc6c3d 100644 --- a/blender/arm/logicnode/transform/LN_transform_to_vector.py +++ b/blender/arm/logicnode/transform/LN_transform_to_vector.py @@ -31,7 +31,8 @@ class VectorFromTransformNode(ArmLogicTreeNode): def draw_buttons(self, context, layout): layout.prop(self, 'property0') - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('Right', 'Right', 'The transform right (X) direction'), ('Look', 'Look', 'The transform look (Y) direction'), ('Up', 'Up', 'The transform up (Z) direction'), diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index 289bb6b0..eef667fe 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -158,26 +158,9 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: f.write(f'\t\tthis.nodes["{name[1:]}"] = {name};\n') # Properties - for i in range(0, 10): - prop_name = 'property' + str(i) + '_get' - prop_found = hasattr(node, prop_name) - if not prop_found: - prop_name = 'property' + str(i) - prop_found = hasattr(node, prop_name) - if prop_found: - prop = getattr(node, prop_name) - if isinstance(prop, str): - prop = '"' + str(prop) + '"' - elif isinstance(prop, bool): - prop = str(prop).lower() - elif hasattr(prop, 'name'): # PointerProperty - prop = '"' + str(prop.name) + '"' - else: - if prop is None: - prop = 'null' - else: - prop = str(prop) - f.write('\t\t' + name + '.property' + str(i) + ' = ' + prop + ';\n') + for prop_name in arm.node_utils.get_haxe_property_names(node): + prop = arm.node_utils.haxe_format_prop(node, prop_name) + f.write('\t\t' + name + '.' + prop_name + ' = ' + prop + ';\n') # Create inputs for inp in node.inputs: @@ -284,23 +267,16 @@ def build_default_node(inp: bpy.types.NodeSocket): if is_custom_socket: # ArmCustomSockets need to implement get_default_value() - default_value = inp.get_default_value() - if isinstance(default_value, str): - default_value = '"{:s}"'.format(default_value.replace('"', '\\"') ) + default_value = arm.node_utils.haxe_format_socket_val(inp.get_default_value()) inp_type = inp.arm_socket_type # any custom socket's `type` is "VALUE". might as well have valuable type information for custom nodes as well. else: if hasattr(inp, 'default_value'): default_value = inp.default_value else: default_value = None - if isinstance(default_value, str): - default_value = '"{:s}"'.format(default_value.replace('"', '\\"') ) + default_value = arm.node_utils.haxe_format_socket_val(default_value) inp_type = inp.type - # Don't write 'None' into the Haxe code - if default_value is None: - default_value = 'null' - if inp_type == 'VECTOR': return f'new armory.logicnode.VectorNode(this, {default_value[0]}, {default_value[1]}, {default_value[2]})' elif inp_type == 'RGBA': diff --git a/blender/arm/node_utils.py b/blender/arm/node_utils.py index 5cee6346..e501707f 100755 --- a/blender/arm/node_utils.py +++ b/blender/arm/node_utils.py @@ -1,4 +1,4 @@ -from typing import Type, Union +from typing import Any, Generator, Type, Union import bpy from bpy.types import NodeSocket, NodeInputs, NodeOutputs @@ -83,6 +83,50 @@ def get_export_node_name(node: bpy.types.Node) -> str: return '_' + arm.utils.safesrc(node.name) +def get_haxe_property_names(node: bpy.types.Node) -> Generator[str, None, None]: + """Generator that yields the names of all node properties that have + a counterpart in the node's Haxe class. + """ + for i in range(0, 10): + prop_name = f'property{i}_get' + prop_found = hasattr(node, prop_name) + if not prop_found: + prop_name = f'property{i}' + prop_found = hasattr(node, prop_name) + if prop_found: + yield prop_name + + +def haxe_format_socket_val(socket_val: Any) -> str: + """Formats a socket value to be valid Haxe syntax.""" + if isinstance(socket_val, str): + socket_val = '"{:s}"'.format(socket_val.replace('"', '\\"')) + + elif socket_val is None: + # Don't write 'None' into the Haxe code + socket_val = 'null' + + return socket_val + + +def haxe_format_prop(node: bpy.types.Node, prop_name: str) -> str: + """Formats a property value to be valid Haxe syntax.""" + prop_value = getattr(node, prop_name) + if isinstance(prop_value, str): + prop_value = '"' + str(prop_value) + '"' + elif isinstance(prop_value, bool): + prop_value = str(prop_value).lower() + elif hasattr(prop_value, 'name'): # PointerProperty + prop_value = '"' + str(prop_value.name) + '"' + else: + if prop_value is None: + prop_value = 'null' + else: + prop_value = str(prop_value) + + return prop_value + + def nodetype_to_nodeitem(node_type: Type[bpy.types.Node]) -> NodeItem: """Create a NodeItem from a given node class.""" # Internal node types seem to have no bl_idname attribute From b2153dbcd2008e3656619f688d46eb973af6920b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 3 Jul 2021 19:45:35 +0200 Subject: [PATCH 10/45] Cleanup --- .../arm/logicnode/math/LN_math_expression.py | 22 +++++++++---------- .../arm/logicnode/math/LN_quaternion_math.py | 6 ++--- .../LN_set_debug_console_settings.py | 8 +++---- .../logicnode/physics/LN_Add_rigid_body.py | 18 +++++++-------- .../physics/LN_add_physics_constraint.py | 18 +++++++-------- .../physics/LN_physics_constraint.py | 3 ++- .../logicnode/transform/LN_rotate_object.py | 2 +- 7 files changed, 39 insertions(+), 38 deletions(-) diff --git a/blender/arm/logicnode/math/LN_math_expression.py b/blender/arm/logicnode/math/LN_math_expression.py index 923b6aee..125d3e77 100644 --- a/blender/arm/logicnode/math/LN_math_expression.py +++ b/blender/arm/logicnode/math/LN_math_expression.py @@ -8,15 +8,15 @@ class MathExpressionNode(ArmLogicTreeNode): arm_version = 1 min_inputs = 2 max_inputs = 10 - + @staticmethod def get_variable_name(index): return { - 0: 'a', - 1: 'b', - 2: 'c', - 3: 'd', - 4: 'e', + 0: 'a', + 1: 'b', + 2: 'c', + 3: 'd', + 4: 'e', 5: 'x', 6: 'y', 7: 'h', @@ -27,7 +27,7 @@ class MathExpressionNode(ArmLogicTreeNode): @staticmethod def get_clear_exp(value): return re.sub(r'[\-\+\*\/\(\)\^\%abcdexyhik0123456789. ]', '', value).strip() - + @staticmethod def get_invalid_characters(value): value = value.replace(' ', '') @@ -70,7 +70,7 @@ class MathExpressionNode(ArmLogicTreeNode): return False return True - @staticmethod + @staticmethod def matches(line, opendelim='(', closedelim=')'): stack = [] for m in re.finditer(r'[{}{}]'.format(opendelim, closedelim), line): @@ -92,7 +92,7 @@ class MathExpressionNode(ArmLogicTreeNode): if len(stack) > 0: for pos in stack: yield (False, 0, 0, 0) - + @staticmethod def isPartCorrect(s): if len(s.replace('p', '').replace(' ', '').split()) == 0: @@ -151,7 +151,7 @@ class MathExpressionNode(ArmLogicTreeNode): elif not self.isCorrect(self, value.replace(' ', '')): val_error = True self.set_exp_error(val_error) - + def get_exp(self): return self.get('property0', 'a + b') @@ -187,4 +187,4 @@ class MathExpressionNode(ArmLogicTreeNode): op = column.operator('arm.node_remove_input', text='', icon='X', emboss=True) op.node_index = str(id(self)) if len(self.inputs) == 2: - column.enabled = False \ No newline at end of file + column.enabled = False diff --git a/blender/arm/logicnode/math/LN_quaternion_math.py b/blender/arm/logicnode/math/LN_quaternion_math.py index 093b8c83..bcaa7753 100644 --- a/blender/arm/logicnode/math/LN_quaternion_math.py +++ b/blender/arm/logicnode/math/LN_quaternion_math.py @@ -84,7 +84,7 @@ class QuaternionMathNode(ArmLogicTreeNode): self.inputs.remove(self.inputs.values()[-1]) if (select_prev == 'DotProduct') or (select_prev == 'ToAxisAngle') or (select_prev == 'Module'): self.outputs.remove(self.outputs.values()[-1]) - + # Many arguments: Add, Subtract, DotProduct, Multiply, MultiplyFloat if (self.get_count_in(select_current) == 0): if (select_current == "MultiplyFloats"): @@ -95,7 +95,7 @@ class QuaternionMathNode(ArmLogicTreeNode): self.add_input('NodeSocketVector', 'Quaternion ' + str(len(self.inputs))) if (select_current == 'DotProduct'): self.add_output('NodeSocketFloat', 'Scalar') - + # 3 arguments: Lerp, Slerp, FromAxisAngle, FromEuler if (self.get_count_in(select_current) == 3): if (select_current == 'Lerp') or (select_current == 'Slerp'): @@ -111,7 +111,7 @@ class QuaternionMathNode(ArmLogicTreeNode): self.add_input('NodeSocketFloat', 'X') self.add_input('NodeSocketFloat', 'Y') self.add_input('NodeSocketFloat', 'Z') - + # 2 arguments: FromTo, FromMat, FromRotationMat, ToAxisAngle if (self.get_count_in(select_current) == 2): if (select_current == 'FromTo'): diff --git a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py index 24f8d485..2a02a150 100644 --- a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py +++ b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py @@ -13,11 +13,11 @@ class SetDebugConsoleSettings(ArmLogicTreeNode): ('right', 'Anchor Right', 'Anchor the debug console in the top right')], name='', default='right') - def init(self, context): - super(SetDebugConsoleSettings, self).init(context) + def init(self, context): + super(SetDebugConsoleSettings, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Visible') - self.add_input('NodeSocketFloat', 'Scale') + self.add_input('NodeSocketBool', 'Visible') + self.add_input('NodeSocketFloat', 'Scale') self.inputs[-1].default_value = 1.0 self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_Add_rigid_body.py b/blender/arm/logicnode/physics/LN_Add_rigid_body.py index 165668d2..13fbea61 100644 --- a/blender/arm/logicnode/physics/LN_Add_rigid_body.py +++ b/blender/arm/logicnode/physics/LN_Add_rigid_body.py @@ -1,12 +1,12 @@ from arm.logicnode.arm_nodes import * class AddRigidBodyNode(ArmLogicTreeNode): - """Adds a rigid body to an object if not already present. + """Adds a rigid body to an object if not already present. @option Advanced: Shows optional advanced options for rigid body. @option Shape: Shape of the rigid body including Box, Sphere, Capsule, Cone, Cylinder, Convex Hull and Mesh - + @input Object: Object to which rigid body is added. @input Mass: Mass of the rigid body. Must be > 0. @@ -14,9 +14,9 @@ class AddRigidBodyNode(ArmLogicTreeNode): @input Active: Rigid body actively participates in the physics world and will be affected by collisions @input Animated: Rigid body follows animation and will affect other active non-animated rigid bodies. - - @input Trigger: Rigid body behaves as a trigger and detects collision. However, rigd body does not contribute to or receive collissions. - + + @input Trigger: Rigid body behaves as a trigger and detects collision. However, rigd body does not contribute to or receive collissions. + @input Friction: Surface friction of the rigid body. Minimum value = 0, Preferred max value = 1. @input Bounciness: How elastic is the surface of the rigid body. Minimum value = 0, Preferred max value = 1. @@ -34,7 +34,7 @@ class AddRigidBodyNode(ArmLogicTreeNode): @input Use Deactivation: Deactive this rigid body when below the Linear and Angular velocity threshold. Enable to improve performance. @input Linear Velocity Threshold: Velocity below which decativation occurs if enabled. - + @input Angular Velocity Threshold: Velocity below which decativation occurs if enabled. @input Collision Group: A set of rigid bodies that can interact with each other @@ -43,9 +43,9 @@ class AddRigidBodyNode(ArmLogicTreeNode): @output Rigid body: Object to which rigid body was added. - @output Out: activated after rigid body is added. + @output Out: activated after rigid body is added. """ - + bl_idname = 'LNAddRigidBodyNode' bl_label = 'Add Rigid Body' arm_version = 1 @@ -80,7 +80,7 @@ class AddRigidBodyNode(ArmLogicTreeNode): def init(self, context): super(AddRigidBodyNode, self).init(context) - + self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('NodeSocketFloat', 'Mass', 1.0) diff --git a/blender/arm/logicnode/physics/LN_add_physics_constraint.py b/blender/arm/logicnode/physics/LN_add_physics_constraint.py index d472d9b9..f8537fa9 100644 --- a/blender/arm/logicnode/physics/LN_add_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_add_physics_constraint.py @@ -3,11 +3,11 @@ from arm.logicnode.arm_nodes import * class AddPhysicsConstraintNode(ArmLogicTreeNode): """ Add a physics constraint to constrain two rigid bodies if not already present. - + @option Fixed: No fredom of movement. Relative positions and rotations of rigid bodies are fixed @option Point: Both rigid bodies are constrained at the pivot object. - + @option Hinge: Constrained objects can move only along angular Z axis of the pivot object. @option Slider: Constrained objects can move only along linear X axis of the pivot object. @@ -57,15 +57,15 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): @staticmethod def get_count_in(type_name): return { - 'Fixed': 0, - 'Point': 1, - 'Hinge': 2, + 'Fixed': 0, + 'Point': 1, + 'Hinge': 2, 'Slider': 3, - 'Piston': 4, + 'Piston': 4, 'Generic Spring': 5 }.get(type_name, 0) - def get_enum(self): + def get_enum(self): return self.get('property0', 0) def set_enum(self, value): @@ -133,7 +133,7 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): ('Piston', 'Piston', 'Piston'), ('Generic Spring', 'Generic Spring', 'Generic Spring')], name='Type', default='Fixed', set=set_enum, get=get_enum) - + def __init__(self): array_nodes[str(id(self))] = self @@ -150,7 +150,7 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): def draw_buttons(self, context, layout): layout.prop(self, 'property0') - + #GenericSpring: if (self.get_count_in(self.property0) == 5): grid0 = layout.grid_flow(row_major=True, columns=1, align=True) diff --git a/blender/arm/logicnode/physics/LN_physics_constraint.py b/blender/arm/logicnode/physics/LN_physics_constraint.py index fd9dd667..28dd0f6f 100644 --- a/blender/arm/logicnode/physics/LN_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_physics_constraint.py @@ -1,5 +1,6 @@ from arm.logicnode.arm_nodes import * + class PhysicsConstraintNode(ArmLogicTreeNode): """ Custom physics constraint to add to `Add Physics Constarint` node. @@ -46,7 +47,7 @@ class PhysicsConstraintNode(ArmLogicTreeNode): default=False, update=update_spring ) - + def __init__(self): array_nodes[str(id(self))] = self diff --git a/blender/arm/logicnode/transform/LN_rotate_object.py b/blender/arm/logicnode/transform/LN_rotate_object.py index 29f2c39e..66cc6498 100644 --- a/blender/arm/logicnode/transform/LN_rotate_object.py +++ b/blender/arm/logicnode/transform/LN_rotate_object.py @@ -28,7 +28,7 @@ class RotateObjectNode(ArmLogicTreeNode): self.inputs[2].name = "Axis" self.inputs[3].name = "Angle" else: - raise ValueError('No nodesocket labels for current input mode: check self-consistancy of action_set_rotation.py') + raise ValueError('No nodesocket labels for current input mode: check self-consistancy of LN_rotate_object.py') def draw_buttons(self, context, layout): # this block is here to ensure backwards compatibility and warn the user. From 4e19ddfeb0c2678eb590f3f6f8d67e671206c865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 3 Jul 2021 19:47:09 +0200 Subject: [PATCH 11/45] Do not send live patch events if live patch isn't running --- blender/arm/live_patch.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index ce9f8f50..c9a89c9e 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -19,6 +19,9 @@ patch_id = 0 # Any object can act as a message bus owner msgbus_owner = object() +# Whether live patch is currently active +__running = False + def start(): """Start the live patch session.""" @@ -34,9 +37,15 @@ def start(): listen(light_type, "color", "light_color") listen(light_type, "energy", "light_energy") + global __running + __running = True + def stop(): """Stop the live patch session.""" + global __running + __running = False + log.debug("Live patch session stopped") bpy.msgbus.clear_by_owner(msgbus_owner) @@ -103,6 +112,9 @@ def listen(rna_type: Type[bpy.types.bpy_struct], prop: str, event_id: str): def send_event(event_id: str, opt_data: Any = None): """Send the result of the given event to Krom.""" + if not __running: + return + if hasattr(bpy.context, 'object') and bpy.context.object is not None: obj = bpy.context.object.name @@ -186,6 +198,8 @@ def on_operator(operator_id: str): (*) https://developer.blender.org/T72109 """ + if not __running: + return # Don't re-export the scene for the following operators if operator_id in ("VIEW3D_OT_select", "OUTLINER_OT_item_activate", "OBJECT_OT_editmode_toggle", "NODE_OT_select", "NODE_OT_translate_attach_remove_on_cancel"): return From a6ec652d5f3ba14d46b07665365e027b15d4cb56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 3 Jul 2021 22:49:19 +0200 Subject: [PATCH 12/45] Fix identity node replacement for Blender 2.93 --- blender/arm/logicnode/replacement.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/blender/arm/logicnode/replacement.py b/blender/arm/logicnode/replacement.py index d062a7bc..99585f13 100644 --- a/blender/arm/logicnode/replacement.py +++ b/blender/arm/logicnode/replacement.py @@ -61,28 +61,27 @@ class NodeReplacement: """ in_socks = {i: i for i in range(len(node.inputs))} out_socks = {i: i for i in range(len(node.outputs))} - props = {} - i = 0 - # finding all the properties fo a node is not possible in a clean way for now. - # so, I'll assume their names start with "property", and list all the node's attributes that fulfill that condition. - # next, to check that those are indeed properties (in the blender sense), we need to check the class's type annotations. - # those annotations are not even instances of bpy.types.Property, but tuples, with the first element being a function accessible at bpy.props.XXXProperty - property_types = [] - for possible_prop_type in dir(bpy.props): - if possible_prop_type.endswith('Property'): - property_types.append(getattr(bpy.props, possible_prop_type)) + # Find all properties for this node + props = {} possible_properties = [] for attrname in dir(node): + # We assume that property names start with 'property' if attrname.startswith('property'): possible_properties.append(attrname) + for attrname in possible_properties: + # Search in type annotations if attrname not in node.__annotations__: continue - if not isinstance(node.__annotations__[attrname], tuple): + + # Properties must be annotated with '_PropertyDeferred', see + # https://developer.blender.org/rB37e6a1995ac7eeabd5b6a56621ad5a850dae4149 + # and https://developer.blender.org/rBc44c611c6d8c6ae071b48efb5fc07168f18cd17e + if not isinstance(node.__annotations__[attrname], bpy.props._PropertyDeferred): continue - if node.__annotations__[attrname][0] in property_types: - props[attrname] = attrname + + props[attrname] = attrname return NodeReplacement( node.bl_idname, node.arm_version, node.bl_idname, type(node).arm_version, From 96aa0ee890cc5c7e71853534dd828168b3c33299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 10 Jul 2021 21:46:44 +0200 Subject: [PATCH 13/45] Use custom sockets for default data types This allows to listen for socket updates for the live patch system --- .../logicnode/animation/LN_blend_action.py | 2 +- blender/arm/logicnode/animation/LN_bone_fk.py | 4 +- blender/arm/logicnode/animation/LN_bone_ik.py | 4 +- .../animation/LN_get_action_state.py | 6 +- .../animation/LN_get_tilesheet_state.py | 6 +- .../animation/LN_on_action_marker.py | 2 +- .../animation/LN_play_action_from.py | 8 +- .../logicnode/animation/LN_play_tilesheet.py | 2 +- .../animation/LN_set_action_paused.py | 2 +- .../animation/LN_set_action_speed.py | 2 +- .../logicnode/animation/LN_set_parent_bone.py | 2 +- .../animation/LN_set_particle_speed.py | 2 +- .../animation/LN_set_tilesheet_paused.py | 2 +- blender/arm/logicnode/arm_nodes.py | 21 +- blender/arm/logicnode/arm_sockets.py | 198 ++++++++++++++++-- blender/arm/logicnode/array/LN_array.py | 4 +- blender/arm/logicnode/array/LN_array_add.py | 8 +- .../arm/logicnode/array/LN_array_boolean.py | 4 +- blender/arm/logicnode/array/LN_array_color.py | 4 +- .../arm/logicnode/array/LN_array_contains.py | 4 +- blender/arm/logicnode/array/LN_array_float.py | 4 +- blender/arm/logicnode/array/LN_array_get.py | 4 +- .../arm/logicnode/array/LN_array_integer.py | 4 +- .../arm/logicnode/array/LN_array_length.py | 2 +- .../arm/logicnode/array/LN_array_loop_node.py | 4 +- .../arm/logicnode/array/LN_array_object.py | 2 +- blender/arm/logicnode/array/LN_array_pop.py | 2 +- .../array/LN_array_remove_by_index.py | 4 +- .../array/LN_array_remove_by_value.py | 6 +- blender/arm/logicnode/array/LN_array_set.py | 4 +- blender/arm/logicnode/array/LN_array_shift.py | 2 +- blender/arm/logicnode/array/LN_array_slice.py | 4 +- .../arm/logicnode/array/LN_array_splice.py | 4 +- .../arm/logicnode/array/LN_array_string.py | 4 +- .../arm/logicnode/array/LN_array_vector.py | 4 +- .../arm/logicnode/camera/LN_get_camera_fov.py | 2 +- .../arm/logicnode/camera/LN_set_camera_fov.py | 2 +- .../canvas/LN_get_canvas_checkbox.py | 4 +- .../canvas/LN_get_canvas_input_text.py | 4 +- .../canvas/LN_get_canvas_location.py | 6 +- .../canvas/LN_get_canvas_position.py | 4 +- .../canvas/LN_get_canvas_progress_bar.py | 6 +- .../canvas/LN_get_canvas_rotation.py | 4 +- .../logicnode/canvas/LN_get_canvas_scale.py | 6 +- .../logicnode/canvas/LN_get_canvas_slider.py | 4 +- .../logicnode/canvas/LN_get_canvas_visible.py | 4 +- .../logicnode/canvas/LN_on_canvas_element.py | 2 +- .../logicnode/canvas/LN_set_canvas_asset.py | 4 +- .../canvas/LN_set_canvas_checkbox.py | 4 +- .../canvas/LN_set_canvas_location.py | 6 +- .../canvas/LN_set_canvas_progress_bar.py | 6 +- .../canvas/LN_set_canvas_rotation.py | 4 +- .../logicnode/canvas/LN_set_canvas_scale.py | 6 +- .../logicnode/canvas/LN_set_canvas_slider.py | 4 +- .../logicnode/canvas/LN_set_canvas_text.py | 4 +- .../canvas/LN_set_canvas_text_color.py | 10 +- .../logicnode/canvas/LN_set_canvas_visible.py | 4 +- .../logicnode/deprecated/LN_get_mouse_lock.py | 2 +- .../deprecated/LN_get_mouse_visible.py | 2 +- .../logicnode/deprecated/LN_mouse_coords.py | 6 +- .../arm/logicnode/deprecated/LN_on_gamepad.py | 2 +- .../logicnode/deprecated/LN_pause_trait.py | 2 +- .../logicnode/deprecated/LN_play_action.py | 2 +- .../logicnode/deprecated/LN_resume_trait.py | 2 +- .../LN_rotate_object_around_axis.py | 4 +- .../logicnode/deprecated/LN_scale_object.py | 2 +- .../logicnode/deprecated/LN_set_mouse_lock.py | 2 +- .../deprecated/LN_set_mouse_visible.py | 2 +- .../deprecated/LN_set_object_material.py | 2 +- .../logicnode/deprecated/LN_surface_coords.py | 4 +- blender/arm/logicnode/event/LN_on_timer.py | 4 +- .../event/LN_send_event_to_object.py | 2 +- .../logicnode/event/LN_send_global_event.py | 2 +- blender/arm/logicnode/input/LN_gamepad.py | 4 +- .../arm/logicnode/input/LN_gamepad_coords.py | 14 +- .../logicnode/input/LN_get_cursor_location.py | 8 +- .../logicnode/input/LN_get_cursor_state.py | 6 +- .../logicnode/input/LN_get_mouse_movement.py | 18 +- .../logicnode/input/LN_get_touch_location.py | 8 +- .../logicnode/input/LN_get_touch_movement.py | 12 +- blender/arm/logicnode/input/LN_keyboard.py | 2 +- blender/arm/logicnode/input/LN_mouse.py | 2 +- blender/arm/logicnode/input/LN_on_swipe.py | 20 +- .../arm/logicnode/input/LN_on_tap_screen.py | 10 +- .../arm/logicnode/input/LN_sensor_coords.py | 2 +- .../logicnode/input/LN_set_cursor_state.py | 2 +- blender/arm/logicnode/input/LN_touch.py | 2 +- .../arm/logicnode/input/LN_virtual_button.py | 2 +- .../arm/logicnode/light/LN_set_light_color.py | 2 +- .../logicnode/light/LN_set_light_strength.py | 2 +- blender/arm/logicnode/logic/LN_branch.py | 2 +- .../arm/logicnode/logic/LN_call_function.py | 8 +- blender/arm/logicnode/logic/LN_function.py | 2 +- .../arm/logicnode/logic/LN_function_output.py | 2 +- blender/arm/logicnode/logic/LN_gate.py | 6 +- .../arm/logicnode/logic/LN_invert_boolean.py | 4 +- blender/arm/logicnode/logic/LN_is_false.py | 2 +- blender/arm/logicnode/logic/LN_is_not_null.py | 2 +- blender/arm/logicnode/logic/LN_is_null.py | 2 +- blender/arm/logicnode/logic/LN_is_true.py | 2 +- blender/arm/logicnode/logic/LN_loop.py | 6 +- blender/arm/logicnode/logic/LN_null.py | 2 +- .../logicnode/logic/LN_output_to_boolean.py | 2 +- .../arm/logicnode/logic/LN_switch_output.py | 4 +- .../arm/logicnode/logic/LN_value_changed.py | 2 +- blender/arm/logicnode/logic/LN_while_true.py | 2 +- .../material/LN_get_object_material.py | 4 +- blender/arm/logicnode/material/LN_material.py | 2 +- .../material/LN_set_material_image_param.py | 6 +- .../material/LN_set_material_rgb_param.py | 6 +- .../material/LN_set_material_value_param.py | 6 +- .../material/LN_set_object_material_slot.py | 4 +- blender/arm/logicnode/math/LN_clamp.py | 8 +- blender/arm/logicnode/math/LN_compare.py | 8 +- blender/arm/logicnode/math/LN_deg_to_rad.py | 4 +- blender/arm/logicnode/math/LN_map_range.py | 12 +- blender/arm/logicnode/math/LN_math.py | 12 +- .../arm/logicnode/math/LN_math_expression.py | 8 +- blender/arm/logicnode/math/LN_matrix_math.py | 6 +- blender/arm/logicnode/math/LN_mix.py | 8 +- blender/arm/logicnode/math/LN_mix_vector.py | 8 +- .../arm/logicnode/math/LN_quaternion_math.py | 74 +++---- blender/arm/logicnode/math/LN_rad_to_deg.py | 4 +- .../math/LN_screen_to_world_space.py | 24 +-- .../logicnode/math/LN_separate_quaternion.py | 10 +- blender/arm/logicnode/math/LN_separate_rgb.py | 8 +- blender/arm/logicnode/math/LN_separate_xyz.py | 8 +- blender/arm/logicnode/math/LN_vector_clamp.py | 8 +- blender/arm/logicnode/math/LN_vector_math.py | 40 ++-- .../math/LN_world_to_screen_space.py | 4 +- .../miscellaneous/LN_boolean_to_vector.py | 14 +- .../miscellaneous/LN_default_if_null.py | 6 +- .../miscellaneous/LN_get_application_time.py | 4 +- .../LN_get_debug_console_settings.py | 6 +- .../LN_get_display_resolution.py | 4 +- .../arm/logicnode/miscellaneous/LN_get_fps.py | 2 +- .../miscellaneous/LN_get_window_resolution.py | 4 +- .../LN_set_debug_console_settings.py | 4 +- .../miscellaneous/LN_set_time_scale.py | 2 +- .../arm/logicnode/miscellaneous/LN_sleep.py | 2 +- .../arm/logicnode/miscellaneous/LN_timer.py | 14 +- .../logicnode/native/LN_call_haxe_static.py | 4 +- .../native/LN_detect_mobile_browser.py | 2 +- blender/arm/logicnode/native/LN_expression.py | 2 +- .../logicnode/native/LN_get_haxe_property.py | 6 +- .../native/LN_get_system_language.py | 2 +- .../logicnode/native/LN_get_system_name.py | 12 +- blender/arm/logicnode/native/LN_loadUrl.py | 2 +- blender/arm/logicnode/native/LN_print.py | 2 +- blender/arm/logicnode/native/LN_read_file.py | 6 +- blender/arm/logicnode/native/LN_read_json.py | 6 +- .../arm/logicnode/native/LN_read_storage.py | 6 +- blender/arm/logicnode/native/LN_script.py | 2 +- .../logicnode/native/LN_set_haxe_property.py | 6 +- .../arm/logicnode/native/LN_set_vibrate.py | 2 +- blender/arm/logicnode/native/LN_write_file.py | 4 +- blender/arm/logicnode/native/LN_write_json.py | 4 +- .../arm/logicnode/native/LN_write_storage.py | 4 +- .../logicnode/navmesh/LN_go_to_location.py | 2 +- .../navmesh/LN_navigable_location.py | 2 +- .../navmesh/LN_pick_navmesh_location.py | 4 +- .../arm/logicnode/object/LN_get_distance.py | 2 +- .../logicnode/object/LN_get_object_by_name.py | 2 +- .../logicnode/object/LN_get_object_child.py | 2 +- .../logicnode/object/LN_get_object_mesh.py | 2 +- .../logicnode/object/LN_get_object_name.py | 2 +- .../object/LN_get_object_offscreen.py | 6 +- .../object/LN_get_object_property.py | 6 +- .../logicnode/object/LN_get_object_visible.py | 6 +- blender/arm/logicnode/object/LN_mesh.py | 2 +- .../object/LN_remove_object_parent.py | 2 +- .../logicnode/object/LN_set_object_mesh.py | 2 +- .../logicnode/object/LN_set_object_name.py | 2 +- .../object/LN_set_object_property.py | 4 +- .../logicnode/object/LN_set_object_visible.py | 4 +- .../arm/logicnode/object/LN_spawn_object.py | 4 +- .../object/LN_spawn_object_by_name.py | 6 +- .../logicnode/physics/LN_Add_rigid_body.py | 32 +-- .../physics/LN_add_physics_constraint.py | 32 +-- .../arm/logicnode/physics/LN_apply_force.py | 4 +- .../physics/LN_apply_force_at_location.py | 8 +- .../arm/logicnode/physics/LN_apply_impulse.py | 4 +- .../physics/LN_apply_impulse_at_location.py | 8 +- .../arm/logicnode/physics/LN_apply_torque.py | 4 +- .../physics/LN_apply_torque_impulse.py | 4 +- .../arm/logicnode/physics/LN_get_rb_data.py | 28 +-- .../logicnode/physics/LN_get_rb_velocity.py | 8 +- .../logicnode/physics/LN_get_world_gravity.py | 2 +- .../arm/logicnode/physics/LN_has_contact.py | 2 +- .../logicnode/physics/LN_has_contact_array.py | 2 +- .../physics/LN_physics_constraint.py | 14 +- blender/arm/logicnode/physics/LN_pick_rb.py | 6 +- blender/arm/logicnode/physics/LN_ray_cast.py | 10 +- .../logicnode/physics/LN_set_rb_friction.py | 2 +- .../physics/LN_set_rb_gravity_enabled.py | 2 +- .../logicnode/physics/LN_set_rb_velocity.py | 8 +- .../logicnode/physics/LN_set_world_gravity.py | 2 +- .../logicnode/physics/LN_volume_trigger.py | 2 +- .../LN_colorgrading_get_global_node.py | 14 +- .../LN_colorgrading_get_highlight_node.py | 12 +- .../LN_colorgrading_get_midtone_node.py | 10 +- .../LN_colorgrading_get_shadow_node.py | 12 +- .../LN_colorgrading_set_global_node.py | 28 +-- .../LN_colorgrading_set_highlight_node.py | 24 +-- .../LN_colorgrading_set_midtone_node.py | 22 +- .../LN_colorgrading_set_shadow_node.py | 24 +-- .../postprocess/LN_get_bloom_settings.py | 6 +- .../postprocess/LN_get_ca_settings.py | 4 +- .../postprocess/LN_get_camera_post_process.py | 20 +- .../LN_get_lenstexture_settings.py | 10 +- .../postprocess/LN_get_ssao_settings.py | 6 +- .../postprocess/LN_get_ssr_settings.py | 10 +- .../postprocess/LN_lenstexture_set.py | 10 +- .../postprocess/LN_set_bloom_settings.py | 6 +- .../postprocess/LN_set_ca_settings.py | 4 +- .../postprocess/LN_set_camera_post_process.py | 22 +- .../postprocess/LN_set_ssao_settings.py | 6 +- .../postprocess/LN_set_ssr_settings.py | 10 +- .../arm/logicnode/random/LN_random_boolean.py | 2 +- .../arm/logicnode/random/LN_random_choice.py | 2 +- .../arm/logicnode/random/LN_random_color.py | 2 +- .../arm/logicnode/random/LN_random_float.py | 8 +- .../arm/logicnode/random/LN_random_integer.py | 6 +- .../arm/logicnode/random/LN_random_vector.py | 6 +- .../renderpath/LN_set_post_process_quality.py | 2 +- .../renderpath/LN_set_shader_uniform.py | 10 +- blender/arm/logicnode/replacement.py | 77 +++++++ .../logicnode/scene/LN_create_collection.py | 2 +- .../arm/logicnode/scene/LN_get_collection.py | 2 +- .../logicnode/scene/LN_get_scene_active.py | 2 +- .../logicnode/scene/LN_remove_collection.py | 2 +- blender/arm/logicnode/scene/LN_scene.py | 2 +- .../logicnode/scene/LN_set_scene_active.py | 2 +- .../logicnode/scene/LN_spawn_collection.py | 2 +- blender/arm/logicnode/scene/LN_spawn_scene.py | 4 +- .../logicnode/string/LN_concatenate_string.py | 6 +- .../arm/logicnode/string/LN_parse_float.py | 4 +- .../arm/logicnode/string/LN_split_string.py | 4 +- blender/arm/logicnode/string/LN_string.py | 4 +- .../arm/logicnode/string/LN_string_case.py | 4 +- .../logicnode/string/LN_string_contains.py | 6 +- .../arm/logicnode/string/LN_string_length.py | 4 +- blender/arm/logicnode/string/LN_sub_string.py | 8 +- .../logicnode/trait/LN_add_trait_to_object.py | 2 +- .../logicnode/trait/LN_get_object_trait.py | 4 +- .../arm/logicnode/trait/LN_get_trait_name.py | 6 +- .../logicnode/trait/LN_get_trait_paused.py | 4 +- .../arm/logicnode/trait/LN_remove_trait.py | 2 +- blender/arm/logicnode/trait/LN_self_trait.py | 2 +- .../logicnode/trait/LN_set_trait_paused.py | 4 +- blender/arm/logicnode/trait/LN_trait.py | 2 +- .../transform/LN_append_transform.py | 2 +- .../transform/LN_get_object_location.py | 2 +- .../transform/LN_get_object_rotation.py | 12 +- .../transform/LN_get_object_scale.py | 2 +- .../transform/LN_get_object_transform.py | 2 +- .../transform/LN_get_world_orientation.py | 2 +- blender/arm/logicnode/transform/LN_look_at.py | 6 +- .../logicnode/transform/LN_rotate_object.py | 4 +- .../transform/LN_separate_transform.py | 8 +- .../transform/LN_set_object_location.py | 2 +- .../transform/LN_set_object_rotation.py | 4 +- .../transform/LN_set_object_scale.py | 2 +- .../transform/LN_set_object_transform.py | 2 +- .../arm/logicnode/transform/LN_transform.py | 8 +- .../logicnode/transform/LN_transform_math.py | 6 +- .../transform/LN_transform_to_vector.py | 8 +- .../transform/LN_translate_object.py | 4 +- .../transform/LN_translate_on_local_axis.py | 6 +- .../LN_vector_to_object_orientation.py | 4 +- .../LN_world_vector_to_local_space.py | 4 +- blender/arm/logicnode/variable/LN_boolean.py | 4 +- blender/arm/logicnode/variable/LN_color.py | 4 +- blender/arm/logicnode/variable/LN_dynamic.py | 2 +- blender/arm/logicnode/variable/LN_float.py | 4 +- blender/arm/logicnode/variable/LN_integer.py | 4 +- blender/arm/logicnode/variable/LN_mask.py | 4 +- .../arm/logicnode/variable/LN_quaternion.py | 14 +- .../arm/logicnode/variable/LN_set_variable.py | 4 +- blender/arm/logicnode/variable/LN_vector.py | 8 +- blender/arm/node_utils.py | 25 +++ blender/arm/nodes_logic.py | 2 +- blender/arm/props.py | 17 +- blender/arm/utils.py | 4 + 284 files changed, 1122 insertions(+), 834 deletions(-) diff --git a/blender/arm/logicnode/animation/LN_blend_action.py b/blender/arm/logicnode/animation/LN_blend_action.py index 087301e2..0d98d693 100644 --- a/blender/arm/logicnode/animation/LN_blend_action.py +++ b/blender/arm/logicnode/animation/LN_blend_action.py @@ -12,6 +12,6 @@ class BlendActionNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketAnimAction', 'Action 1') self.add_input('ArmNodeSocketAnimAction', 'Action 2') - self.add_input('NodeSocketFloat', 'Factor', default_value = 0.5) + self.add_input('ArmFloatSocket', 'Factor', default_value = 0.5) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_bone_fk.py b/blender/arm/logicnode/animation/LN_bone_fk.py index e5aceff7..58f59910 100644 --- a/blender/arm/logicnode/animation/LN_bone_fk.py +++ b/blender/arm/logicnode/animation/LN_bone_fk.py @@ -11,7 +11,7 @@ class BoneFKNode(ArmLogicTreeNode): super(BoneFKNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Bone') - self.add_input('NodeSocketShader', 'Transform') + self.add_input('ArmStringSocket', 'Bone') + self.add_input('ArmDynamicSocket', 'Transform') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_bone_ik.py b/blender/arm/logicnode/animation/LN_bone_ik.py index dd155015..00577537 100644 --- a/blender/arm/logicnode/animation/LN_bone_ik.py +++ b/blender/arm/logicnode/animation/LN_bone_ik.py @@ -11,7 +11,7 @@ class BoneIKNode(ArmLogicTreeNode): super(BoneIKNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Bone') - self.add_input('NodeSocketVector', 'Goal') + self.add_input('ArmStringSocket', 'Bone') + self.add_input('ArmVectorSocket', 'Goal') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_get_action_state.py b/blender/arm/logicnode/animation/LN_get_action_state.py index d2c9f804..51e2d130 100644 --- a/blender/arm/logicnode/animation/LN_get_action_state.py +++ b/blender/arm/logicnode/animation/LN_get_action_state.py @@ -10,6 +10,6 @@ class AnimationStateNode(ArmLogicTreeNode): super(AnimationStateNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketString', 'Action') - self.add_output('NodeSocketInt', 'Frame') - self.add_output('NodeSocketBool', 'Is Paused') + self.add_output('ArmStringSocket', 'Action') + self.add_output('ArmIntSocket', 'Frame') + self.add_output('ArmBoolSocket', 'Is Paused') diff --git a/blender/arm/logicnode/animation/LN_get_tilesheet_state.py b/blender/arm/logicnode/animation/LN_get_tilesheet_state.py index b32e7d25..dadf0888 100644 --- a/blender/arm/logicnode/animation/LN_get_tilesheet_state.py +++ b/blender/arm/logicnode/animation/LN_get_tilesheet_state.py @@ -11,6 +11,6 @@ class GetTilesheetStateNode(ArmLogicTreeNode): super(GetTilesheetStateNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketString', 'Name') - self.add_output('NodeSocketInt', 'Frame') - self.add_output('NodeSocketBool', 'Is Paused') + self.add_output('ArmStringSocket', 'Name') + self.add_output('ArmIntSocket', 'Frame') + self.add_output('ArmBoolSocket', 'Is Paused') diff --git a/blender/arm/logicnode/animation/LN_on_action_marker.py b/blender/arm/logicnode/animation/LN_on_action_marker.py index a935015b..c26abc19 100644 --- a/blender/arm/logicnode/animation/LN_on_action_marker.py +++ b/blender/arm/logicnode/animation/LN_on_action_marker.py @@ -9,6 +9,6 @@ class OnActionMarkerNode(ArmLogicTreeNode): def init(self, context): super(OnActionMarkerNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Marker') + self.add_input('ArmStringSocket', 'Marker') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_play_action_from.py b/blender/arm/logicnode/animation/LN_play_action_from.py index b28221c1..732a7c40 100644 --- a/blender/arm/logicnode/animation/LN_play_action_from.py +++ b/blender/arm/logicnode/animation/LN_play_action_from.py @@ -11,10 +11,10 @@ class PlayActionFromNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketAnimAction', 'Action') - self.add_input('NodeSocketInt', 'Start Frame') - self.add_input('NodeSocketFloat', 'Blend', default_value = 0.25) - self.add_input('NodeSocketFloat', 'Speed', default_value = 1.0) - self.add_input('NodeSocketBool', 'Loop', default_value = False) + self.add_input('ArmIntSocket', 'Start Frame') + self.add_input('ArmFloatSocket', 'Blend', default_value = 0.25) + self.add_input('ArmFloatSocket', 'Speed', default_value = 1.0) + self.add_input('ArmBoolSocket', 'Loop', default_value = False) self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketAction', 'Done') diff --git a/blender/arm/logicnode/animation/LN_play_tilesheet.py b/blender/arm/logicnode/animation/LN_play_tilesheet.py index 533231d8..4af5d10a 100644 --- a/blender/arm/logicnode/animation/LN_play_tilesheet.py +++ b/blender/arm/logicnode/animation/LN_play_tilesheet.py @@ -11,7 +11,7 @@ class PlayTilesheetNode(ArmLogicTreeNode): super(PlayTilesheetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Name') + self.add_input('ArmStringSocket', 'Name') self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketAction', 'Done') diff --git a/blender/arm/logicnode/animation/LN_set_action_paused.py b/blender/arm/logicnode/animation/LN_set_action_paused.py index 6bdb5535..8df9b9ce 100644 --- a/blender/arm/logicnode/animation/LN_set_action_paused.py +++ b/blender/arm/logicnode/animation/LN_set_action_paused.py @@ -10,6 +10,6 @@ class SetActionPausedNode(ArmLogicTreeNode): super(SetActionPausedNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketBool', 'Paused') + self.add_input('ArmBoolSocket', 'Paused') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_set_action_speed.py b/blender/arm/logicnode/animation/LN_set_action_speed.py index c01fdd00..9a011883 100644 --- a/blender/arm/logicnode/animation/LN_set_action_speed.py +++ b/blender/arm/logicnode/animation/LN_set_action_speed.py @@ -10,6 +10,6 @@ class SetActionSpeedNode(ArmLogicTreeNode): super(SetActionSpeedNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketFloat', 'Speed', default_value=1.0) + self.add_input('ArmFloatSocket', 'Speed', default_value=1.0) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_set_parent_bone.py b/blender/arm/logicnode/animation/LN_set_parent_bone.py index fb954610..dc40384b 100644 --- a/blender/arm/logicnode/animation/LN_set_parent_bone.py +++ b/blender/arm/logicnode/animation/LN_set_parent_bone.py @@ -12,6 +12,6 @@ class SetParentBoneNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketObject', 'Parent', default_value='Parent') - self.add_input('NodeSocketString', 'Bone', default_value='Bone') + self.add_input('ArmStringSocket', 'Bone', default_value='Bone') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_set_particle_speed.py b/blender/arm/logicnode/animation/LN_set_particle_speed.py index 272a11f3..d4e614bd 100644 --- a/blender/arm/logicnode/animation/LN_set_particle_speed.py +++ b/blender/arm/logicnode/animation/LN_set_particle_speed.py @@ -10,6 +10,6 @@ class SetParticleSpeedNode(ArmLogicTreeNode): super(SetParticleSpeedNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketFloat', 'Speed', default_value=1.0) + self.add_input('ArmFloatSocket', 'Speed', default_value=1.0) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py b/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py index 06322ad7..ef7f954a 100644 --- a/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py +++ b/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py @@ -11,6 +11,6 @@ class SetTilesheetPausedNode(ArmLogicTreeNode): super(SetTilesheetPausedNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketBool', 'Paused') + self.add_input('ArmBoolSocket', 'Paused') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index 152901c3..7c929f31 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -61,6 +61,9 @@ class ArmLogicTreeNode(bpy.types.Node): """ 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): + pass + def insert_link(self, link: bpy.types.NodeLink): """Called on *both* nodes when a link between two nodes is created.""" arm.live_patch.send_event('ln_insert_link', (self, link)) @@ -132,7 +135,7 @@ class ArmNodeAddInputButton(bpy.types.Operator): bl_options = {'UNDO', 'INTERNAL'} node_index: StringProperty(name='Node Index', default='') - socket_type: StringProperty(name='Socket Type', default='NodeSocketShader') + socket_type: StringProperty(name='Socket Type', default='ArmDynamicSocket') name_format: StringProperty(name='Name Format', default='Input {0}') index_name_offset: IntProperty(name='Index Name Offset', default=0) @@ -143,7 +146,7 @@ class ArmNodeAddInputButton(bpy.types.Operator): # Reset to default again for subsequent calls of this operator self.node_index = '' - self.socket_type = 'NodeSocketShader' + self.socket_type = 'ArmDynamicSocket' self.name_format = 'Input {0}' self.index_name_offset = 0 @@ -155,7 +158,7 @@ class ArmNodeAddInputValueButton(bpy.types.Operator): bl_label = 'Add Input' bl_options = {'UNDO', 'INTERNAL'} node_index: StringProperty(name='Node Index', default='') - socket_type: StringProperty(name='Socket Type', default='NodeSocketShader') + socket_type: StringProperty(name='Socket Type', default='ArmDynamicSocket') def execute(self, context): global array_nodes @@ -202,7 +205,7 @@ class ArmNodeAddOutputButton(bpy.types.Operator): bl_options = {'UNDO', 'INTERNAL'} node_index: StringProperty(name='Node Index', default='') - socket_type: StringProperty(name='Socket Type', default='NodeSocketShader') + socket_type: StringProperty(name='Socket Type', default='ArmDynamicSocket') name_format: StringProperty(name='Name Format', default='Output {0}') index_name_offset: IntProperty(name='Index Name Offset', default=0) @@ -213,7 +216,7 @@ class ArmNodeAddOutputButton(bpy.types.Operator): # Reset to default again for subsequent calls of this operator self.node_index = '' - self.socket_type = 'NodeSocketShader' + self.socket_type = 'ArmDynamicSocket' self.name_format = 'Output {0}' self.index_name_offset = 0 @@ -242,8 +245,8 @@ class ArmNodeAddInputOutputButton(bpy.types.Operator): bl_options = {'UNDO', 'INTERNAL'} node_index: StringProperty(name='Node Index', default='') - in_socket_type: StringProperty(name='In Socket Type', default='NodeSocketShader') - out_socket_type: StringProperty(name='Out Socket Type', default='NodeSocketShader') + in_socket_type: StringProperty(name='In Socket Type', default='ArmDynamicSocket') + out_socket_type: StringProperty(name='Out Socket Type', default='ArmDynamicSocket') in_name_format: StringProperty(name='In Name Format', default='Input {0}') out_name_format: StringProperty(name='Out Name Format', default='Output {0}') in_index_name_offset: IntProperty(name='Index Name Offset', default=0) @@ -258,8 +261,8 @@ class ArmNodeAddInputOutputButton(bpy.types.Operator): # Reset to default again for subsequent calls of this operator self.node_index = '' - self.in_socket_type = 'NodeSocketShader' - self.out_socket_type = 'NodeSocketShader' + self.in_socket_type = 'ArmDynamicSocket' + self.out_socket_type = 'ArmDynamicSocket' self.in_name_format = 'Input {0}' self.out_name_format = 'Output {0}' self.in_index_name_offset = 0 diff --git a/blender/arm/logicnode/arm_sockets.py b/blender/arm/logicnode/arm_sockets.py index 91f98476..58f2ea70 100644 --- a/blender/arm/logicnode/arm_sockets.py +++ b/blender/arm/logicnode/arm_sockets.py @@ -1,10 +1,14 @@ import bpy -from bpy.props import PointerProperty +from bpy.props import * from bpy.types import NodeSocket import arm.utils +def _on_update_socket(self, context): + self.node.on_socket_val_update(context, self) + + class ArmCustomSocket(NodeSocket): """ A custom socket that can be used to define more socket types for @@ -41,7 +45,7 @@ class ArmAnimActionSocket(ArmCustomSocket): arm_socket_type = 'STRING' default_value_get: PointerProperty(name='Action', type=bpy.types.Action) # legacy version of the line after this one - default_value_raw: PointerProperty(name='Action', type=bpy.types.Action) + default_value_raw: PointerProperty(name='Action', type=bpy.types.Action, update=_on_update_socket) def __init__(self): super().__init__() @@ -81,13 +85,114 @@ class ArmArraySocket(ArmCustomSocket): return 0.8, 0.4, 0.0, 1 +class ArmBoolSocket(ArmCustomSocket): + bl_idname = 'ArmBoolSocket' + bl_label = 'Boolean Socket' + arm_socket_type = 'BOOLEAN' + + default_value_raw: BoolProperty( + name='Value', + description='Input value used for unconnected socket', + update=_on_update_socket + ) + + def draw(self, context, layout, node, text): + draw_socket_layout(self, layout) + + def draw_color(self, context, node): + return 0.8, 0.651, 0.839, 1 + + def get_default_value(self): + return self.default_value_raw + + +class ArmColorSocket(ArmCustomSocket): + bl_idname = 'ArmColorSocket' + bl_label = 'Color Socket' + arm_socket_type = 'RGBA' + + default_value_raw: FloatVectorProperty( + name='Value', + size=4, + subtype='COLOR', + min=0.0, + max=1.0, + description='Input value used for unconnected socket', + update=_on_update_socket + ) + + def draw(self, context, layout, node, text): + draw_socket_layout(self, layout) + + def draw_color(self, context, node): + return 0.78, 0.78, 0.161, 1 + + def get_default_value(self): + return self.default_value_raw + + +class ArmDynamicSocket(ArmCustomSocket): + bl_idname = 'ArmDynamicSocket' + bl_label = 'Dynamic Socket' + arm_socket_type = 'NONE' + + def draw(self, context, layout, node, text): + layout.label(text=self.name) + + def draw_color(self, context, node): + return 0.388, 0.78, 0.388, 1 + + +class ArmFloatSocket(ArmCustomSocket): + bl_idname = 'ArmFloatSocket' + bl_label = 'Float Socket' + arm_socket_type = 'VALUE' + + default_value_raw: FloatProperty( + name='Value', + description='Input value used for unconnected socket', + precision=3, + update=_on_update_socket + ) + + def draw(self, context, layout, node, text): + draw_socket_layout(self, layout) + + def draw_color(self, context, node): + return 0.631, 0.631, 0.631, 1 + + def get_default_value(self): + return self.default_value_raw + + +class ArmIntSocket(ArmCustomSocket): + bl_idname = 'ArmIntSocket' + bl_label = 'Integer Socket' + arm_socket_type = 'INT' + + default_value_raw: IntProperty( + name='Value', + description='Input value used for unconnected socket', + update=_on_update_socket + ) + + def draw(self, context, layout, node, text): + draw_socket_layout(self, layout) + + def draw_color(self, context, node): + return 0.059, 0.522, 0.149, 1 + + def get_default_value(self): + return self.default_value_raw + + class ArmObjectSocket(ArmCustomSocket): bl_idname = 'ArmNodeSocketObject' bl_label = 'Object Socket' arm_socket_type = 'OBJECT' default_value_get: PointerProperty(name='Object', type=bpy.types.Object) # legacy version of the line after this one - default_value_raw: PointerProperty(name='Object', type=bpy.types.Object) + default_value_raw: PointerProperty(name='Object', type=bpy.types.Object, update=_on_update_socket) def __init__(self): super().__init__() @@ -115,15 +220,82 @@ class ArmObjectSocket(ArmCustomSocket): return 0.15, 0.55, 0.75, 1 -def register(): - bpy.utils.register_class(ArmActionSocket) - bpy.utils.register_class(ArmAnimActionSocket) - bpy.utils.register_class(ArmArraySocket) - bpy.utils.register_class(ArmObjectSocket) +class ArmStringSocket(ArmCustomSocket): + bl_idname = 'ArmStringSocket' + bl_label = 'String Socket' + arm_socket_type = 'STRING' + + default_value_raw: StringProperty( + name='Value', + description='Input value used for unconnected socket', + update=_on_update_socket + ) + + def draw(self, context, layout, node, text): + draw_socket_layout_split(self, layout) + + def draw_color(self, context, node): + return 0.439, 0.698, 1, 1 + + def get_default_value(self): + return self.default_value_raw -def unregister(): - bpy.utils.unregister_class(ArmObjectSocket) - bpy.utils.unregister_class(ArmArraySocket) - bpy.utils.unregister_class(ArmAnimActionSocket) - bpy.utils.unregister_class(ArmActionSocket) +class ArmVectorSocket(ArmCustomSocket): + bl_idname = 'ArmVectorSocket' + bl_label = 'Vector Socket' + arm_socket_type = 'VECTOR' + + default_value_raw: FloatVectorProperty( + name='Value', + size=3, + description='Input value used for unconnected socket', + update=_on_update_socket + ) + + def draw(self, context, layout, node, text): + if not self.is_output and not self.is_linked: + col = layout.column(align=True) + col.prop(self, 'default_value_raw', text='') + else: + layout.label(text=self.name) + + def draw_color(self, context, node): + return 0.388, 0.388, 0.78, 1 + + def get_default_value(self): + return self.default_value_raw + + +def draw_socket_layout(socket: bpy.types.NodeSocket, layout: bpy.types.UILayout, prop_name='default_value_raw'): + if not socket.is_output and not socket.is_linked: + layout.prop(socket, prop_name, text=socket.name) + else: + layout.label(text=socket.name) + + +def draw_socket_layout_split(socket: bpy.types.NodeSocket, layout: bpy.types.UILayout, prop_name='default_value_raw'): + if not socket.is_output and not socket.is_linked: + # Blender layouts use 0.4 splits + layout = layout.split(factor=0.4, align=True) + + layout.label(text=socket.name) + + if not socket.is_output and not socket.is_linked: + layout.prop(socket, prop_name, text='') + + +REG_CLASSES = ( + ArmActionSocket, + ArmAnimActionSocket, + ArmArraySocket, + ArmBoolSocket, + ArmColorSocket, + ArmDynamicSocket, + ArmFloatSocket, + ArmIntSocket, + ArmObjectSocket, + ArmStringSocket, + ArmVectorSocket, +) +register, unregister = bpy.utils.register_classes_factory(REG_CLASSES) diff --git a/blender/arm/logicnode/array/LN_array.py b/blender/arm/logicnode/array/LN_array.py index cb5cb451..39326e79 100644 --- a/blender/arm/logicnode/array/LN_array.py +++ b/blender/arm/logicnode/array/LN_array.py @@ -13,14 +13,14 @@ class ArrayNode(ArmLogicTreeNode): def init(self, context): super(ArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array', is_var=True) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketShader' + op.socket_type = 'ArmDynamicSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_add.py b/blender/arm/logicnode/array/LN_array_add.py index 3bd708ea..acbc5959 100644 --- a/blender/arm/logicnode/array/LN_array_add.py +++ b/blender/arm/logicnode/array/LN_array_add.py @@ -19,9 +19,9 @@ class ArrayAddNode(ArmLogicTreeNode): super(ArrayAddNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketBool', 'Modify Original', default_value=True) - self.add_input('NodeSocketBool', 'Unique Values') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmBoolSocket', 'Modify Original', default_value=True) + self.add_input('ArmBoolSocket', 'Unique Values') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketArray', 'Array') @@ -31,6 +31,6 @@ class ArrayAddNode(ArmLogicTreeNode): op = row.operator('arm.node_add_input_value', text='Add Input', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketShader' + op.socket_type = 'ArmDynamicSocket' op2 = row.operator('arm.node_remove_input_value', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_boolean.py b/blender/arm/logicnode/array/LN_array_boolean.py index 6794a57e..ae355b09 100644 --- a/blender/arm/logicnode/array/LN_array_boolean.py +++ b/blender/arm/logicnode/array/LN_array_boolean.py @@ -14,14 +14,14 @@ class BooleanArrayNode(ArmLogicTreeNode): def init(self, context): super(BooleanArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array', is_var=True) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketBool' + op.socket_type = 'ArmBoolSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_color.py b/blender/arm/logicnode/array/LN_array_color.py index f2066440..f569245a 100644 --- a/blender/arm/logicnode/array/LN_array_color.py +++ b/blender/arm/logicnode/array/LN_array_color.py @@ -14,14 +14,14 @@ class ColorArrayNode(ArmLogicTreeNode): def init(self, context): super(ColorArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array', is_var=True) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketColor' + op.socket_type = 'ArmColorSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_contains.py b/blender/arm/logicnode/array/LN_array_contains.py index a9a3e463..b0a2bc53 100644 --- a/blender/arm/logicnode/array/LN_array_contains.py +++ b/blender/arm/logicnode/array/LN_array_contains.py @@ -9,6 +9,6 @@ class ArrayContainsNode(ArmLogicTreeNode): def init(self, context): super(ArrayContainsNode, self).init(context) self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') - self.add_output('NodeSocketBool', 'Contains') + self.add_output('ArmBoolSocket', 'Contains') diff --git a/blender/arm/logicnode/array/LN_array_float.py b/blender/arm/logicnode/array/LN_array_float.py index 1eeaf132..22e2019b 100644 --- a/blender/arm/logicnode/array/LN_array_float.py +++ b/blender/arm/logicnode/array/LN_array_float.py @@ -14,14 +14,14 @@ class FloatArrayNode(ArmLogicTreeNode): def init(self, context): super(FloatArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array', is_var=True) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketFloat' + op.socket_type = 'ArmFloatSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_get.py b/blender/arm/logicnode/array/LN_array_get.py index 2ccfe176..bda50633 100644 --- a/blender/arm/logicnode/array/LN_array_get.py +++ b/blender/arm/logicnode/array/LN_array_get.py @@ -9,6 +9,6 @@ class ArrayGetNode(ArmLogicTreeNode): def init(self, context): super(ArrayGetNode, self).init(context) self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketInt', 'Index') + self.add_input('ArmIntSocket', 'Index') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_integer.py b/blender/arm/logicnode/array/LN_array_integer.py index 5e6cb2f1..f4e0aab8 100644 --- a/blender/arm/logicnode/array/LN_array_integer.py +++ b/blender/arm/logicnode/array/LN_array_integer.py @@ -14,14 +14,14 @@ class IntegerArrayNode(ArmLogicTreeNode): def init(self, context): super(IntegerArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array') - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketInt' + op.socket_type = 'ArmIntSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_length.py b/blender/arm/logicnode/array/LN_array_length.py index b6666533..c655ac86 100644 --- a/blender/arm/logicnode/array/LN_array_length.py +++ b/blender/arm/logicnode/array/LN_array_length.py @@ -10,4 +10,4 @@ class ArrayLengthNode(ArmLogicTreeNode): super(ArrayLengthNode, self).init(context) self.add_input('ArmNodeSocketArray', 'Array') - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_loop_node.py b/blender/arm/logicnode/array/LN_array_loop_node.py index 1e791989..18207c8e 100644 --- a/blender/arm/logicnode/array/LN_array_loop_node.py +++ b/blender/arm/logicnode/array/LN_array_loop_node.py @@ -13,6 +13,6 @@ class ArrayLoopNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketArray', 'Array') self.add_output('ArmNodeSocketAction', 'Loop') - self.add_output('NodeSocketShader', 'Value') - self.add_output('NodeSocketInt', 'Index') + self.add_output('ArmDynamicSocket', 'Value') + self.add_output('ArmIntSocket', 'Index') self.add_output('ArmNodeSocketAction', 'Done') diff --git a/blender/arm/logicnode/array/LN_array_object.py b/blender/arm/logicnode/array/LN_array_object.py index 8328ebc7..71c55d89 100644 --- a/blender/arm/logicnode/array/LN_array_object.py +++ b/blender/arm/logicnode/array/LN_array_object.py @@ -14,7 +14,7 @@ class ObjectArrayNode(ArmLogicTreeNode): def init(self, context): super(ObjectArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array', is_var=True) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) diff --git a/blender/arm/logicnode/array/LN_array_pop.py b/blender/arm/logicnode/array/LN_array_pop.py index 8bd93a8d..9708b343 100644 --- a/blender/arm/logicnode/array/LN_array_pop.py +++ b/blender/arm/logicnode/array/LN_array_pop.py @@ -12,4 +12,4 @@ class ArrayPopNode(ArmLogicTreeNode): super(ArrayPopNode, self).init(context) self.add_input('ArmNodeSocketArray', 'Array') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_remove_by_index.py b/blender/arm/logicnode/array/LN_array_remove_by_index.py index 9a81760b..a07c864c 100644 --- a/blender/arm/logicnode/array/LN_array_remove_by_index.py +++ b/blender/arm/logicnode/array/LN_array_remove_by_index.py @@ -12,7 +12,7 @@ class ArrayRemoveIndexNode(ArmLogicTreeNode): super(ArrayRemoveIndexNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketInt', 'Index') + self.add_input('ArmIntSocket', 'Index') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_remove_by_value.py b/blender/arm/logicnode/array/LN_array_remove_by_value.py index f7634ea7..8ab646fd 100644 --- a/blender/arm/logicnode/array/LN_array_remove_by_value.py +++ b/blender/arm/logicnode/array/LN_array_remove_by_value.py @@ -15,16 +15,16 @@ class ArrayRemoveValueNode(ArmLogicTreeNode): super(ArrayRemoveValueNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') # def draw_buttons(self, context, layout): # row = layout.row(align=True) # op = row.operator('arm.node_add_input_value', text='New', icon='PLUS', emboss=True) # op.node_index = str(id(self)) - # op.socket_type = 'NodeSocketShader' + # op.socket_type = 'ArmDynamicSocket' # op2 = row.operator('arm.node_remove_input_value', text='', icon='X', emboss=True) # op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_set.py b/blender/arm/logicnode/array/LN_array_set.py index 7c1f0197..c0fb2293 100644 --- a/blender/arm/logicnode/array/LN_array_set.py +++ b/blender/arm/logicnode/array/LN_array_set.py @@ -10,7 +10,7 @@ class ArraySetNode(ArmLogicTreeNode): super(ArraySetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketInt', 'Index') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmIntSocket', 'Index') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/array/LN_array_shift.py b/blender/arm/logicnode/array/LN_array_shift.py index 6a40faf2..d1d31b37 100644 --- a/blender/arm/logicnode/array/LN_array_shift.py +++ b/blender/arm/logicnode/array/LN_array_shift.py @@ -12,4 +12,4 @@ class ArrayShiftNode(ArmLogicTreeNode): super(ArrayShiftNode, self).init(context) self.add_input('ArmNodeSocketArray', 'Array') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_slice.py b/blender/arm/logicnode/array/LN_array_slice.py index 29ca2533..87da4910 100644 --- a/blender/arm/logicnode/array/LN_array_slice.py +++ b/blender/arm/logicnode/array/LN_array_slice.py @@ -11,7 +11,7 @@ class ArraySliceNode(ArmLogicTreeNode): def init(self, context): super(ArraySliceNode, self).init(context) self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketInt', 'Index') - self.add_input('NodeSocketInt', 'End') + self.add_input('ArmIntSocket', 'Index') + self.add_input('ArmIntSocket', 'End') self.add_output('ArmNodeSocketArray', 'Array') diff --git a/blender/arm/logicnode/array/LN_array_splice.py b/blender/arm/logicnode/array/LN_array_splice.py index 06aa7481..ea1c28f8 100644 --- a/blender/arm/logicnode/array/LN_array_splice.py +++ b/blender/arm/logicnode/array/LN_array_splice.py @@ -12,7 +12,7 @@ class ArraySpliceNode(ArmLogicTreeNode): super(ArraySpliceNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketInt', 'Index') - self.add_input('NodeSocketInt', 'Length') + self.add_input('ArmIntSocket', 'Index') + self.add_input('ArmIntSocket', 'Length') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/array/LN_array_string.py b/blender/arm/logicnode/array/LN_array_string.py index d1a82bb4..2052a9db 100644 --- a/blender/arm/logicnode/array/LN_array_string.py +++ b/blender/arm/logicnode/array/LN_array_string.py @@ -14,14 +14,14 @@ class StringArrayNode(ArmLogicTreeNode): def init(self, context): super(StringArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array', is_var=True) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketString' + op.socket_type = 'ArmStringSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/array/LN_array_vector.py b/blender/arm/logicnode/array/LN_array_vector.py index 94ac05e0..75b08e59 100644 --- a/blender/arm/logicnode/array/LN_array_vector.py +++ b/blender/arm/logicnode/array/LN_array_vector.py @@ -14,14 +14,14 @@ class VectorArrayNode(ArmLogicTreeNode): def init(self, context): super(VectorArrayNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array', is_var=True) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketVector' + op.socket_type = 'ArmVectorSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/camera/LN_get_camera_fov.py b/blender/arm/logicnode/camera/LN_get_camera_fov.py index d35c3181..f6dc4426 100644 --- a/blender/arm/logicnode/camera/LN_get_camera_fov.py +++ b/blender/arm/logicnode/camera/LN_get_camera_fov.py @@ -12,4 +12,4 @@ class GetCameraFovNode(ArmLogicTreeNode): super(GetCameraFovNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketFloat', 'FOV') + self.add_output('ArmFloatSocket', 'FOV') diff --git a/blender/arm/logicnode/camera/LN_set_camera_fov.py b/blender/arm/logicnode/camera/LN_set_camera_fov.py index 4785c18c..2a5103ea 100644 --- a/blender/arm/logicnode/camera/LN_set_camera_fov.py +++ b/blender/arm/logicnode/camera/LN_set_camera_fov.py @@ -12,6 +12,6 @@ class SetCameraFovNode(ArmLogicTreeNode): super(SetCameraFovNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Camera') - self.add_input('NodeSocketFloat', 'FOV', default_value=0.9) + self.add_input('ArmFloatSocket', 'FOV', default_value=0.9) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py b/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py index 027b2015..a8860a36 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py @@ -8,6 +8,6 @@ class CanvasGetCheckboxNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetCheckboxNode, self).init(context) - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') - self.add_output('NodeSocketBool', 'Is Checked') + self.add_output('ArmBoolSocket', 'Is Checked') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py b/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py index 09e10e71..69938c5c 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py @@ -8,6 +8,6 @@ class CanvasGetInputTextNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetInputTextNode, self).init(context) - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') - self.add_output('NodeSocketString', 'Text') + self.add_output('ArmStringSocket', 'Text') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_location.py b/blender/arm/logicnode/canvas/LN_get_canvas_location.py index 3ea3c2d8..21e38a1b 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_location.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_location.py @@ -9,8 +9,8 @@ class CanvasGetLocationNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetLocationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketInt', 'X') - self.add_output('NodeSocketInt', 'Y') + self.add_output('ArmIntSocket', 'X') + self.add_output('ArmIntSocket', 'Y') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_position.py b/blender/arm/logicnode/canvas/LN_get_canvas_position.py index d7704fd6..66ae4db6 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_position.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_position.py @@ -8,6 +8,6 @@ class CanvasGetPositionNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetPositionNode, self).init(context) - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') - self.add_output('NodeSocketInt', 'Position') + self.add_output('ArmIntSocket', 'Position') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py b/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py index b7aa0795..493a740d 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py @@ -9,8 +9,8 @@ class CanvasGetPBNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetPBNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketInt', 'At') - self.add_output('NodeSocketInt', 'Max') + self.add_output('ArmIntSocket', 'At') + self.add_output('ArmIntSocket', 'Max') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py b/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py index 342c9288..bde56b39 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py @@ -9,7 +9,7 @@ class CanvasGetRotationNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetRotationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketFloat', 'Rad') + self.add_output('ArmFloatSocket', 'Rad') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_scale.py b/blender/arm/logicnode/canvas/LN_get_canvas_scale.py index 631a7185..fad278f2 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_scale.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_scale.py @@ -9,8 +9,8 @@ class CanvasGetScaleNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetScaleNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketInt', 'Height') - self.add_output('NodeSocketInt', 'Width') + self.add_output('ArmIntSocket', 'Height') + self.add_output('ArmIntSocket', 'Width') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_slider.py b/blender/arm/logicnode/canvas/LN_get_canvas_slider.py index 70ccbac3..d6d44535 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_slider.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_slider.py @@ -8,6 +8,6 @@ class CanvasGetSliderNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetSliderNode, self).init(context) - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') - self.add_output('NodeSocketFloat', 'Float') + self.add_output('ArmFloatSocket', 'Float') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_visible.py b/blender/arm/logicnode/canvas/LN_get_canvas_visible.py index 6c983e62..f930146f 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_visible.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_visible.py @@ -11,6 +11,6 @@ class CanvasGetVisibleNode(ArmLogicTreeNode): def init(self, context): super(CanvasGetVisibleNode, self).init(context) - self.inputs.new('NodeSocketString', 'Element') + self.inputs.new('ArmStringSocket', 'Element') - self.outputs.new('NodeSocketBool', 'Is Visible') + self.outputs.new('ArmBoolSocket', 'Is Visible') diff --git a/blender/arm/logicnode/canvas/LN_on_canvas_element.py b/blender/arm/logicnode/canvas/LN_on_canvas_element.py index ba1301c1..a72501a5 100644 --- a/blender/arm/logicnode/canvas/LN_on_canvas_element.py +++ b/blender/arm/logicnode/canvas/LN_on_canvas_element.py @@ -26,7 +26,7 @@ class OnCanvasElementNode(ArmLogicTreeNode): def init(self, context): super(OnCanvasElementNode, self).init(context) - self.add_input('NodeSocketString', 'Element') + self.add_input('ArmStringSocket', 'Element') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_asset.py b/blender/arm/logicnode/canvas/LN_set_canvas_asset.py index 174b4b01..077ece2e 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_asset.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_asset.py @@ -9,7 +9,7 @@ class CanvasSetAssetNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetAssetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketString', 'Asset') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmStringSocket', 'Asset') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py b/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py index a3759a68..293200a5 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py @@ -9,7 +9,7 @@ class CanvasSetCheckBoxNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetCheckBoxNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketBool', 'Check') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmBoolSocket', 'Check') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_location.py b/blender/arm/logicnode/canvas/LN_set_canvas_location.py index 12886e37..cfb43449 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_location.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_location.py @@ -9,8 +9,8 @@ class CanvasSetLocationNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetLocationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketFloat', 'X') - self.add_input('NodeSocketFloat', 'Y') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmFloatSocket', 'X') + self.add_input('ArmFloatSocket', 'Y') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py b/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py index bd39bd1d..38ae0530 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py @@ -9,8 +9,8 @@ class CanvasSetPBNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetPBNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketInt', 'At') - self.add_input('NodeSocketInt', 'Max') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmIntSocket', 'At') + self.add_input('ArmIntSocket', 'Max') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py b/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py index 4379f61a..dae5deaf 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py @@ -9,7 +9,7 @@ class CanvasSetRotationNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetRotationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketFloat', 'Rad') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmFloatSocket', 'Rad') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_scale.py b/blender/arm/logicnode/canvas/LN_set_canvas_scale.py index 1718c9ad..714c0030 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_scale.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_scale.py @@ -9,8 +9,8 @@ class CanvasSetScaleNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetScaleNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketInt', 'Height') - self.add_input('NodeSocketInt', 'Width') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmIntSocket', 'Height') + self.add_input('ArmIntSocket', 'Width') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_slider.py b/blender/arm/logicnode/canvas/LN_set_canvas_slider.py index 7c7cadda..7f48cce3 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_slider.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_slider.py @@ -9,7 +9,7 @@ class CanvasSetSliderNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetSliderNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketFloat', 'Float') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmFloatSocket', 'Float') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_text.py b/blender/arm/logicnode/canvas/LN_set_canvas_text.py index 598a4794..a706b31a 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_text.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_text.py @@ -9,7 +9,7 @@ class CanvasSetTextNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetTextNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketString', 'Text') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmStringSocket', 'Text') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py b/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py index 2ac59b27..b6064691 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py @@ -9,10 +9,10 @@ class CanvasSetTextColorNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetTextColorNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketFloat', 'R') - self.add_input('NodeSocketFloat', 'G') - self.add_input('NodeSocketFloat', 'B') - self.add_input('NodeSocketFloat', 'A') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmFloatSocket', 'R') + self.add_input('ArmFloatSocket', 'G') + self.add_input('ArmFloatSocket', 'B') + self.add_input('ArmFloatSocket', 'A') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_visible.py b/blender/arm/logicnode/canvas/LN_set_canvas_visible.py index 8e8444f4..e9af8266 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_visible.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_visible.py @@ -9,7 +9,7 @@ class CanvasSetVisibleNode(ArmLogicTreeNode): def init(self, context): super(CanvasSetVisibleNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Element') - self.add_input('NodeSocketBool', 'Visible') + self.add_input('ArmStringSocket', 'Element') + self.add_input('ArmBoolSocket', 'Visible') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py b/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py index 6bf63494..5a651247 100644 --- a/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py +++ b/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py @@ -16,7 +16,7 @@ class GetMouseLockNode(ArmLogicTreeNode): def init(self, context): super(GetMouseLockNode, self).init(context) - self.outputs.new('NodeSocketBool', 'Is Locked') + self.outputs.new('ArmBoolSocket', 'Is Locked') def get_replacement_node(self, node_tree: bpy.types.NodeTree): if self.arm_version not in (0, 1): diff --git a/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py b/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py index 0884b8eb..6f394deb 100644 --- a/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py +++ b/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py @@ -16,7 +16,7 @@ class GetMouseVisibleNode(ArmLogicTreeNode): def init(self, context): super(GetMouseVisibleNode, self).init(context) - self.outputs.new('NodeSocketBool', 'Is Visible') + self.outputs.new('ArmBoolSocket', 'Is Visible') def get_replacement_node(self, node_tree: bpy.types.NodeTree): if self.arm_version not in (0, 1): diff --git a/blender/arm/logicnode/deprecated/LN_mouse_coords.py b/blender/arm/logicnode/deprecated/LN_mouse_coords.py index df0ced8a..1244730d 100644 --- a/blender/arm/logicnode/deprecated/LN_mouse_coords.py +++ b/blender/arm/logicnode/deprecated/LN_mouse_coords.py @@ -13,9 +13,9 @@ class MouseCoordsNode(ArmLogicTreeNode): def init(self, context): super(MouseCoordsNode, self).init(context) - self.add_output('NodeSocketVector', 'Coords') - self.add_output('NodeSocketVector', 'Movement') - self.add_output('NodeSocketInt', 'Wheel') + self.add_output('ArmVectorSocket', 'Coords') + self.add_output('ArmVectorSocket', 'Movement') + self.add_output('ArmIntSocket', 'Wheel') def get_replacement_node(self, node_tree: bpy.types.NodeTree): if self.arm_version not in (0, 1): diff --git a/blender/arm/logicnode/deprecated/LN_on_gamepad.py b/blender/arm/logicnode/deprecated/LN_on_gamepad.py index 39433482..fe1f2913 100644 --- a/blender/arm/logicnode/deprecated/LN_on_gamepad.py +++ b/blender/arm/logicnode/deprecated/LN_on_gamepad.py @@ -45,7 +45,7 @@ class OnGamepadNode(ArmLogicTreeNode): def init(self, context): super(OnGamepadNode, self).init(context) self.add_output('ArmNodeSocketAction', 'Out') - self.add_input('NodeSocketInt', 'Gamepad') + self.add_input('ArmIntSocket', 'Gamepad') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/deprecated/LN_pause_trait.py b/blender/arm/logicnode/deprecated/LN_pause_trait.py index f5e921a7..7baa2d9f 100644 --- a/blender/arm/logicnode/deprecated/LN_pause_trait.py +++ b/blender/arm/logicnode/deprecated/LN_pause_trait.py @@ -13,5 +13,5 @@ class PauseTraitNode(ArmLogicTreeNode): def init(self, context): super(PauseTraitNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Trait') + self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_play_action.py b/blender/arm/logicnode/deprecated/LN_play_action.py index c914a0b0..a386d7f2 100644 --- a/blender/arm/logicnode/deprecated/LN_play_action.py +++ b/blender/arm/logicnode/deprecated/LN_play_action.py @@ -15,6 +15,6 @@ class PlayActionNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketAnimAction', 'Action') - self.add_input('NodeSocketFloat', 'Blend', default_value=0.2) + self.add_input('ArmFloatSocket', 'Blend', default_value=0.2) self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketAction', 'Done') diff --git a/blender/arm/logicnode/deprecated/LN_resume_trait.py b/blender/arm/logicnode/deprecated/LN_resume_trait.py index 0ea926e9..ccb9e183 100644 --- a/blender/arm/logicnode/deprecated/LN_resume_trait.py +++ b/blender/arm/logicnode/deprecated/LN_resume_trait.py @@ -13,5 +13,5 @@ class ResumeTraitNode(ArmLogicTreeNode): def init(self, context): super(ResumeTraitNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Trait') + self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py b/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py index a1b2b5c4..49fe997d 100644 --- a/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py +++ b/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py @@ -15,8 +15,8 @@ class RotateObjectAroundAxisNode(ArmLogicTreeNode): super(RotateObjectAroundAxisNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'Axis', default_value=[0, 0, 1]) - self.add_input('NodeSocketFloat', 'Angle') + self.add_input('ArmVectorSocket', 'Axis', default_value=[0, 0, 1]) + self.add_input('ArmFloatSocket', 'Angle') self.add_output('ArmNodeSocketAction', 'Out') def get_replacement_node(self, node_tree: bpy.types.NodeTree): diff --git a/blender/arm/logicnode/deprecated/LN_scale_object.py b/blender/arm/logicnode/deprecated/LN_scale_object.py index 4b3bb898..58f1078f 100644 --- a/blender/arm/logicnode/deprecated/LN_scale_object.py +++ b/blender/arm/logicnode/deprecated/LN_scale_object.py @@ -15,5 +15,5 @@ class ScaleObjectNode(ArmLogicTreeNode): super(ScaleObjectNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'Scale') + self.add_input('ArmVectorSocket', 'Scale') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py b/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py index 5612e87e..bb5ca4bb 100644 --- a/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py +++ b/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py @@ -14,7 +14,7 @@ class SetMouseLockNode(ArmLogicTreeNode): def init(self, context): super(SetMouseLockNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Lock') + self.add_input('ArmBoolSocket', 'Lock') self.add_output('ArmNodeSocketAction', 'Out') def get_replacement_node(self, node_tree: bpy.types.NodeTree): diff --git a/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py b/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py index c85738e6..19c29d1b 100644 --- a/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py +++ b/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py @@ -14,7 +14,7 @@ class ShowMouseNode(ArmLogicTreeNode): def init(self, context): super(ShowMouseNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Show') + self.add_input('ArmBoolSocket', 'Show') self.add_output('ArmNodeSocketAction', 'Out') def get_replacement_node(self, node_tree: bpy.types.NodeTree): diff --git a/blender/arm/logicnode/deprecated/LN_set_object_material.py b/blender/arm/logicnode/deprecated/LN_set_object_material.py index 25dc3f24..4ca6b967 100644 --- a/blender/arm/logicnode/deprecated/LN_set_object_material.py +++ b/blender/arm/logicnode/deprecated/LN_set_object_material.py @@ -14,5 +14,5 @@ class SetMaterialNode(ArmLogicTreeNode): super(SetMaterialNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Material') + self.add_input('ArmDynamicSocket', 'Material') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_surface_coords.py b/blender/arm/logicnode/deprecated/LN_surface_coords.py index dff2b872..480d4d95 100644 --- a/blender/arm/logicnode/deprecated/LN_surface_coords.py +++ b/blender/arm/logicnode/deprecated/LN_surface_coords.py @@ -14,5 +14,5 @@ class SurfaceCoordsNode(ArmLogicTreeNode): def init(self, context): super(SurfaceCoordsNode, self).init(context) - self.add_output('NodeSocketVector', 'Coords') - self.add_output('NodeSocketVector', 'Movement') + self.add_output('ArmVectorSocket', 'Coords') + self.add_output('ArmVectorSocket', 'Movement') diff --git a/blender/arm/logicnode/event/LN_on_timer.py b/blender/arm/logicnode/event/LN_on_timer.py index 209c0bc8..603755d2 100644 --- a/blender/arm/logicnode/event/LN_on_timer.py +++ b/blender/arm/logicnode/event/LN_on_timer.py @@ -11,7 +11,7 @@ class OnTimerNode(ArmLogicTreeNode): def init(self, context): super(OnTimerNode, self).init(context) - self.add_input('NodeSocketFloat', 'Duration') - self.add_input('NodeSocketBool', 'Repeat') + self.add_input('ArmFloatSocket', 'Duration') + self.add_input('ArmBoolSocket', 'Repeat') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/event/LN_send_event_to_object.py b/blender/arm/logicnode/event/LN_send_event_to_object.py index e9ebce12..03dd9ed1 100644 --- a/blender/arm/logicnode/event/LN_send_event_to_object.py +++ b/blender/arm/logicnode/event/LN_send_event_to_object.py @@ -16,7 +16,7 @@ class SendEventNode(ArmLogicTreeNode): def init(self, context): super(SendEventNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Event') + self.add_input('ArmStringSocket', 'Event') self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/event/LN_send_global_event.py b/blender/arm/logicnode/event/LN_send_global_event.py index a85b0b6d..25943b51 100644 --- a/blender/arm/logicnode/event/LN_send_global_event.py +++ b/blender/arm/logicnode/event/LN_send_global_event.py @@ -15,6 +15,6 @@ class SendGlobalEventNode(ArmLogicTreeNode): def init(self, context): super(SendGlobalEventNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Event') + self.add_input('ArmStringSocket', 'Event') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/input/LN_gamepad.py b/blender/arm/logicnode/input/LN_gamepad.py index df8dec2b..09c5cd0e 100644 --- a/blender/arm/logicnode/input/LN_gamepad.py +++ b/blender/arm/logicnode/input/LN_gamepad.py @@ -49,9 +49,9 @@ class GamepadNode(ArmLogicTreeNode): def init(self, context): super(GamepadNode, self).init(context) self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketBool', 'State') + self.add_output('ArmBoolSocket', 'State') - self.add_input('NodeSocketInt', 'Gamepad') + self.add_input('ArmIntSocket', 'Gamepad') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/input/LN_gamepad_coords.py b/blender/arm/logicnode/input/LN_gamepad_coords.py index 959db1e8..fdb61b75 100644 --- a/blender/arm/logicnode/input/LN_gamepad_coords.py +++ b/blender/arm/logicnode/input/LN_gamepad_coords.py @@ -13,11 +13,11 @@ class GamepadCoordsNode(ArmLogicTreeNode): def init(self, context): super(GamepadCoordsNode, self).init(context) - self.add_output('NodeSocketVector', 'Left Stick') - self.add_output('NodeSocketVector', 'Right Stick') - self.add_output('NodeSocketVector', 'Left Movement') - self.add_output('NodeSocketVector', 'Right Movement') - self.add_output('NodeSocketFloat', 'Left Trigger') - self.add_output('NodeSocketFloat', 'Right Trigger') + self.add_output('ArmVectorSocket', 'Left Stick') + self.add_output('ArmVectorSocket', 'Right Stick') + self.add_output('ArmVectorSocket', 'Left Movement') + self.add_output('ArmVectorSocket', 'Right Movement') + self.add_output('ArmFloatSocket', 'Left Trigger') + self.add_output('ArmFloatSocket', 'Right Trigger') - self.add_input('NodeSocketInt', 'Gamepad') + self.add_input('ArmIntSocket', 'Gamepad') diff --git a/blender/arm/logicnode/input/LN_get_cursor_location.py b/blender/arm/logicnode/input/LN_get_cursor_location.py index bc740be7..2d102343 100644 --- a/blender/arm/logicnode/input/LN_get_cursor_location.py +++ b/blender/arm/logicnode/input/LN_get_cursor_location.py @@ -9,7 +9,7 @@ class GetCursorLocationNode(ArmLogicTreeNode): def init(self, context): super(GetCursorLocationNode, self).init(context) - self.add_output('NodeSocketInt', 'X') - self.add_output('NodeSocketInt', 'Y') - self.add_output('NodeSocketInt', 'Inverted X') - self.add_output('NodeSocketInt', 'Inverted Y') + self.add_output('ArmIntSocket', 'X') + self.add_output('ArmIntSocket', 'Y') + self.add_output('ArmIntSocket', 'Inverted X') + self.add_output('ArmIntSocket', 'Inverted Y') diff --git a/blender/arm/logicnode/input/LN_get_cursor_state.py b/blender/arm/logicnode/input/LN_get_cursor_state.py index 221bf550..b09c253a 100644 --- a/blender/arm/logicnode/input/LN_get_cursor_state.py +++ b/blender/arm/logicnode/input/LN_get_cursor_state.py @@ -18,6 +18,6 @@ class GetCursorStateNode(ArmLogicTreeNode): def init(self, context): super(GetCursorStateNode, self).init(context) - self.outputs.new('NodeSocketBool', 'Is Hidden Locked') - self.outputs.new('NodeSocketBool', 'Is Hidden') - self.outputs.new('NodeSocketBool', 'Is Locked') + self.outputs.new('ArmBoolSocket', 'Is Hidden Locked') + self.outputs.new('ArmBoolSocket', 'Is Hidden') + self.outputs.new('ArmBoolSocket', 'Is Locked') diff --git a/blender/arm/logicnode/input/LN_get_mouse_movement.py b/blender/arm/logicnode/input/LN_get_mouse_movement.py index ee217b5c..a3ac08d2 100644 --- a/blender/arm/logicnode/input/LN_get_mouse_movement.py +++ b/blender/arm/logicnode/input/LN_get_mouse_movement.py @@ -12,13 +12,13 @@ class GetMouseMovementNode(ArmLogicTreeNode): def init(self, context): super(GetMouseMovementNode, self).init(context) - self.add_input('NodeSocketFloat', 'X Multiplier', default_value=-1.0) - self.add_input('NodeSocketFloat', 'Y Multiplier', default_value=-1.0) - self.add_input('NodeSocketFloat', 'Wheel Delta Multiplier', default_value=-1.0) + self.add_input('ArmFloatSocket', 'X Multiplier', default_value=-1.0) + self.add_input('ArmFloatSocket', 'Y Multiplier', default_value=-1.0) + self.add_input('ArmFloatSocket', 'Wheel Delta Multiplier', default_value=-1.0) - self.add_output('NodeSocketFloat', 'X') - self.add_output('NodeSocketFloat', 'Y') - self.add_output('NodeSocketFloat', 'Multiplied X') - self.add_output('NodeSocketFloat', 'Multiplied Y') - self.add_output('NodeSocketInt', 'Wheel Delta') - self.add_output('NodeSocketFloat', 'Multiplied Wheel Delta') + self.add_output('ArmFloatSocket', 'X') + self.add_output('ArmFloatSocket', 'Y') + self.add_output('ArmFloatSocket', 'Multiplied X') + self.add_output('ArmFloatSocket', 'Multiplied Y') + self.add_output('ArmIntSocket', 'Wheel Delta') + self.add_output('ArmFloatSocket', 'Multiplied Wheel Delta') diff --git a/blender/arm/logicnode/input/LN_get_touch_location.py b/blender/arm/logicnode/input/LN_get_touch_location.py index 88d6f6df..1acf6028 100644 --- a/blender/arm/logicnode/input/LN_get_touch_location.py +++ b/blender/arm/logicnode/input/LN_get_touch_location.py @@ -9,7 +9,7 @@ class GetTouchLocationNode(ArmLogicTreeNode): def init(self, context): super(GetTouchLocationNode, self).init(context) - self.add_output('NodeSocketInt', 'X') - self.add_output('NodeSocketInt', 'Y') - self.add_output('NodeSocketInt', 'Inverted X') - self.add_output('NodeSocketInt', 'Inverted Y') + self.add_output('ArmIntSocket', 'X') + self.add_output('ArmIntSocket', 'Y') + self.add_output('ArmIntSocket', 'Inverted X') + self.add_output('ArmIntSocket', 'Inverted Y') diff --git a/blender/arm/logicnode/input/LN_get_touch_movement.py b/blender/arm/logicnode/input/LN_get_touch_movement.py index 80f918f0..6c110679 100644 --- a/blender/arm/logicnode/input/LN_get_touch_movement.py +++ b/blender/arm/logicnode/input/LN_get_touch_movement.py @@ -9,10 +9,10 @@ class GetTouchMovementNode(ArmLogicTreeNode): def init(self, context): super(GetTouchMovementNode, self).init(context) - self.add_input('NodeSocketFloat', 'X Multiplier', default_value=-1.0) - self.add_input('NodeSocketFloat', 'Y Multiplier', default_value=-1.0) + self.add_input('ArmFloatSocket', 'X Multiplier', default_value=-1.0) + self.add_input('ArmFloatSocket', 'Y Multiplier', default_value=-1.0) - self.add_output('NodeSocketFloat', 'X') - self.add_output('NodeSocketFloat', 'Y') - self.add_output('NodeSocketFloat', 'Multiplied X') - self.add_output('NodeSocketFloat', 'Multiplied Y') + self.add_output('ArmFloatSocket', 'X') + self.add_output('ArmFloatSocket', 'Y') + self.add_output('ArmFloatSocket', 'Multiplied X') + self.add_output('ArmFloatSocket', 'Multiplied Y') diff --git a/blender/arm/logicnode/input/LN_keyboard.py b/blender/arm/logicnode/input/LN_keyboard.py index 230425db..b1613b02 100644 --- a/blender/arm/logicnode/input/LN_keyboard.py +++ b/blender/arm/logicnode/input/LN_keyboard.py @@ -73,7 +73,7 @@ class KeyboardNode(ArmLogicTreeNode): def init(self, context): super(KeyboardNode, self).init(context) self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketBool', 'State') + self.add_output('ArmBoolSocket', 'State') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/input/LN_mouse.py b/blender/arm/logicnode/input/LN_mouse.py index 3152a132..69663544 100644 --- a/blender/arm/logicnode/input/LN_mouse.py +++ b/blender/arm/logicnode/input/LN_mouse.py @@ -24,7 +24,7 @@ class MouseNode(ArmLogicTreeNode): def init(self, context): super(MouseNode, self).init(context) self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketBool', 'State') + self.add_output('ArmBoolSocket', 'State') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/input/LN_on_swipe.py b/blender/arm/logicnode/input/LN_on_swipe.py index ed104a41..61c11913 100644 --- a/blender/arm/logicnode/input/LN_on_swipe.py +++ b/blender/arm/logicnode/input/LN_on_swipe.py @@ -7,7 +7,7 @@ class NodeAddOutputButton(bpy.types.Operator): bl_label = 'Add 4 States' bl_options = {'UNDO', 'INTERNAL'} node_index: StringProperty(name='Node Index', default='') - socket_type: StringProperty(name='Socket Type', default='NodeSocketShader') + socket_type: StringProperty(name='Socket Type', default='ArmDynamicSocket') name_format: StringProperty(name='Name Format', default='Output {0}') index_name_offset: IntProperty(name='Index Name Offset', default=0) @@ -21,10 +21,10 @@ class NodeAddOutputButton(bpy.types.Operator): global array_nodes node = array_nodes[self.node_index] outs = node.outputs - outs.new('NodeSocketBool', self.get_name_state(len(outs), node.min_outputs)) - outs.new('NodeSocketBool', self.get_name_state(len(outs), node.min_outputs)) - outs.new('NodeSocketBool', self.get_name_state(len(outs), node.min_outputs)) - outs.new('NodeSocketBool', self.get_name_state(len(outs), node.min_outputs)) + outs.new('ArmBoolSocket', self.get_name_state(len(outs), node.min_outputs)) + outs.new('ArmBoolSocket', self.get_name_state(len(outs), node.min_outputs)) + outs.new('ArmBoolSocket', self.get_name_state(len(outs), node.min_outputs)) + outs.new('ArmBoolSocket', self.get_name_state(len(outs), node.min_outputs)) return{'FINISHED'} # Custom class for remove output parameters (in 4 directions) @@ -61,14 +61,14 @@ class OnSwipeNode(ArmLogicTreeNode): def init(self, context): super(OnSwipeNode, self).init(context) - self.inputs.new('NodeSocketFloat', 'Time') + self.inputs.new('ArmFloatSocket', 'Time') self.inputs[-1].default_value = 0.15 - self.inputs.new('NodeSocketInt', 'Min Length (px)') + self.inputs.new('ArmIntSocket', 'Min Length (px)') self.inputs[-1].default_value = 100 self.outputs.new('ArmNodeSocketAction', 'Out') - self.outputs.new('NodeSocketVector', 'Direction') - self.outputs.new('NodeSocketInt', 'Length (px)') - self.outputs.new('NodeSocketInt', 'Angle (0-360)') + self.outputs.new('ArmVectorSocket', 'Direction') + self.outputs.new('ArmIntSocket', 'Length (px)') + self.outputs.new('ArmIntSocket', 'Angle (0-360)') # Draw node buttons def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/input/LN_on_tap_screen.py b/blender/arm/logicnode/input/LN_on_tap_screen.py index 9d27e05c..c0450ca0 100644 --- a/blender/arm/logicnode/input/LN_on_tap_screen.py +++ b/blender/arm/logicnode/input/LN_on_tap_screen.py @@ -20,15 +20,15 @@ class OnTapScreen(ArmLogicTreeNode): def init(self, context): super(OnTapScreen, self).init(context) - self.add_input('NodeSocketFloat', 'Duration') + self.add_input('ArmFloatSocket', 'Duration') self.inputs[-1].default_value = 0.3 - self.add_input('NodeSocketFloat', 'Interval') + self.add_input('ArmFloatSocket', 'Interval') self.inputs[-1].default_value = 0.0 - self.add_input('NodeSocketInt', 'Repeat') + self.add_input('ArmIntSocket', 'Repeat') self.inputs[-1].default_value = 2 self.add_output('ArmNodeSocketAction', 'Done') self.add_output('ArmNodeSocketAction', 'Fail') self.add_output('ArmNodeSocketAction', 'Tap') - self.add_output('NodeSocketInt', 'Tap Number') - self.add_output('NodeSocketVector', 'Coords') + self.add_output('ArmIntSocket', 'Tap Number') + self.add_output('ArmVectorSocket', 'Coords') diff --git a/blender/arm/logicnode/input/LN_sensor_coords.py b/blender/arm/logicnode/input/LN_sensor_coords.py index 9687630e..439f8eb1 100644 --- a/blender/arm/logicnode/input/LN_sensor_coords.py +++ b/blender/arm/logicnode/input/LN_sensor_coords.py @@ -9,4 +9,4 @@ class SensorCoordsNode(ArmLogicTreeNode): def init(self, context): super(SensorCoordsNode, self).init(context) - self.add_output('NodeSocketVector', 'Coords') + self.add_output('ArmVectorSocket', 'Coords') diff --git a/blender/arm/logicnode/input/LN_set_cursor_state.py b/blender/arm/logicnode/input/LN_set_cursor_state.py index 15f280cb..c1f38fde 100644 --- a/blender/arm/logicnode/input/LN_set_cursor_state.py +++ b/blender/arm/logicnode/input/LN_set_cursor_state.py @@ -25,7 +25,7 @@ class SetCursorStateNode(ArmLogicTreeNode): def init(self, context): super(SetCursorStateNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'State') + self.add_input('ArmBoolSocket', 'State') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/input/LN_touch.py b/blender/arm/logicnode/input/LN_touch.py index 2beb6ac1..ffbc32c6 100644 --- a/blender/arm/logicnode/input/LN_touch.py +++ b/blender/arm/logicnode/input/LN_touch.py @@ -18,7 +18,7 @@ class SurfaceNode(ArmLogicTreeNode): def init(self, context): super(SurfaceNode, self).init(context) self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketBool', 'State') + self.add_output('ArmBoolSocket', 'State') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/input/LN_virtual_button.py b/blender/arm/logicnode/input/LN_virtual_button.py index 9d4c9c3f..28a52189 100644 --- a/blender/arm/logicnode/input/LN_virtual_button.py +++ b/blender/arm/logicnode/input/LN_virtual_button.py @@ -18,7 +18,7 @@ class VirtualButtonNode(ArmLogicTreeNode): def init(self, context): super(VirtualButtonNode, self).init(context) self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketBool', 'State') + self.add_output('ArmBoolSocket', 'State') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/light/LN_set_light_color.py b/blender/arm/logicnode/light/LN_set_light_color.py index a62d8366..38b3d6ef 100644 --- a/blender/arm/logicnode/light/LN_set_light_color.py +++ b/blender/arm/logicnode/light/LN_set_light_color.py @@ -10,6 +10,6 @@ class SetLightColorNode(ArmLogicTreeNode): super(SetLightColorNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Light') - self.add_input('NodeSocketColor', 'Color', default_value=[1.0, 1.0, 1.0, 1.0]) + self.add_input('ArmColorSocket', 'Color', default_value=[1.0, 1.0, 1.0, 1.0]) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/light/LN_set_light_strength.py b/blender/arm/logicnode/light/LN_set_light_strength.py index cd04b753..cbf11700 100644 --- a/blender/arm/logicnode/light/LN_set_light_strength.py +++ b/blender/arm/logicnode/light/LN_set_light_strength.py @@ -10,6 +10,6 @@ class SetLightStrengthNode(ArmLogicTreeNode): super(SetLightStrengthNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Light') - self.add_input('NodeSocketFloat', 'Strength', default_value=250) + self.add_input('ArmFloatSocket', 'Strength', default_value=250) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/logic/LN_branch.py b/blender/arm/logicnode/logic/LN_branch.py index 45037e1d..d7b5536d 100644 --- a/blender/arm/logicnode/logic/LN_branch.py +++ b/blender/arm/logicnode/logic/LN_branch.py @@ -11,7 +11,7 @@ class BranchNode(ArmLogicTreeNode): def init(self, context): super(BranchNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Bool') + self.add_input('ArmBoolSocket', 'Bool') self.add_output('ArmNodeSocketAction', 'True') self.add_output('ArmNodeSocketAction', 'False') diff --git a/blender/arm/logicnode/logic/LN_call_function.py b/blender/arm/logicnode/logic/LN_call_function.py index 0dce0371..20808c71 100644 --- a/blender/arm/logicnode/logic/LN_call_function.py +++ b/blender/arm/logicnode/logic/LN_call_function.py @@ -16,17 +16,17 @@ class CallFunctionNode(ArmLogicTreeNode): def init(self, context): super(CallFunctionNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Trait/Any') - self.add_input('NodeSocketString', 'Function') + self.add_input('ArmDynamicSocket', 'Trait/Any') + self.add_input('ArmStringSocket', 'Function') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketShader', 'Result') + self.add_output('ArmDynamicSocket', 'Result') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='Add Arg', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketShader' + op.socket_type = 'ArmDynamicSocket' op.name_format = "Arg {0}" op.index_name_offset = -2 op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) diff --git a/blender/arm/logicnode/logic/LN_function.py b/blender/arm/logicnode/logic/LN_function.py index ee2ecc7d..5af1e5e7 100644 --- a/blender/arm/logicnode/logic/LN_function.py +++ b/blender/arm/logicnode/logic/LN_function.py @@ -27,7 +27,7 @@ class FunctionNode(ArmLogicTreeNode): row = layout.row(align=True) op = row.operator('arm.node_add_output', text='Add Arg', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketShader' + op.socket_type = 'ArmDynamicSocket' op.name_format = "Arg {0}" op.index_name_offset = 0 op2 = row.operator('arm.node_remove_output', text='', icon='X', emboss=True) diff --git a/blender/arm/logicnode/logic/LN_function_output.py b/blender/arm/logicnode/logic/LN_function_output.py index 6ac65e7c..87343512 100644 --- a/blender/arm/logicnode/logic/LN_function_output.py +++ b/blender/arm/logicnode/logic/LN_function_output.py @@ -13,7 +13,7 @@ class FunctionOutputNode(ArmLogicTreeNode): def init(self, context): super(FunctionOutputNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') function_name: StringProperty(name="Name") diff --git a/blender/arm/logicnode/logic/LN_gate.py b/blender/arm/logicnode/logic/LN_gate.py index ad931f7c..286c6580 100644 --- a/blender/arm/logicnode/logic/LN_gate.py +++ b/blender/arm/logicnode/logic/LN_gate.py @@ -41,8 +41,8 @@ class GateNode(ArmLogicTreeNode): def init(self, context): super(GateNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Input 1') - self.add_input('NodeSocketShader', 'Input 2') + self.add_input('ArmDynamicSocket', 'Input 1') + self.add_input('ArmDynamicSocket', 'Input 2') self.add_output('ArmNodeSocketAction', 'True') self.add_output('ArmNodeSocketAction', 'False') @@ -57,6 +57,6 @@ class GateNode(ArmLogicTreeNode): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketShader' + op.socket_type = 'ArmDynamicSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/logic/LN_invert_boolean.py b/blender/arm/logicnode/logic/LN_invert_boolean.py index 924ab58e..5c5475f1 100644 --- a/blender/arm/logicnode/logic/LN_invert_boolean.py +++ b/blender/arm/logicnode/logic/LN_invert_boolean.py @@ -8,6 +8,6 @@ class NotNode(ArmLogicTreeNode): def init(self, context): super(NotNode, self).init(context) - self.add_input('NodeSocketBool', 'Bool In') + self.add_input('ArmBoolSocket', 'Bool In') - self.add_output('NodeSocketBool', 'Bool Out') + self.add_output('ArmBoolSocket', 'Bool Out') diff --git a/blender/arm/logicnode/logic/LN_is_false.py b/blender/arm/logicnode/logic/LN_is_false.py index 8eb86772..a4ec30df 100644 --- a/blender/arm/logicnode/logic/LN_is_false.py +++ b/blender/arm/logicnode/logic/LN_is_false.py @@ -13,6 +13,6 @@ class IsFalseNode(ArmLogicTreeNode): def init(self, context): super(IsFalseNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Bool') + self.add_input('ArmBoolSocket', 'Bool') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/logic/LN_is_not_null.py b/blender/arm/logicnode/logic/LN_is_not_null.py index 4e7e0cb4..200b4cdf 100644 --- a/blender/arm/logicnode/logic/LN_is_not_null.py +++ b/blender/arm/logicnode/logic/LN_is_not_null.py @@ -12,6 +12,6 @@ class IsNotNoneNode(ArmLogicTreeNode): def init(self, context): super(IsNotNoneNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/logic/LN_is_null.py b/blender/arm/logicnode/logic/LN_is_null.py index b8f77a80..a08e2c32 100644 --- a/blender/arm/logicnode/logic/LN_is_null.py +++ b/blender/arm/logicnode/logic/LN_is_null.py @@ -13,6 +13,6 @@ class IsNoneNode(ArmLogicTreeNode): def init(self, context): super(IsNoneNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/logic/LN_is_true.py b/blender/arm/logicnode/logic/LN_is_true.py index 21f255d0..6e88f6b8 100644 --- a/blender/arm/logicnode/logic/LN_is_true.py +++ b/blender/arm/logicnode/logic/LN_is_true.py @@ -12,6 +12,6 @@ class IsTrueNode(ArmLogicTreeNode): def init(self, context): super(IsTrueNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Bool') + self.add_input('ArmBoolSocket', 'Bool') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/logic/LN_loop.py b/blender/arm/logicnode/logic/LN_loop.py index 9d69085e..d6ef4b0e 100644 --- a/blender/arm/logicnode/logic/LN_loop.py +++ b/blender/arm/logicnode/logic/LN_loop.py @@ -23,11 +23,11 @@ class LoopNode(ArmLogicTreeNode): def init(self, context): super(LoopNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketInt', 'From') - self.add_input('NodeSocketInt', 'To') + self.add_input('ArmIntSocket', 'From') + self.add_input('ArmIntSocket', 'To') self.add_output('ArmNodeSocketAction', 'Loop') - self.add_output('NodeSocketInt', 'Index') + self.add_output('ArmIntSocket', 'Index') self.add_output('ArmNodeSocketAction', 'Done') def draw_label(self) -> str: diff --git a/blender/arm/logicnode/logic/LN_null.py b/blender/arm/logicnode/logic/LN_null.py index 610328a1..7ed6a18f 100644 --- a/blender/arm/logicnode/logic/LN_null.py +++ b/blender/arm/logicnode/logic/LN_null.py @@ -8,4 +8,4 @@ class NoneNode(ArmLogicTreeNode): def init(self, context): super(NoneNode, self).init(context) - self.add_output('NodeSocketShader', 'Null') + self.add_output('ArmDynamicSocket', 'Null') diff --git a/blender/arm/logicnode/logic/LN_output_to_boolean.py b/blender/arm/logicnode/logic/LN_output_to_boolean.py index f7ed282c..e8b040db 100644 --- a/blender/arm/logicnode/logic/LN_output_to_boolean.py +++ b/blender/arm/logicnode/logic/LN_output_to_boolean.py @@ -11,4 +11,4 @@ class ToBoolNode(ArmLogicTreeNode): super(ToBoolNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_output('NodeSocketBool', 'Bool') + self.add_output('ArmBoolSocket', 'Bool') diff --git a/blender/arm/logicnode/logic/LN_switch_output.py b/blender/arm/logicnode/logic/LN_switch_output.py index 95a9ddba..26bd5246 100644 --- a/blender/arm/logicnode/logic/LN_switch_output.py +++ b/blender/arm/logicnode/logic/LN_switch_output.py @@ -18,7 +18,7 @@ class SwitchNode(ArmLogicTreeNode): def init(self, context): super(SwitchNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Default') @@ -26,7 +26,7 @@ class SwitchNode(ArmLogicTreeNode): row = layout.row(align=True) op = row.operator('arm.node_add_input_output', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.in_socket_type = 'NodeSocketShader' + op.in_socket_type = 'ArmDynamicSocket' op.out_socket_type = 'ArmNodeSocketAction' op.in_name_format = 'Case {0}' op.out_name_format = 'Case {0}' diff --git a/blender/arm/logicnode/logic/LN_value_changed.py b/blender/arm/logicnode/logic/LN_value_changed.py index 42b9ae0a..c805d3a1 100644 --- a/blender/arm/logicnode/logic/LN_value_changed.py +++ b/blender/arm/logicnode/logic/LN_value_changed.py @@ -9,7 +9,7 @@ class ValueChangedNode(ArmLogicTreeNode): def init(self, context): super(ValueChangedNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Changed') self.add_output('ArmNodeSocketAction', 'Unchanged') diff --git a/blender/arm/logicnode/logic/LN_while_true.py b/blender/arm/logicnode/logic/LN_while_true.py index ba99b9ad..f817c1fd 100644 --- a/blender/arm/logicnode/logic/LN_while_true.py +++ b/blender/arm/logicnode/logic/LN_while_true.py @@ -18,7 +18,7 @@ class WhileNode(ArmLogicTreeNode): def init(self, context): super(WhileNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Condition') + self.add_input('ArmBoolSocket', 'Condition') self.add_output('ArmNodeSocketAction', 'Loop') self.add_output('ArmNodeSocketAction', 'Done') diff --git a/blender/arm/logicnode/material/LN_get_object_material.py b/blender/arm/logicnode/material/LN_get_object_material.py index 864c48ee..ec560fcf 100644 --- a/blender/arm/logicnode/material/LN_get_object_material.py +++ b/blender/arm/logicnode/material/LN_get_object_material.py @@ -9,6 +9,6 @@ class GetMaterialNode(ArmLogicTreeNode): def init(self, context): super(GetMaterialNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketInt', 'Slot') + self.add_input('ArmIntSocket', 'Slot') - self.add_output('NodeSocketShader', 'Material') + self.add_output('ArmDynamicSocket', 'Material') diff --git a/blender/arm/logicnode/material/LN_material.py b/blender/arm/logicnode/material/LN_material.py index 7b3a4cc0..63cf9c46 100644 --- a/blender/arm/logicnode/material/LN_material.py +++ b/blender/arm/logicnode/material/LN_material.py @@ -22,7 +22,7 @@ class MaterialNode(ArmLogicTreeNode): def init(self, context): super(MaterialNode, self).init(context) - self.add_output('NodeSocketShader', 'Material', is_var=True) + self.add_output('ArmDynamicSocket', 'Material', is_var=True) def draw_buttons(self, context, layout): layout.prop_search(self, 'property0', bpy.data, 'materials', icon='NONE', text='') diff --git a/blender/arm/logicnode/material/LN_set_material_image_param.py b/blender/arm/logicnode/material/LN_set_material_image_param.py index 777794c2..e6188f76 100644 --- a/blender/arm/logicnode/material/LN_set_material_image_param.py +++ b/blender/arm/logicnode/material/LN_set_material_image_param.py @@ -10,8 +10,8 @@ class SetMaterialImageParamNode(ArmLogicTreeNode): def init(self, context): super(SetMaterialImageParamNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Material') - self.add_input('NodeSocketString', 'Node') - self.add_input('NodeSocketString', 'Image') + self.add_input('ArmDynamicSocket', 'Material') + self.add_input('ArmStringSocket', 'Node') + self.add_input('ArmStringSocket', 'Image') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/material/LN_set_material_rgb_param.py b/blender/arm/logicnode/material/LN_set_material_rgb_param.py index 34948c9d..1b826834 100644 --- a/blender/arm/logicnode/material/LN_set_material_rgb_param.py +++ b/blender/arm/logicnode/material/LN_set_material_rgb_param.py @@ -10,8 +10,8 @@ class SetMaterialRgbParamNode(ArmLogicTreeNode): def init(self, context): super(SetMaterialRgbParamNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Material') - self.add_input('NodeSocketString', 'Node') - self.add_input('NodeSocketColor', 'Color') + self.add_input('ArmDynamicSocket', 'Material') + self.add_input('ArmStringSocket', 'Node') + self.add_input('ArmColorSocket', 'Color') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/material/LN_set_material_value_param.py b/blender/arm/logicnode/material/LN_set_material_value_param.py index 426807d1..afae0aa7 100644 --- a/blender/arm/logicnode/material/LN_set_material_value_param.py +++ b/blender/arm/logicnode/material/LN_set_material_value_param.py @@ -10,8 +10,8 @@ class SetMaterialValueParamNode(ArmLogicTreeNode): def init(self, context): super(SetMaterialValueParamNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Material') - self.add_input('NodeSocketString', 'Node') - self.add_input('NodeSocketFloat', 'Float') + self.add_input('ArmDynamicSocket', 'Material') + self.add_input('ArmStringSocket', 'Node') + self.add_input('ArmFloatSocket', 'Float') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/material/LN_set_object_material_slot.py b/blender/arm/logicnode/material/LN_set_object_material_slot.py index 3806c898..acfa6a68 100644 --- a/blender/arm/logicnode/material/LN_set_object_material_slot.py +++ b/blender/arm/logicnode/material/LN_set_object_material_slot.py @@ -10,7 +10,7 @@ class SetMaterialSlotNode(ArmLogicTreeNode): super(SetMaterialSlotNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Material') - self.add_input('NodeSocketInt', 'Slot') + self.add_input('ArmDynamicSocket', 'Material') + self.add_input('ArmIntSocket', 'Slot') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/math/LN_clamp.py b/blender/arm/logicnode/math/LN_clamp.py index 9205d4d9..8337dd97 100644 --- a/blender/arm/logicnode/math/LN_clamp.py +++ b/blender/arm/logicnode/math/LN_clamp.py @@ -11,8 +11,8 @@ class ClampNode(ArmLogicTreeNode): def init(self, context): super(ClampNode, self).init(context) - self.add_input('NodeSocketFloat', 'Value') - self.add_input('NodeSocketFloat', 'Min') - self.add_input('NodeSocketFloat', 'Max') + self.add_input('ArmFloatSocket', 'Value') + self.add_input('ArmFloatSocket', 'Min') + self.add_input('ArmFloatSocket', 'Max') - self.add_output('NodeSocketFloat', 'Result') + self.add_output('ArmFloatSocket', 'Result') diff --git a/blender/arm/logicnode/math/LN_compare.py b/blender/arm/logicnode/math/LN_compare.py index 3081376d..027ee9ed 100644 --- a/blender/arm/logicnode/math/LN_compare.py +++ b/blender/arm/logicnode/math/LN_compare.py @@ -31,10 +31,10 @@ class CompareNode(ArmLogicTreeNode): def init(self, context): super(CompareNode, self).init(context) - self.add_input('NodeSocketShader', 'Value') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Value') + self.add_input('ArmDynamicSocket', 'Value') - self.add_output('NodeSocketBool', 'Bool') + self.add_output('ArmBoolSocket', 'Bool') def draw_buttons(self, context, layout): layout.prop(self, 'property0') @@ -46,6 +46,6 @@ class CompareNode(ArmLogicTreeNode): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketShader' + op.socket_type = 'ArmDynamicSocket' op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op2.node_index = str(id(self)) diff --git a/blender/arm/logicnode/math/LN_deg_to_rad.py b/blender/arm/logicnode/math/LN_deg_to_rad.py index 64e63a61..034e73e9 100644 --- a/blender/arm/logicnode/math/LN_deg_to_rad.py +++ b/blender/arm/logicnode/math/LN_deg_to_rad.py @@ -9,6 +9,6 @@ class DegToRadNode(ArmLogicTreeNode): def init(self, context): super(DegToRadNode, self).init(context) - self.add_input('NodeSocketFloat', 'Degrees') + self.add_input('ArmFloatSocket', 'Degrees') - self.add_output('NodeSocketFloat', 'Radians') + self.add_output('ArmFloatSocket', 'Radians') diff --git a/blender/arm/logicnode/math/LN_map_range.py b/blender/arm/logicnode/math/LN_map_range.py index d1d370b8..29de5d67 100644 --- a/blender/arm/logicnode/math/LN_map_range.py +++ b/blender/arm/logicnode/math/LN_map_range.py @@ -11,10 +11,10 @@ class MapRangeNode(ArmLogicTreeNode): def init(self, context): super(MapRangeNode, self).init(context) - self.add_input('NodeSocketFloat', 'Value', default_value=1.0) - self.add_input('NodeSocketFloat', 'From Min') - self.add_input('NodeSocketFloat', 'From Max', default_value=1.0) - self.add_input('NodeSocketFloat', 'To Min') - self.add_input('NodeSocketFloat', 'To Max', default_value=1.0) + self.add_input('ArmFloatSocket', 'Value', default_value=1.0) + self.add_input('ArmFloatSocket', 'From Min') + self.add_input('ArmFloatSocket', 'From Max', default_value=1.0) + self.add_input('ArmFloatSocket', 'To Min') + self.add_input('ArmFloatSocket', 'To Max', default_value=1.0) - self.add_output('NodeSocketFloat', 'Result') + self.add_output('ArmFloatSocket', 'Result') diff --git a/blender/arm/logicnode/math/LN_math.py b/blender/arm/logicnode/math/LN_math.py index e090811f..ddae6d7f 100644 --- a/blender/arm/logicnode/math/LN_math.py +++ b/blender/arm/logicnode/math/LN_math.py @@ -51,13 +51,13 @@ class MathNode(ArmLogicTreeNode): # Many arguments: Add, Subtract, Multiply, Divide if (self.get_count_in(select_current) == 0): while (len(self.inputs) < 2): - self.add_input('NodeSocketFloat', 'Value ' + str(len(self.inputs))) + self.add_input('ArmFloatSocket', 'Value ' + str(len(self.inputs))) # 2 arguments: Max, Min, Power, Arctan2, Modulo, Less Than, Greater Than if (self.get_count_in(select_current) == 2): while (len(self.inputs) > 2): self.inputs.remove(self.inputs.values()[-1]) while (len(self.inputs) < 2): - self.add_input('NodeSocketFloat', 'Value ' + str(len(self.inputs))) + self.add_input('ArmFloatSocket', 'Value ' + str(len(self.inputs))) # 1 argument: Sine, Cosine, Abs, Tangent, Arcsine, Arccosine, Arctangent, Logarithm, Round, Floor, Ceil, Square Root, Fract, Exponent if (self.get_count_in(select_current) == 1): while (len(self.inputs) > 1): @@ -100,10 +100,10 @@ class MathNode(ArmLogicTreeNode): def init(self, context): super(MathNode, self).init(context) - self.add_input('NodeSocketFloat', 'Value 0', default_value=0.0) - self.add_input('NodeSocketFloat', 'Value 1', default_value=0.0) + self.add_input('ArmFloatSocket', 'Value 0', default_value=0.0) + self.add_input('ArmFloatSocket', 'Value 1', default_value=0.0) - self.add_output('NodeSocketFloat', 'Result') + self.add_output('ArmFloatSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property1') @@ -114,7 +114,7 @@ class MathNode(ArmLogicTreeNode): column = row.column(align=True) op = column.operator('arm.node_add_input', text='Add Value', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketFloat' + op.socket_type = 'ArmFloatSocket' op.name_format = 'Value {0}' column = row.column(align=True) op = column.operator('arm.node_remove_input', text='', icon='X', emboss=True) diff --git a/blender/arm/logicnode/math/LN_math_expression.py b/blender/arm/logicnode/math/LN_math_expression.py index 125d3e77..4018b3e1 100644 --- a/blender/arm/logicnode/math/LN_math_expression.py +++ b/blender/arm/logicnode/math/LN_math_expression.py @@ -163,9 +163,9 @@ class MathExpressionNode(ArmLogicTreeNode): def init(self, context): super(MathExpressionNode, self).init(context) - self.add_input('NodeSocketFloat', self.get_variable_name(0), default_value=0.0) - self.add_input('NodeSocketFloat', self.get_variable_name(1), default_value=0.0) - self.add_output('NodeSocketFloat', 'Result') + self.add_input('ArmFloatSocket', self.get_variable_name(0), default_value=0.0) + self.add_input('ArmFloatSocket', self.get_variable_name(1), default_value=0.0) + self.add_output('ArmFloatSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property1') @@ -181,7 +181,7 @@ class MathExpressionNode(ArmLogicTreeNode): if len(self.inputs) == 10: column.enabled = False op.node_index = str(id(self)) - op.socket_type = 'NodeSocketFloat' + op.socket_type = 'ArmFloatSocket' op.name_format = self.get_variable_name(len(self.inputs)) column = row.column(align=True) op = column.operator('arm.node_remove_input', text='', icon='X', emboss=True) diff --git a/blender/arm/logicnode/math/LN_matrix_math.py b/blender/arm/logicnode/math/LN_matrix_math.py index 4a05ce3d..903a4e87 100644 --- a/blender/arm/logicnode/math/LN_matrix_math.py +++ b/blender/arm/logicnode/math/LN_matrix_math.py @@ -14,10 +14,10 @@ class MatrixMathNode(ArmLogicTreeNode): def init(self, context): super(MatrixMathNode, self).init(context) - self.add_input('NodeSocketShader', 'Matrix 1') - self.add_input('NodeSocketShader', 'Matrix 2') + self.add_input('ArmDynamicSocket', 'Matrix 1') + self.add_input('ArmDynamicSocket', 'Matrix 2') - self.add_output('NodeSocketShader', 'Result') + self.add_output('ArmDynamicSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/math/LN_mix.py b/blender/arm/logicnode/math/LN_mix.py index 92fa80df..0d4a98e3 100644 --- a/blender/arm/logicnode/math/LN_mix.py +++ b/blender/arm/logicnode/math/LN_mix.py @@ -32,11 +32,11 @@ class MixNode(ArmLogicTreeNode): def init(self, context): super(MixNode, self).init(context) - self.add_input('NodeSocketFloat', 'Factor', default_value=0.0) - self.add_input('NodeSocketFloat', 'Value 1', default_value=0.0) - self.add_input('NodeSocketFloat', 'Value 2', default_value=1.0) + self.add_input('ArmFloatSocket', 'Factor', default_value=0.0) + self.add_input('ArmFloatSocket', 'Value 1', default_value=0.0) + self.add_input('ArmFloatSocket', 'Value 2', default_value=1.0) - self.add_output('NodeSocketFloat', 'Result') + self.add_output('ArmFloatSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property2') diff --git a/blender/arm/logicnode/math/LN_mix_vector.py b/blender/arm/logicnode/math/LN_mix_vector.py index cbab381b..9084d75c 100644 --- a/blender/arm/logicnode/math/LN_mix_vector.py +++ b/blender/arm/logicnode/math/LN_mix_vector.py @@ -34,11 +34,11 @@ class VectorMixNode(ArmLogicTreeNode): def init(self, context): super(VectorMixNode, self).init(context) - self.add_input('NodeSocketFloat', 'Factor', default_value=0.0) - self.add_input('NodeSocketVector', 'Vector 1', default_value=[0.0, 0.0, 0.0]) - self.add_input('NodeSocketVector', 'Vector 2', default_value=[1.0, 1.0, 1.0]) + self.add_input('ArmFloatSocket', 'Factor', default_value=0.0) + self.add_input('ArmVectorSocket', 'Vector 1', default_value=[0.0, 0.0, 0.0]) + self.add_input('ArmVectorSocket', 'Vector 2', default_value=[1.0, 1.0, 1.0]) - self.add_output('NodeSocketVector', 'Result') + self.add_output('ArmVectorSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property2') diff --git a/blender/arm/logicnode/math/LN_quaternion_math.py b/blender/arm/logicnode/math/LN_quaternion_math.py index bcaa7753..8dfdc590 100644 --- a/blender/arm/logicnode/math/LN_quaternion_math.py +++ b/blender/arm/logicnode/math/LN_quaternion_math.py @@ -15,16 +15,16 @@ class QuaternionMathNode(ArmLogicTreeNode): if value: if ((self.property0 == 'Module') or (self.property0 == 'DotProduct') or (self.property0 == 'ToAxisAngle')) and (len(self.outputs) > 1): self.outputs.remove(self.outputs.values()[-1]) # Module/DotProduct/ToAxisAngle - self.add_output('NodeSocketFloat', 'X') # Result X - self.add_output('NodeSocketFloat', 'Y') # Result Y - self.add_output('NodeSocketFloat', 'Z') # Result Z - self.add_output('NodeSocketFloat', 'W') # Result W + self.add_output('ArmFloatSocket', 'X') # Result X + self.add_output('ArmFloatSocket', 'Y') # Result Y + self.add_output('ArmFloatSocket', 'Z') # Result Z + self.add_output('ArmFloatSocket', 'W') # Result W if (self.property0 == 'Module'): - self.add_output('NodeSocketFloat', 'Module') # Module + self.add_output('ArmFloatSocket', 'Module') # Module if (self.property0 == 'DotProduct'): - self.add_output('NodeSocketFloat', 'Scalar') # DotProduct + self.add_output('ArmFloatSocket', 'Scalar') # DotProduct if (self.property0 == 'ToAxisAngle'): - self.add_output('NodeSocketFloat', 'To Axis Angle') # ToAxisAngle + self.add_output('ArmFloatSocket', 'To Axis Angle') # ToAxisAngle else: if ((self.property0 == 'Module') or (self.property0 == 'DotProduct') or (self.property0 == 'ToAxisAngle')) and (len(self.outputs) > 1): self.outputs.remove(self.outputs.values()[-1]) # Module/DotProduct/ToAxisAngle @@ -35,11 +35,11 @@ class QuaternionMathNode(ArmLogicTreeNode): else: break if (self.property0 == 'Module'): - self.add_output('NodeSocketFloat', 'Module') # Module + self.add_output('ArmFloatSocket', 'Module') # Module if (self.property0 == 'DotProduct'): - self.add_output('NodeSocketFloat', 'Scalar') # DotProduct + self.add_output('ArmFloatSocket', 'Scalar') # DotProduct if (self.property0 == 'ToAxisAngle'): - self.add_output('NodeSocketFloat', 'To Axis Angle') # ToAxisAngle + self.add_output('ArmFloatSocket', 'To Axis Angle') # ToAxisAngle property1: HaxeBoolProperty('property1', name='Separator Out', default=False, set=set_bool, get=get_bool) @@ -88,48 +88,48 @@ class QuaternionMathNode(ArmLogicTreeNode): # Many arguments: Add, Subtract, DotProduct, Multiply, MultiplyFloat if (self.get_count_in(select_current) == 0): if (select_current == "MultiplyFloats"): - self.add_input('NodeSocketVector', 'Quaternion ' + str(len(self.inputs))) - self.add_input('NodeSocketFloat', 'Value ' + str(len(self.inputs))) + self.add_input('ArmVectorSocket', 'Quaternion ' + str(len(self.inputs))) + self.add_input('ArmFloatSocket', 'Value ' + str(len(self.inputs))) else: while (len(self.inputs) < 2): - self.add_input('NodeSocketVector', 'Quaternion ' + str(len(self.inputs))) + self.add_input('ArmVectorSocket', 'Quaternion ' + str(len(self.inputs))) if (select_current == 'DotProduct'): - self.add_output('NodeSocketFloat', 'Scalar') + self.add_output('ArmFloatSocket', 'Scalar') # 3 arguments: Lerp, Slerp, FromAxisAngle, FromEuler if (self.get_count_in(select_current) == 3): if (select_current == 'Lerp') or (select_current == 'Slerp'): while (len(self.inputs) < 3): - self.add_input('NodeSocketVector', 'From') - self.add_input('NodeSocketVector', 'To') - self.add_input('NodeSocketFloat', 'T') + self.add_input('ArmVectorSocket', 'From') + self.add_input('ArmVectorSocket', 'To') + self.add_input('ArmFloatSocket', 'T') if (select_current == 'FromAxisAngle'): - self.add_input('NodeSocketVector', 'Quaternion') - self.add_input('NodeSocketVector', 'Axis') - self.add_input('NodeSocketFloat', 'Angle') + self.add_input('ArmVectorSocket', 'Quaternion') + self.add_input('ArmVectorSocket', 'Axis') + self.add_input('ArmFloatSocket', 'Angle') if (select_current == 'FromEuler'): - self.add_input('NodeSocketFloat', 'X') - self.add_input('NodeSocketFloat', 'Y') - self.add_input('NodeSocketFloat', 'Z') + self.add_input('ArmFloatSocket', 'X') + self.add_input('ArmFloatSocket', 'Y') + self.add_input('ArmFloatSocket', 'Z') # 2 arguments: FromTo, FromMat, FromRotationMat, ToAxisAngle if (self.get_count_in(select_current) == 2): if (select_current == 'FromTo'): - self.add_input('NodeSocketVector', 'Vector ' + str(len(self.inputs))) - self.add_input('NodeSocketVector', 'Vector ' + str(len(self.inputs))) + self.add_input('ArmVectorSocket', 'Vector ' + str(len(self.inputs))) + self.add_input('ArmVectorSocket', 'Vector ' + str(len(self.inputs))) if (select_current == 'FromMat') or (select_current == 'FromRotationMat'): - self.add_input('NodeSocketVector', 'Quaternion') - self.add_input('NodeSocketShader', 'Matrix') + self.add_input('ArmVectorSocket', 'Quaternion') + self.add_input('ArmDynamicSocket', 'Matrix') if (select_current == 'ToAxisAngle'): - self.add_input('NodeSocketVector', 'Quaternion') - self.add_input('NodeSocketVector', 'Axis') - self.add_output('NodeSocketFloat', 'Angle') + self.add_input('ArmVectorSocket', 'Quaternion') + self.add_input('ArmVectorSocket', 'Axis') + self.add_output('ArmFloatSocket', 'Angle') # 1 argument: Module, Normalize, GetEuler if (self.get_count_in(select_current) == 1): - self.add_input('NodeSocketVector', 'Quaternion') + self.add_input('ArmVectorSocket', 'Quaternion') if (select_current == 'Module'): - self.add_output('NodeSocketFloat', 'Module') + self.add_output('ArmFloatSocket', 'Module') self['property0'] = value property0: HaxeEnumProperty( @@ -157,9 +157,9 @@ class QuaternionMathNode(ArmLogicTreeNode): def init(self, context): super(QuaternionMathNode, self).init(context) - self.add_input('NodeSocketVector', 'Quaternion 0', default_value=[0.0, 0.0, 0.0]) - self.add_input('NodeSocketVector', 'Quaternion 1', default_value=[0.0, 0.0, 0.0]) - self.add_output('NodeSocketVector', 'Result') + self.add_input('ArmVectorSocket', 'Quaternion 0', default_value=[0.0, 0.0, 0.0]) + self.add_input('ArmVectorSocket', 'Quaternion 1', default_value=[0.0, 0.0, 0.0]) + self.add_output('ArmVectorSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property1') # Separator Out @@ -175,9 +175,9 @@ class QuaternionMathNode(ArmLogicTreeNode): else: op.name_format = 'Value {0}' if (self.property0 == "MultiplyFloats"): - op.socket_type = 'NodeSocketFloat' + op.socket_type = 'ArmFloatSocket' else: - op.socket_type = 'NodeSocketVector' + op.socket_type = 'ArmVectorSocket' column = row.column(align=True) op = column.operator('arm.node_remove_input', text='', icon='X', emboss=True) op.node_index = str(id(self)) diff --git a/blender/arm/logicnode/math/LN_rad_to_deg.py b/blender/arm/logicnode/math/LN_rad_to_deg.py index 2e13666b..2335acb2 100644 --- a/blender/arm/logicnode/math/LN_rad_to_deg.py +++ b/blender/arm/logicnode/math/LN_rad_to_deg.py @@ -9,6 +9,6 @@ class RadToDegNode(ArmLogicTreeNode): def init(self, context): super(RadToDegNode, self).init(context) - self.add_input('NodeSocketFloat', 'Radians') + self.add_input('ArmFloatSocket', 'Radians') - self.add_output('NodeSocketFloat', 'Degrees') + self.add_output('ArmFloatSocket', 'Degrees') diff --git a/blender/arm/logicnode/math/LN_screen_to_world_space.py b/blender/arm/logicnode/math/LN_screen_to_world_space.py index b01ac4e1..0a6c2375 100644 --- a/blender/arm/logicnode/math/LN_screen_to_world_space.py +++ b/blender/arm/logicnode/math/LN_screen_to_world_space.py @@ -14,24 +14,24 @@ class ScreenToWorldSpaceNode(ArmLogicTreeNode): def init(self, context): super(ScreenToWorldSpaceNode, self).init(context) - self.add_input('NodeSocketInt', 'Screen X') - self.add_input('NodeSocketInt', 'Screen Y') + self.add_input('ArmIntSocket', 'Screen X') + self.add_input('ArmIntSocket', 'Screen Y') - self.add_output('NodeSocketVector', 'World') - self.add_output('NodeSocketVector', 'Direction') + self.add_output('ArmVectorSocket', 'World') + self.add_output('ArmVectorSocket', 'Direction') def draw_buttons(self, context, layout): layout.prop(self, 'property0') # Separator Out if self.property0: if len(self.outputs) < self.max_outputs: self.outputs.remove(self.outputs.values()[-1]) # Direction vector - self.add_output('NodeSocketFloat', 'X') # World X - self.add_output('NodeSocketFloat', 'Y') # World Y - self.add_output('NodeSocketFloat', 'Z') # World Z - self.add_output('NodeSocketVector', 'Direction') # Vector - self.add_output('NodeSocketFloat', 'X') # Direction X - self.add_output('NodeSocketFloat', 'Y') # Direction Y - self.add_output('NodeSocketFloat', 'Z') # Direction Z + self.add_output('ArmFloatSocket', 'X') # World X + self.add_output('ArmFloatSocket', 'Y') # World Y + self.add_output('ArmFloatSocket', 'Z') # World Z + self.add_output('ArmVectorSocket', 'Direction') # Vector + self.add_output('ArmFloatSocket', 'X') # Direction X + self.add_output('ArmFloatSocket', 'Y') # Direction Y + self.add_output('ArmFloatSocket', 'Z') # Direction Z else: if len(self.outputs) == self.max_outputs: self.outputs.remove(self.outputs.values()[-1]) # Z @@ -41,4 +41,4 @@ class ScreenToWorldSpaceNode(ArmLogicTreeNode): self.outputs.remove(self.outputs.values()[-1]) # Z self.outputs.remove(self.outputs.values()[-1]) # Y self.outputs.remove(self.outputs.values()[-1]) # X - self.add_output('NodeSocketVector', 'Direction') + self.add_output('ArmVectorSocket', 'Direction') diff --git a/blender/arm/logicnode/math/LN_separate_quaternion.py b/blender/arm/logicnode/math/LN_separate_quaternion.py index fcd9abf6..10d81ded 100644 --- a/blender/arm/logicnode/math/LN_separate_quaternion.py +++ b/blender/arm/logicnode/math/LN_separate_quaternion.py @@ -9,9 +9,9 @@ class SeparateQuaternionNode(ArmLogicTreeNode): def init(self, context): super(SeparateQuaternionNode, self).init(context) - self.add_input('NodeSocketVector', 'Quaternion') + self.add_input('ArmVectorSocket', 'Quaternion') - self.add_output('NodeSocketFloat', 'X') - self.add_output('NodeSocketFloat', 'Y') - self.add_output('NodeSocketFloat', 'Z') - self.add_output('NodeSocketFloat', 'W') + self.add_output('ArmFloatSocket', 'X') + self.add_output('ArmFloatSocket', 'Y') + self.add_output('ArmFloatSocket', 'Z') + self.add_output('ArmFloatSocket', 'W') diff --git a/blender/arm/logicnode/math/LN_separate_rgb.py b/blender/arm/logicnode/math/LN_separate_rgb.py index b95c3e32..e76766f1 100644 --- a/blender/arm/logicnode/math/LN_separate_rgb.py +++ b/blender/arm/logicnode/math/LN_separate_rgb.py @@ -9,8 +9,8 @@ class SeparateColorNode(ArmLogicTreeNode): def init(self, context): super(SeparateColorNode, self).init(context) - self.add_input('NodeSocketColor', 'Color', default_value=[1.0, 1.0, 1.0, 1.0]) + self.add_input('ArmColorSocket', 'Color', default_value=[1.0, 1.0, 1.0, 1.0]) - self.add_output('NodeSocketFloat', 'R') - self.add_output('NodeSocketFloat', 'G') - self.add_output('NodeSocketFloat', 'B') + self.add_output('ArmFloatSocket', 'R') + self.add_output('ArmFloatSocket', 'G') + self.add_output('ArmFloatSocket', 'B') diff --git a/blender/arm/logicnode/math/LN_separate_xyz.py b/blender/arm/logicnode/math/LN_separate_xyz.py index d1cc1316..c2e33ecd 100644 --- a/blender/arm/logicnode/math/LN_separate_xyz.py +++ b/blender/arm/logicnode/math/LN_separate_xyz.py @@ -9,8 +9,8 @@ class SeparateVectorNode(ArmLogicTreeNode): def init(self, context): super(SeparateVectorNode, self).init(context) - self.add_input('NodeSocketVector', 'Vector') + self.add_input('ArmVectorSocket', 'Vector') - self.add_output('NodeSocketFloat', 'X') - self.add_output('NodeSocketFloat', 'Y') - self.add_output('NodeSocketFloat', 'Z') + self.add_output('ArmFloatSocket', 'X') + self.add_output('ArmFloatSocket', 'Y') + self.add_output('ArmFloatSocket', 'Z') diff --git a/blender/arm/logicnode/math/LN_vector_clamp.py b/blender/arm/logicnode/math/LN_vector_clamp.py index 3a47c025..744880ef 100644 --- a/blender/arm/logicnode/math/LN_vector_clamp.py +++ b/blender/arm/logicnode/math/LN_vector_clamp.py @@ -9,8 +9,8 @@ class VectorClampToSizeNode(ArmLogicTreeNode): def init(self, context): super(VectorClampToSizeNode, self).init(context) - self.add_input('NodeSocketVector', 'Vector In', default_value=[0.0, 0.0, 0.0]) - self.add_input('NodeSocketFloat', 'Min') - self.add_input('NodeSocketFloat', 'Max') + self.add_input('ArmVectorSocket', 'Vector In', default_value=[0.0, 0.0, 0.0]) + self.add_input('ArmFloatSocket', 'Min') + self.add_input('ArmFloatSocket', 'Max') - self.add_output('NodeSocketVector', 'Vector Out') + self.add_output('ArmVectorSocket', 'Vector Out') diff --git a/blender/arm/logicnode/math/LN_vector_math.py b/blender/arm/logicnode/math/LN_vector_math.py index 517babbf..7654d151 100644 --- a/blender/arm/logicnode/math/LN_vector_math.py +++ b/blender/arm/logicnode/math/LN_vector_math.py @@ -17,15 +17,15 @@ class VectorMathNode(ArmLogicTreeNode): if value: if (self.property0 == 'Length') or (self.property0 == 'Distance') or (self.property0 == 'Dot Product'): self.outputs.remove(self.outputs.values()[-1]) # Distance/Length/Scalar - self.add_output('NodeSocketFloat', 'X') # Result X - self.add_output('NodeSocketFloat', 'Y') # Result Y - self.add_output('NodeSocketFloat', 'Z') # Result Z + self.add_output('ArmFloatSocket', 'X') # Result X + self.add_output('ArmFloatSocket', 'Y') # Result Y + self.add_output('ArmFloatSocket', 'Z') # Result Z if (self.property0 == 'Length'): - self.add_output('NodeSocketFloat', 'Length') # Length + self.add_output('ArmFloatSocket', 'Length') # Length if (self.property0 == 'Distance'): - self.add_output('NodeSocketFloat', 'Distance') # Distance + self.add_output('ArmFloatSocket', 'Distance') # Distance if (self.property0 == 'Dot Product'): - self.add_output('NodeSocketFloat', 'Scalar') # Scalar + self.add_output('ArmFloatSocket', 'Scalar') # Scalar else: if ((self.property0 == 'Length') or (self.property0 == 'Distance') or (self.property0 == 'Dot Product')) and (len(self.outputs) > 1): self.outputs.remove(self.outputs.values()[-1]) # Distance/Length/Scalar @@ -36,11 +36,11 @@ class VectorMathNode(ArmLogicTreeNode): else: break if (self.property0 == 'Length'): - self.add_output('NodeSocketFloat', 'Length') # Length + self.add_output('ArmFloatSocket', 'Length') # Length if (self.property0 == 'Distance'): - self.add_output('NodeSocketFloat', 'Distance') # Distance + self.add_output('ArmFloatSocket', 'Distance') # Distance if (self.property0 == 'Dot Product'): - self.add_output('NodeSocketFloat', 'Scalar') # Scalar + self.add_output('ArmFloatSocket', 'Scalar') # Scalar property1: HaxeBoolProperty('property1', name='Separator Out', default=False, set=set_bool, get=get_bool) @@ -80,12 +80,12 @@ class VectorMathNode(ArmLogicTreeNode): while (len(self.inputs) > 1): self.inputs.remove(self.inputs.values()[-1]) if (select_current == "MultiplyFloats"): - self.add_input('NodeSocketFloat', 'Value ' + str(len(self.inputs))) + self.add_input('ArmFloatSocket', 'Value ' + str(len(self.inputs))) else: while (len(self.inputs) < 2): - self.add_input('NodeSocketVector', 'Value ' + str(len(self.inputs))) + self.add_input('ArmVectorSocket', 'Value ' + str(len(self.inputs))) if (select_current == 'Dot Product'): - self.add_output('NodeSocketFloat', 'Scalar') + self.add_output('ArmFloatSocket', 'Scalar') # 2 arguments: Distance, Reflect if (self.get_count_in(select_current) == 2): count = 2 @@ -94,15 +94,15 @@ class VectorMathNode(ArmLogicTreeNode): while (len(self.inputs) > count): self.inputs.remove(self.inputs.values()[-1]) while (len(self.inputs) < 2): - self.add_input('NodeSocketVector', 'Value ' + str(len(self.inputs))) + self.add_input('ArmVectorSocket', 'Value ' + str(len(self.inputs))) if (select_current == 'Distance'): - self.add_output('NodeSocketFloat', 'Distance') + self.add_output('ArmFloatSocket', 'Distance') # 1 argument: Normalize, Length if (self.get_count_in(select_current) == 1): while (len(self.inputs) > 1): self.inputs.remove(self.inputs.values()[-1]) if (select_current == 'Length'): - self.add_output('NodeSocketFloat', 'Length') + self.add_output('ArmFloatSocket', 'Length') self['property0'] = value property0: HaxeEnumProperty( @@ -125,10 +125,10 @@ class VectorMathNode(ArmLogicTreeNode): def init(self, context): super(VectorMathNode, self).init(context) - self.add_input('NodeSocketVector', 'Value 0', default_value=[0.0, 0.0, 0.0]) - self.add_input('NodeSocketVector', 'Value 1', default_value=[0.0, 0.0, 0.0]) + self.add_input('ArmVectorSocket', 'Value 0', default_value=[0.0, 0.0, 0.0]) + self.add_input('ArmVectorSocket', 'Value 1', default_value=[0.0, 0.0, 0.0]) - self.add_output('NodeSocketVector', 'Result') + self.add_output('ArmVectorSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property1') # Separator Out @@ -141,9 +141,9 @@ class VectorMathNode(ArmLogicTreeNode): op.node_index = str(id(self)) op.name_format = 'Value {0}' if (self.property0 == "MultiplyFloats"): - op.socket_type = 'NodeSocketFloat' + op.socket_type = 'ArmFloatSocket' else: - op.socket_type = 'NodeSocketVector' + op.socket_type = 'ArmVectorSocket' column = row.column(align=True) op = column.operator('arm.node_remove_input', text='', icon='X', emboss=True) op.node_index = str(id(self)) diff --git a/blender/arm/logicnode/math/LN_world_to_screen_space.py b/blender/arm/logicnode/math/LN_world_to_screen_space.py index 53b91b54..6b8f519c 100644 --- a/blender/arm/logicnode/math/LN_world_to_screen_space.py +++ b/blender/arm/logicnode/math/LN_world_to_screen_space.py @@ -9,6 +9,6 @@ class WorldToScreenSpaceNode(ArmLogicTreeNode): def init(self, context): super(WorldToScreenSpaceNode, self).init(context) - self.add_input('NodeSocketVector', 'World') + self.add_input('ArmVectorSocket', 'World') - self.add_output('NodeSocketVector', 'Screen') + self.add_output('ArmVectorSocket', 'Screen') diff --git a/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py b/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py index acac1ad3..d2999718 100644 --- a/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py +++ b/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py @@ -8,11 +8,11 @@ class VectorFromBooleanNode(ArmLogicTreeNode): def init(self, context): super(VectorFromBooleanNode, self).init(context) - self.inputs.new('NodeSocketBool', 'X') - self.inputs.new('NodeSocketBool', '-X') - self.inputs.new('NodeSocketBool', 'Y') - self.inputs.new('NodeSocketBool', '-Y') - self.inputs.new('NodeSocketBool', 'Z') - self.inputs.new('NodeSocketBool', '-Z') + self.inputs.new('ArmBoolSocket', 'X') + self.inputs.new('ArmBoolSocket', '-X') + self.inputs.new('ArmBoolSocket', 'Y') + self.inputs.new('ArmBoolSocket', '-Y') + self.inputs.new('ArmBoolSocket', 'Z') + self.inputs.new('ArmBoolSocket', '-Z') - self.outputs.new('NodeSocketVector', 'Vector') + self.outputs.new('ArmVectorSocket', 'Vector') diff --git a/blender/arm/logicnode/miscellaneous/LN_default_if_null.py b/blender/arm/logicnode/miscellaneous/LN_default_if_null.py index 2437c3a2..d2bcf730 100644 --- a/blender/arm/logicnode/miscellaneous/LN_default_if_null.py +++ b/blender/arm/logicnode/miscellaneous/LN_default_if_null.py @@ -12,7 +12,7 @@ class DefaultIfNullNode(ArmLogicTreeNode): def init(self, context): super(DefaultIfNullNode, self).init(context) - self.inputs.new('NodeSocketShader', 'Value In') - self.inputs.new('NodeSocketShader', 'Default') + self.inputs.new('ArmDynamicSocket', 'Value In') + self.inputs.new('ArmDynamicSocket', 'Default') - self.outputs.new('NodeSocketShader', 'Value Out') + self.outputs.new('ArmDynamicSocket', 'Value Out') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_application_time.py b/blender/arm/logicnode/miscellaneous/LN_get_application_time.py index 602d9856..2e4301d6 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_application_time.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_application_time.py @@ -8,5 +8,5 @@ class TimeNode(ArmLogicTreeNode): def init(self, context): super(TimeNode, self).init(context) - self.add_output('NodeSocketFloat', 'Time') - self.add_output('NodeSocketFloat', 'Delta') + self.add_output('ArmFloatSocket', 'Time') + self.add_output('ArmFloatSocket', 'Delta') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py b/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py index 2ea657b0..5bd6653e 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py @@ -8,6 +8,6 @@ class GetDebugConsoleSettings(ArmLogicTreeNode): def init(self, context): super(GetDebugConsoleSettings, self).init(context) - self.add_output('NodeSocketBool', 'Visible') - self.add_output('NodeSocketFloat', 'Scale') - self.add_output('NodeSocketString', 'Position') + self.add_output('ArmBoolSocket', 'Visible') + self.add_output('ArmFloatSocket', 'Scale') + self.add_output('ArmStringSocket', 'Position') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py b/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py index 560d053f..42399587 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py @@ -12,5 +12,5 @@ class DisplayInfoNode(ArmLogicTreeNode): def init(self, context): super(DisplayInfoNode, self).init(context) - self.add_output('NodeSocketInt', 'Width') - self.add_output('NodeSocketInt', 'Height') + self.add_output('ArmIntSocket', 'Width') + self.add_output('ArmIntSocket', 'Height') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_fps.py b/blender/arm/logicnode/miscellaneous/LN_get_fps.py index bd2b76ae..cd693644 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_fps.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_fps.py @@ -8,4 +8,4 @@ class GetFPSNode(ArmLogicTreeNode): def init(self, context): super(GetFPSNode, self).init(context) - self.add_output('NodeSocketInt', 'Count') + self.add_output('ArmIntSocket', 'Count') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py b/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py index 8fd5b504..1870da26 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py @@ -12,5 +12,5 @@ class WindowInfoNode(ArmLogicTreeNode): def init(self, context): super(WindowInfoNode, self).init(context) - self.add_output('NodeSocketInt', 'Width') - self.add_output('NodeSocketInt', 'Height') + self.add_output('ArmIntSocket', 'Width') + self.add_output('ArmIntSocket', 'Height') diff --git a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py index 2a02a150..56d64c89 100644 --- a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py +++ b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py @@ -16,8 +16,8 @@ class SetDebugConsoleSettings(ArmLogicTreeNode): def init(self, context): super(SetDebugConsoleSettings, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Visible') - self.add_input('NodeSocketFloat', 'Scale') + self.add_input('ArmBoolSocket', 'Visible') + self.add_input('ArmFloatSocket', 'Scale') self.inputs[-1].default_value = 1.0 self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py b/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py index aff8c194..3cad6073 100644 --- a/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py +++ b/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py @@ -9,6 +9,6 @@ class SetTimeScaleNode(ArmLogicTreeNode): def init(self, context): super(SetTimeScaleNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'Scale', default_value=1.0) + self.add_input('ArmFloatSocket', 'Scale', default_value=1.0) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/miscellaneous/LN_sleep.py b/blender/arm/logicnode/miscellaneous/LN_sleep.py index 0d2e4c82..778bd260 100644 --- a/blender/arm/logicnode/miscellaneous/LN_sleep.py +++ b/blender/arm/logicnode/miscellaneous/LN_sleep.py @@ -10,6 +10,6 @@ class SleepNode(ArmLogicTreeNode): def init(self, context): super(SleepNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'Time') + self.add_input('ArmFloatSocket', 'Time') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/miscellaneous/LN_timer.py b/blender/arm/logicnode/miscellaneous/LN_timer.py index d74d7197..0d9e8ce2 100644 --- a/blender/arm/logicnode/miscellaneous/LN_timer.py +++ b/blender/arm/logicnode/miscellaneous/LN_timer.py @@ -11,16 +11,16 @@ class TimerNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketAction', 'Start') self.add_input('ArmNodeSocketAction', 'Pause') self.add_input('ArmNodeSocketAction', 'Stop') - self.add_input('NodeSocketFloat', 'Duration', default_value=1.0) - self.add_input('NodeSocketInt', 'Repeat') + self.add_input('ArmFloatSocket', 'Duration', default_value=1.0) + self.add_input('ArmIntSocket', 'Repeat') self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketAction', 'Done') - self.add_output('NodeSocketBool', 'Running') - self.add_output('NodeSocketInt', 'Time Passed') - self.add_output('NodeSocketInt', 'Time Left') - self.add_output('NodeSocketFloat', 'Progress') - self.add_output('NodeSocketFloat', 'Repetitions') + self.add_output('ArmBoolSocket', 'Running') + self.add_output('ArmIntSocket', 'Time Passed') + self.add_output('ArmIntSocket', 'Time Left') + self.add_output('ArmFloatSocket', 'Progress') + self.add_output('ArmFloatSocket', 'Repetitions') def draw_label(self) -> str: inp_duration = self.inputs['Duration'] diff --git a/blender/arm/logicnode/native/LN_call_haxe_static.py b/blender/arm/logicnode/native/LN_call_haxe_static.py index eb288074..3b266d22 100644 --- a/blender/arm/logicnode/native/LN_call_haxe_static.py +++ b/blender/arm/logicnode/native/LN_call_haxe_static.py @@ -13,7 +13,7 @@ class CallHaxeStaticNode(ArmLogicTreeNode): def init(self, context): super(CallHaxeStaticNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Function') + self.add_input('ArmStringSocket', 'Function') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketShader', 'Result') + self.add_output('ArmDynamicSocket', 'Result') diff --git a/blender/arm/logicnode/native/LN_detect_mobile_browser.py b/blender/arm/logicnode/native/LN_detect_mobile_browser.py index d49f62cf..e2e7afed 100644 --- a/blender/arm/logicnode/native/LN_detect_mobile_browser.py +++ b/blender/arm/logicnode/native/LN_detect_mobile_browser.py @@ -8,4 +8,4 @@ class DetectMobileBrowserNode(ArmLogicTreeNode): def init(self, context): super(DetectMobileBrowserNode, self).init(context) - self.add_output('NodeSocketBool', 'Mobile') \ No newline at end of file + self.add_output('ArmBoolSocket', 'Mobile') diff --git a/blender/arm/logicnode/native/LN_expression.py b/blender/arm/logicnode/native/LN_expression.py index d2d7e853..092612ed 100644 --- a/blender/arm/logicnode/native/LN_expression.py +++ b/blender/arm/logicnode/native/LN_expression.py @@ -16,7 +16,7 @@ class ExpressionNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketShader', 'Result') + self.add_output('ArmDynamicSocket', 'Result') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/native/LN_get_haxe_property.py b/blender/arm/logicnode/native/LN_get_haxe_property.py index 20721fc7..71d1db4e 100644 --- a/blender/arm/logicnode/native/LN_get_haxe_property.py +++ b/blender/arm/logicnode/native/LN_get_haxe_property.py @@ -11,7 +11,7 @@ class GetHaxePropertyNode(ArmLogicTreeNode): def init(self, context): super(GetHaxePropertyNode, self).init(context) - self.add_input('NodeSocketShader', 'Dynamic') - self.add_input('NodeSocketString', 'Property') + self.add_input('ArmDynamicSocket', 'Dynamic') + self.add_input('ArmStringSocket', 'Property') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/native/LN_get_system_language.py b/blender/arm/logicnode/native/LN_get_system_language.py index 6989f361..4c0af5e2 100644 --- a/blender/arm/logicnode/native/LN_get_system_language.py +++ b/blender/arm/logicnode/native/LN_get_system_language.py @@ -9,4 +9,4 @@ class GetSystemLanguage(ArmLogicTreeNode): def init(self, context): super(GetSystemLanguage, self).init(context) - self.add_output('NodeSocketString', 'Language') + self.add_output('ArmStringSocket', 'Language') diff --git a/blender/arm/logicnode/native/LN_get_system_name.py b/blender/arm/logicnode/native/LN_get_system_name.py index 2f7bf8dc..95f71053 100644 --- a/blender/arm/logicnode/native/LN_get_system_name.py +++ b/blender/arm/logicnode/native/LN_get_system_name.py @@ -10,9 +10,9 @@ class GetSystemName(ArmLogicTreeNode): def init(self, context): super(GetSystemName, self).init(context) - self.add_output('NodeSocketString', 'System Name') - self.add_output('NodeSocketBool', 'Windows') - self.add_output('NodeSocketBool', 'Linux') - self.add_output('NodeSocketBool', 'Mac') - self.add_output('NodeSocketBool', 'HTML5') - self.add_output('NodeSocketBool', 'Android') + self.add_output('ArmStringSocket', 'System Name') + self.add_output('ArmBoolSocket', 'Windows') + self.add_output('ArmBoolSocket', 'Linux') + self.add_output('ArmBoolSocket', 'Mac') + self.add_output('ArmBoolSocket', 'HTML5') + self.add_output('ArmBoolSocket', 'Android') diff --git a/blender/arm/logicnode/native/LN_loadUrl.py b/blender/arm/logicnode/native/LN_loadUrl.py index c180f456..ee885e80 100644 --- a/blender/arm/logicnode/native/LN_loadUrl.py +++ b/blender/arm/logicnode/native/LN_loadUrl.py @@ -9,4 +9,4 @@ class LoadUrlNode(ArmLogicTreeNode): def init(self, context): super(LoadUrlNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'URL') + self.add_input('ArmStringSocket', 'URL') diff --git a/blender/arm/logicnode/native/LN_print.py b/blender/arm/logicnode/native/LN_print.py index b04ea907..8c3310a2 100644 --- a/blender/arm/logicnode/native/LN_print.py +++ b/blender/arm/logicnode/native/LN_print.py @@ -9,6 +9,6 @@ class PrintNode(ArmLogicTreeNode): def init(self, context): super(PrintNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'String') + self.add_input('ArmStringSocket', 'String') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/native/LN_read_file.py b/blender/arm/logicnode/native/LN_read_file.py index e87d152a..a42c269d 100644 --- a/blender/arm/logicnode/native/LN_read_file.py +++ b/blender/arm/logicnode/native/LN_read_file.py @@ -12,8 +12,8 @@ class ReadFileNode(ArmLogicTreeNode): def init(self, context): super(ReadFileNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'File') - self.add_input('NodeSocketBool', 'Use cache', default_value=1) + self.add_input('ArmStringSocket', 'File') + self.add_input('ArmBoolSocket', 'Use cache', default_value=1) self.add_output('ArmNodeSocketAction', 'Loaded') - self.add_output('NodeSocketString', 'String') + self.add_output('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/native/LN_read_json.py b/blender/arm/logicnode/native/LN_read_json.py index 24192ce8..7bb6b04e 100644 --- a/blender/arm/logicnode/native/LN_read_json.py +++ b/blender/arm/logicnode/native/LN_read_json.py @@ -12,8 +12,8 @@ class ReadJsonNode(ArmLogicTreeNode): def init(self, context): super(ReadJsonNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'File') - self.add_input('NodeSocketBool', 'Use cache', default_value=1) + self.add_input('ArmStringSocket', 'File') + self.add_input('ArmBoolSocket', 'Use cache', default_value=1) self.add_output('ArmNodeSocketAction', 'Loaded') - self.add_output('NodeSocketShader', 'Dynamic') + self.add_output('ArmDynamicSocket', 'Dynamic') diff --git a/blender/arm/logicnode/native/LN_read_storage.py b/blender/arm/logicnode/native/LN_read_storage.py index af9fd7c9..144c5bef 100644 --- a/blender/arm/logicnode/native/LN_read_storage.py +++ b/blender/arm/logicnode/native/LN_read_storage.py @@ -11,7 +11,7 @@ class ReadStorageNode(ArmLogicTreeNode): def init(self, context): super(ReadStorageNode, self).init(context) - self.add_input('NodeSocketString', 'Key') - self.add_input('NodeSocketString', 'Default') + self.add_input('ArmStringSocket', 'Key') + self.add_input('ArmStringSocket', 'Default') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/native/LN_script.py b/blender/arm/logicnode/native/LN_script.py index c308bfe6..4d04ddc9 100644 --- a/blender/arm/logicnode/native/LN_script.py +++ b/blender/arm/logicnode/native/LN_script.py @@ -23,7 +23,7 @@ class ScriptNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketArray', 'Array') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketShader', 'Result') + self.add_output('ArmDynamicSocket', 'Result') def draw_buttons(self, context, layout): layout.prop_search(self, 'property0_', bpy.data, 'texts', icon='NONE', text='') diff --git a/blender/arm/logicnode/native/LN_set_haxe_property.py b/blender/arm/logicnode/native/LN_set_haxe_property.py index 443123ff..664fbc0a 100644 --- a/blender/arm/logicnode/native/LN_set_haxe_property.py +++ b/blender/arm/logicnode/native/LN_set_haxe_property.py @@ -12,8 +12,8 @@ class SetHaxePropertyNode(ArmLogicTreeNode): def init(self, context): super(SetHaxePropertyNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Dynamic') - self.add_input('NodeSocketString', 'Property') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Dynamic') + self.add_input('ArmStringSocket', 'Property') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/native/LN_set_vibrate.py b/blender/arm/logicnode/native/LN_set_vibrate.py index 6136a47e..bc340e96 100644 --- a/blender/arm/logicnode/native/LN_set_vibrate.py +++ b/blender/arm/logicnode/native/LN_set_vibrate.py @@ -11,7 +11,7 @@ class SetVibrateNode(ArmLogicTreeNode): def init(self, context): super(SetVibrateNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketInt', 'Milliseconds') + self.add_input('ArmIntSocket', 'Milliseconds') self.inputs[-1].default_value = 100 self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/native/LN_write_file.py b/blender/arm/logicnode/native/LN_write_file.py index 6b04d57d..683cec21 100644 --- a/blender/arm/logicnode/native/LN_write_file.py +++ b/blender/arm/logicnode/native/LN_write_file.py @@ -12,5 +12,5 @@ class WriteFileNode(ArmLogicTreeNode): def init(self, context): super(WriteFileNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'File') - self.add_input('NodeSocketString', 'String') + self.add_input('ArmStringSocket', 'File') + self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/native/LN_write_json.py b/blender/arm/logicnode/native/LN_write_json.py index 366fc008..1694e353 100644 --- a/blender/arm/logicnode/native/LN_write_json.py +++ b/blender/arm/logicnode/native/LN_write_json.py @@ -12,5 +12,5 @@ class WriteJsonNode(ArmLogicTreeNode): def init(self, context): super(WriteJsonNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'File') - self.add_input('NodeSocketShader', 'Dynamic') + self.add_input('ArmStringSocket', 'File') + self.add_input('ArmDynamicSocket', 'Dynamic') diff --git a/blender/arm/logicnode/native/LN_write_storage.py b/blender/arm/logicnode/native/LN_write_storage.py index b829a2bb..bc9a58b0 100644 --- a/blender/arm/logicnode/native/LN_write_storage.py +++ b/blender/arm/logicnode/native/LN_write_storage.py @@ -12,7 +12,7 @@ class WriteStorageNode(ArmLogicTreeNode): def init(self, context): super(WriteStorageNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Key') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmStringSocket', 'Key') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/navmesh/LN_go_to_location.py b/blender/arm/logicnode/navmesh/LN_go_to_location.py index eba3cf97..be97f2eb 100644 --- a/blender/arm/logicnode/navmesh/LN_go_to_location.py +++ b/blender/arm/logicnode/navmesh/LN_go_to_location.py @@ -10,7 +10,7 @@ class GoToLocationNode(ArmLogicTreeNode): super(GoToLocationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Location') + self.add_input('ArmDynamicSocket', 'Location') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/navmesh/LN_navigable_location.py b/blender/arm/logicnode/navmesh/LN_navigable_location.py index 5d25dc36..f6850bbc 100644 --- a/blender/arm/logicnode/navmesh/LN_navigable_location.py +++ b/blender/arm/logicnode/navmesh/LN_navigable_location.py @@ -8,4 +8,4 @@ class NavigableLocationNode(ArmLogicTreeNode): def init(self, context): super(NavigableLocationNode, self).init(context) - self.add_output('NodeSocketShader', 'Location') + self.add_output('ArmDynamicSocket', 'Location') diff --git a/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py b/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py index c70dfba8..063174c7 100644 --- a/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py +++ b/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py @@ -9,6 +9,6 @@ class PickLocationNode(ArmLogicTreeNode): def init(self, context): super(PickLocationNode, self).init(context) self.add_input('ArmNodeSocketObject', 'NavMesh') - self.add_input('NodeSocketVector', 'Screen Coords') + self.add_input('ArmVectorSocket', 'Screen Coords') - self.add_output('NodeSocketVector', 'Location') + self.add_output('ArmVectorSocket', 'Location') diff --git a/blender/arm/logicnode/object/LN_get_distance.py b/blender/arm/logicnode/object/LN_get_distance.py index 0d4b5a3a..13b6a5be 100644 --- a/blender/arm/logicnode/object/LN_get_distance.py +++ b/blender/arm/logicnode/object/LN_get_distance.py @@ -14,4 +14,4 @@ class GetDistanceNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketFloat', 'Distance') + self.add_output('ArmFloatSocket', 'Distance') diff --git a/blender/arm/logicnode/object/LN_get_object_by_name.py b/blender/arm/logicnode/object/LN_get_object_by_name.py index ae39b4e1..92c7220d 100644 --- a/blender/arm/logicnode/object/LN_get_object_by_name.py +++ b/blender/arm/logicnode/object/LN_get_object_by_name.py @@ -12,6 +12,6 @@ class GetObjectNode(ArmLogicTreeNode): def init(self, context): super(GetObjectNode, self).init(context) - self.add_input('NodeSocketString', 'Name') + self.add_input('ArmStringSocket', 'Name') self.add_output('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/object/LN_get_object_child.py b/blender/arm/logicnode/object/LN_get_object_child.py index be1b4de3..8ff69a55 100644 --- a/blender/arm/logicnode/object/LN_get_object_child.py +++ b/blender/arm/logicnode/object/LN_get_object_child.py @@ -19,7 +19,7 @@ class GetChildNode(ArmLogicTreeNode): def init(self, context): super(GetChildNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Parent') - self.add_input('NodeSocketString', 'Child Name') + self.add_input('ArmStringSocket', 'Child Name') self.add_output('ArmNodeSocketObject', 'Child') diff --git a/blender/arm/logicnode/object/LN_get_object_mesh.py b/blender/arm/logicnode/object/LN_get_object_mesh.py index ff9cf047..83d45e35 100644 --- a/blender/arm/logicnode/object/LN_get_object_mesh.py +++ b/blender/arm/logicnode/object/LN_get_object_mesh.py @@ -11,4 +11,4 @@ class GetMeshNode(ArmLogicTreeNode): super(GetMeshNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketShader', 'Mesh') + self.add_output('ArmDynamicSocket', 'Mesh') diff --git a/blender/arm/logicnode/object/LN_get_object_name.py b/blender/arm/logicnode/object/LN_get_object_name.py index 8cd79d98..e6938510 100644 --- a/blender/arm/logicnode/object/LN_get_object_name.py +++ b/blender/arm/logicnode/object/LN_get_object_name.py @@ -11,4 +11,4 @@ class GetNameNode(ArmLogicTreeNode): super(GetNameNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketString', 'Name') + self.add_output('ArmStringSocket', 'Name') diff --git a/blender/arm/logicnode/object/LN_get_object_offscreen.py b/blender/arm/logicnode/object/LN_get_object_offscreen.py index 602ce2d0..1eb38bd8 100644 --- a/blender/arm/logicnode/object/LN_get_object_offscreen.py +++ b/blender/arm/logicnode/object/LN_get_object_offscreen.py @@ -11,6 +11,6 @@ class GetObjectOffscreenNode(ArmLogicTreeNode): super(GetObjectOffscreenNode, self).init(context) self.inputs.new('ArmNodeSocketObject', 'Object') - self.outputs.new('NodeSocketBool', 'Is Object Offscreen') - self.outputs.new('NodeSocketBool', 'Is Mesh Offscreen') - self.outputs.new('NodeSocketBool', 'Is Shadow Offscreen') + self.outputs.new('ArmBoolSocket', 'Is Object Offscreen') + self.outputs.new('ArmBoolSocket', 'Is Mesh Offscreen') + self.outputs.new('ArmBoolSocket', 'Is Shadow Offscreen') diff --git a/blender/arm/logicnode/object/LN_get_object_property.py b/blender/arm/logicnode/object/LN_get_object_property.py index 6c2792cf..ecd62857 100644 --- a/blender/arm/logicnode/object/LN_get_object_property.py +++ b/blender/arm/logicnode/object/LN_get_object_property.py @@ -12,7 +12,7 @@ class GetPropertyNode(ArmLogicTreeNode): def init(self, context): super(GetPropertyNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Property') + self.add_input('ArmStringSocket', 'Property') - self.add_output('NodeSocketShader', 'Value') - self.add_output('NodeSocketString', 'Property') + self.add_output('ArmDynamicSocket', 'Value') + self.add_output('ArmStringSocket', 'Property') diff --git a/blender/arm/logicnode/object/LN_get_object_visible.py b/blender/arm/logicnode/object/LN_get_object_visible.py index b04eb1b7..0f3e1b1c 100644 --- a/blender/arm/logicnode/object/LN_get_object_visible.py +++ b/blender/arm/logicnode/object/LN_get_object_visible.py @@ -14,6 +14,6 @@ class GetVisibleNode(ArmLogicTreeNode): super(GetVisibleNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketBool', 'Is Object Visible') - self.add_output('NodeSocketBool', 'Is Mesh Visible') - self.add_output('NodeSocketBool', 'Is Shadow Visible') + self.add_output('ArmBoolSocket', 'Is Object Visible') + self.add_output('ArmBoolSocket', 'Is Mesh Visible') + self.add_output('ArmBoolSocket', 'Is Shadow Visible') diff --git a/blender/arm/logicnode/object/LN_mesh.py b/blender/arm/logicnode/object/LN_mesh.py index d68f2233..cefcca05 100644 --- a/blender/arm/logicnode/object/LN_mesh.py +++ b/blender/arm/logicnode/object/LN_mesh.py @@ -13,7 +13,7 @@ class MeshNode(ArmLogicTreeNode): def init(self, context): super(MeshNode, self).init(context) - self.add_output('NodeSocketShader', 'Mesh', is_var=True) + self.add_output('ArmDynamicSocket', 'Mesh', is_var=True) def draw_buttons(self, context, layout): layout.prop_search(self, 'property0_get', bpy.data, 'meshes', icon='NONE', text='') diff --git a/blender/arm/logicnode/object/LN_remove_object_parent.py b/blender/arm/logicnode/object/LN_remove_object_parent.py index ffe60c13..cbfdb84a 100644 --- a/blender/arm/logicnode/object/LN_remove_object_parent.py +++ b/blender/arm/logicnode/object/LN_remove_object_parent.py @@ -11,6 +11,6 @@ class ClearParentNode(ArmLogicTreeNode): super(ClearParentNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketBool', 'Keep Transform', default_value=True) + self.add_input('ArmBoolSocket', 'Keep Transform', default_value=True) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/object/LN_set_object_mesh.py b/blender/arm/logicnode/object/LN_set_object_mesh.py index 803b25e1..601f36ae 100644 --- a/blender/arm/logicnode/object/LN_set_object_mesh.py +++ b/blender/arm/logicnode/object/LN_set_object_mesh.py @@ -11,6 +11,6 @@ class SetMeshNode(ArmLogicTreeNode): super(SetMeshNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Mesh') + self.add_input('ArmDynamicSocket', 'Mesh') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/object/LN_set_object_name.py b/blender/arm/logicnode/object/LN_set_object_name.py index 921675b9..05f20794 100644 --- a/blender/arm/logicnode/object/LN_set_object_name.py +++ b/blender/arm/logicnode/object/LN_set_object_name.py @@ -11,6 +11,6 @@ class SetNameNode(ArmLogicTreeNode): super(SetNameNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Name') + self.add_input('ArmStringSocket', 'Name') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/object/LN_set_object_property.py b/blender/arm/logicnode/object/LN_set_object_property.py index f5f17e3f..b41494fa 100644 --- a/blender/arm/logicnode/object/LN_set_object_property.py +++ b/blender/arm/logicnode/object/LN_set_object_property.py @@ -18,7 +18,7 @@ class SetPropertyNode(ArmLogicTreeNode): super(SetPropertyNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Property') - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmStringSocket', 'Property') + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/object/LN_set_object_visible.py b/blender/arm/logicnode/object/LN_set_object_visible.py index 76fe036f..53e354a6 100644 --- a/blender/arm/logicnode/object/LN_set_object_visible.py +++ b/blender/arm/logicnode/object/LN_set_object_visible.py @@ -21,8 +21,8 @@ class SetVisibleNode(ArmLogicTreeNode): super(SetVisibleNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketBool', 'Visible') - self.add_input('NodeSocketBool', 'Children', default_value=True) + self.add_input('ArmBoolSocket', 'Visible') + self.add_input('ArmBoolSocket', 'Children', default_value=True) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/object/LN_spawn_object.py b/blender/arm/logicnode/object/LN_spawn_object.py index e4e3722a..49097d86 100644 --- a/blender/arm/logicnode/object/LN_spawn_object.py +++ b/blender/arm/logicnode/object/LN_spawn_object.py @@ -11,8 +11,8 @@ class SpawnObjectNode(ArmLogicTreeNode): super(SpawnObjectNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Transform') - self.add_input('NodeSocketBool', 'Children', default_value=True) + self.add_input('ArmDynamicSocket', 'Transform') + self.add_input('ArmBoolSocket', 'Children', default_value=True) self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/object/LN_spawn_object_by_name.py b/blender/arm/logicnode/object/LN_spawn_object_by_name.py index 970f0bd7..bd629b21 100644 --- a/blender/arm/logicnode/object/LN_spawn_object_by_name.py +++ b/blender/arm/logicnode/object/LN_spawn_object_by_name.py @@ -14,9 +14,9 @@ class SpawnObjectByNameNode(ArmLogicTreeNode): def init(self, context): super(SpawnObjectByNameNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Name') - self.add_input('NodeSocketShader', 'Transform') - self.add_input('NodeSocketBool', 'Children', default_value=True) + self.add_input('ArmStringSocket', 'Name') + self.add_input('ArmDynamicSocket', 'Transform') + self.add_input('ArmBoolSocket', 'Children', default_value=True) self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/physics/LN_Add_rigid_body.py b/blender/arm/logicnode/physics/LN_Add_rigid_body.py index 13fbea61..7376c096 100644 --- a/blender/arm/logicnode/physics/LN_Add_rigid_body.py +++ b/blender/arm/logicnode/physics/LN_Add_rigid_body.py @@ -83,13 +83,13 @@ class AddRigidBodyNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketFloat', 'Mass', 1.0) - self.add_input('NodeSocketBool', 'Active', True) - self.add_input('NodeSocketBool', 'Animated', False) - self.add_input('NodeSocketBool', 'Trigger', False) - self.add_input('NodeSocketFloat', 'Friction', 0.5) - self.add_input('NodeSocketFloat', 'Bounciness', 0.0) - self.add_input('NodeSocketBool', 'Continuous Collision Detection', False) + self.add_input('ArmFloatSocket', 'Mass', 1.0) + self.add_input('ArmBoolSocket', 'Active', True) + self.add_input('ArmBoolSocket', 'Animated', False) + self.add_input('ArmBoolSocket', 'Trigger', False) + self.add_input('ArmFloatSocket', 'Friction', 0.5) + self.add_input('ArmFloatSocket', 'Bounciness', 0.0) + self.add_input('ArmBoolSocket', 'Continuous Collision Detection', False) self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketObject', 'Rigid body') @@ -108,15 +108,15 @@ class AddRigidBodyNode(ArmLogicTreeNode): # Add dynamic input sockets if self.property1_: - self.add_input('NodeSocketBool', 'Collision Margin', False) - self.add_input('NodeSocketFloat', 'Margin', 0.04) - self.add_input('NodeSocketFloat', 'Linear Damping', 0.04) - self.add_input('NodeSocketFloat', 'Angular Damping', 0.1) - self.add_input('NodeSocketBool', 'Use Deacivation') - self.add_input('NodeSocketFloat', 'Linear Velocity Threshold', 0.4) - self.add_input('NodeSocketFloat', 'Angular Velocity Threshold', 0.5) - self.add_input('NodeSocketInt', 'Collision Group', 1) - self.add_input('NodeSocketInt', 'Collision Mask', 1) + self.add_input('ArmBoolSocket', 'Collision Margin', False) + self.add_input('ArmFloatSocket', 'Margin', 0.04) + self.add_input('ArmFloatSocket', 'Linear Damping', 0.04) + self.add_input('ArmFloatSocket', 'Angular Damping', 0.1) + self.add_input('ArmBoolSocket', 'Use Deacivation') + self.add_input('ArmFloatSocket', 'Linear Velocity Threshold', 0.4) + self.add_input('ArmFloatSocket', 'Angular Velocity Threshold', 0.5) + self.add_input('ArmIntSocket', 'Collision Group', 1) + self.add_input('ArmIntSocket', 'Collision Mask', 1) def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/physics/LN_add_physics_constraint.py b/blender/arm/logicnode/physics/LN_add_physics_constraint.py index f8537fa9..89c2d1e0 100644 --- a/blender/arm/logicnode/physics/LN_add_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_add_physics_constraint.py @@ -91,31 +91,31 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): while (len(self.inputs) > 7): self.inputs.remove(self.inputs.values()[-1]) #Z ang limits - self.add_input('NodeSocketBool', 'Z angle') - self.add_input('NodeSocketFloat', 'Z ang lower', -45.0) - self.add_input('NodeSocketFloat', 'Z ang upper', 45.0) + self.add_input('ArmBoolSocket', 'Z angle') + self.add_input('ArmFloatSocket', 'Z ang lower', -45.0) + self.add_input('ArmFloatSocket', 'Z ang upper', 45.0) #Arguements for type Slider if (self.get_count_in(select_current) == 3): while (len(self.inputs) > 7): self.inputs.remove(self.inputs.values()[-1]) #X lin limits - self.add_input('NodeSocketBool', 'X linear') - self.add_input('NodeSocketFloat', 'X lin lower') - self.add_input('NodeSocketFloat', 'X lin upper') + self.add_input('ArmBoolSocket', 'X linear') + self.add_input('ArmFloatSocket', 'X lin lower') + self.add_input('ArmFloatSocket', 'X lin upper') #Arguements for type Piston if (self.get_count_in(select_current) == 4): while (len(self.inputs) > 7): self.inputs.remove(self.inputs.values()[-1]) #X lin limits - self.add_input('NodeSocketBool', 'X linear') - self.add_input('NodeSocketFloat', 'X lin lower') - self.add_input('NodeSocketFloat', 'X lin upper') + self.add_input('ArmBoolSocket', 'X linear') + self.add_input('ArmFloatSocket', 'X lin lower') + self.add_input('ArmFloatSocket', 'X lin upper') #X ang limits - self.add_input('NodeSocketBool', 'X angle') - self.add_input('NodeSocketFloat', 'X ang lower', -45.0) - self.add_input('NodeSocketFloat', 'X ang upper', 45.0) + self.add_input('ArmBoolSocket', 'X angle') + self.add_input('ArmFloatSocket', 'X ang lower', -45.0) + self.add_input('ArmFloatSocket', 'X ang upper', 45.0) #Arguements for type GenericSpring if (self.get_count_in(select_current) == 5): @@ -143,9 +143,9 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketObject', 'Pivot Object') self.add_input('ArmNodeSocketObject', 'RB 1') self.add_input('ArmNodeSocketObject', 'RB 2') - self.add_input('NodeSocketBool', 'Disable Collissions') - self.add_input('NodeSocketBool', 'Breakable') - self.add_input('NodeSocketFloat', 'Breaking Threshold') + self.add_input('ArmBoolSocket', 'Disable Collissions') + self.add_input('ArmBoolSocket', 'Breakable') + self.add_input('ArmFloatSocket', 'Breaking Threshold') self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): @@ -163,7 +163,7 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): column = row.column(align=True) op = column.operator('arm.node_add_input', text='Add Constraint', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketShader' + op.socket_type = 'ArmDynamicSocket' op.name_format = 'Constraint {0}'.format(len(self.inputs) - 6) column1 = row.column(align=True) op = column1.operator('arm.node_remove_input', text='', icon='X', emboss=True) diff --git a/blender/arm/logicnode/physics/LN_apply_force.py b/blender/arm/logicnode/physics/LN_apply_force.py index 57c4a9fa..bfe29b07 100644 --- a/blender/arm/logicnode/physics/LN_apply_force.py +++ b/blender/arm/logicnode/physics/LN_apply_force.py @@ -20,7 +20,7 @@ class ApplyForceNode(ArmLogicTreeNode): super(ApplyForceNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketVector', 'Force') - self.add_input('NodeSocketBool', 'On Local Axis') + self.add_input('ArmVectorSocket', 'Force') + self.add_input('ArmBoolSocket', 'On Local Axis') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_apply_force_at_location.py b/blender/arm/logicnode/physics/LN_apply_force_at_location.py index 8d83efba..7a9de48e 100644 --- a/blender/arm/logicnode/physics/LN_apply_force_at_location.py +++ b/blender/arm/logicnode/physics/LN_apply_force_at_location.py @@ -23,9 +23,9 @@ class ApplyForceAtLocationNode(ArmLogicTreeNode): super(ApplyForceAtLocationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketVector', 'Force') - self.add_input('NodeSocketBool', 'Force On Local Axis') - self.add_input('NodeSocketVector', 'Location') - self.add_input('NodeSocketBool', 'Location On Local Axis') + self.add_input('ArmVectorSocket', 'Force') + self.add_input('ArmBoolSocket', 'Force On Local Axis') + self.add_input('ArmVectorSocket', 'Location') + self.add_input('ArmBoolSocket', 'Location On Local Axis') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_apply_impulse.py b/blender/arm/logicnode/physics/LN_apply_impulse.py index c3ecec3b..ad41b870 100644 --- a/blender/arm/logicnode/physics/LN_apply_impulse.py +++ b/blender/arm/logicnode/physics/LN_apply_impulse.py @@ -20,7 +20,7 @@ class ApplyImpulseNode(ArmLogicTreeNode): super(ApplyImpulseNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketVector', 'Impulse') - self.add_input('NodeSocketBool', 'On Local Axis') + self.add_input('ArmVectorSocket', 'Impulse') + self.add_input('ArmBoolSocket', 'On Local Axis') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py b/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py index fbd0c53c..54a9c0ef 100644 --- a/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py +++ b/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py @@ -23,9 +23,9 @@ class ApplyImpulseAtLocationNode(ArmLogicTreeNode): super(ApplyImpulseAtLocationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketVector', 'Impulse') - self.add_input('NodeSocketBool', 'Impulse On Local Axis') - self.add_input('NodeSocketVector', 'Location') - self.add_input('NodeSocketBool', 'Location On Local Axis') + self.add_input('ArmVectorSocket', 'Impulse') + self.add_input('ArmBoolSocket', 'Impulse On Local Axis') + self.add_input('ArmVectorSocket', 'Location') + self.add_input('ArmBoolSocket', 'Location On Local Axis') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_apply_torque.py b/blender/arm/logicnode/physics/LN_apply_torque.py index 88ca157e..7e00d966 100644 --- a/blender/arm/logicnode/physics/LN_apply_torque.py +++ b/blender/arm/logicnode/physics/LN_apply_torque.py @@ -11,7 +11,7 @@ class ApplyTorqueNode(ArmLogicTreeNode): super(ApplyTorqueNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketVector', 'Torque') - self.add_input('NodeSocketBool', 'On Local Axis') + self.add_input('ArmVectorSocket', 'Torque') + self.add_input('ArmBoolSocket', 'On Local Axis') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_apply_torque_impulse.py b/blender/arm/logicnode/physics/LN_apply_torque_impulse.py index f067cf7f..91662926 100644 --- a/blender/arm/logicnode/physics/LN_apply_torque_impulse.py +++ b/blender/arm/logicnode/physics/LN_apply_torque_impulse.py @@ -11,7 +11,7 @@ class ApplyTorqueImpulseNode(ArmLogicTreeNode): super(ApplyTorqueImpulseNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketVector', 'Torque') - self.add_input('NodeSocketBool', 'On Local Axis') + self.add_input('ArmVectorSocket', 'Torque') + self.add_input('ArmBoolSocket', 'On Local Axis') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_get_rb_data.py b/blender/arm/logicnode/physics/LN_get_rb_data.py index 90637ff5..3671516f 100644 --- a/blender/arm/logicnode/physics/LN_get_rb_data.py +++ b/blender/arm/logicnode/physics/LN_get_rb_data.py @@ -10,17 +10,17 @@ class GetRigidBodyDataNode(ArmLogicTreeNode): def init(self, context): self.inputs.new('ArmNodeSocketObject', 'Object') - self.outputs.new('NodeSocketBool', 'Is RB') - self.outputs.new('NodeSocketInt', 'Collision Group') - self.outputs.new('NodeSocketInt', 'Collision Mask') - self.outputs.new('NodeSocketBool', 'Is Animated') - self.outputs.new('NodeSocketBool', 'Is Static') - self.outputs.new('NodeSocketFloat', 'Angular Damping') - self.outputs.new('NodeSocketFloat', 'Linear Damping') - self.outputs.new('NodeSocketFloat', 'Friction') - self.outputs.new('NodeSocketFloat', 'Mass') - #self.outputs.new('NodeSocketString', 'Collision Shape') - #self.outputs.new('NodeSocketInt', 'Activation State') - #self.outputs.new('NodeSocketBool', 'Is Gravity Enabled') - #self.outputs.new(NodeSocketVector', Angular Factor') - #self.outputs.new('NodeSocketVector', Linear Factor') + self.outputs.new('ArmBoolSocket', 'Is RB') + self.outputs.new('ArmIntSocket', 'Collision Group') + self.outputs.new('ArmIntSocket', 'Collision Mask') + self.outputs.new('ArmBoolSocket', 'Is Animated') + self.outputs.new('ArmBoolSocket', 'Is Static') + self.outputs.new('ArmFloatSocket', 'Angular Damping') + self.outputs.new('ArmFloatSocket', 'Linear Damping') + self.outputs.new('ArmFloatSocket', 'Friction') + self.outputs.new('ArmFloatSocket', 'Mass') + #self.outputs.new('ArmStringSocket', 'Collision Shape') + #self.outputs.new('ArmIntSocket', 'Activation State') + #self.outputs.new('ArmBoolSocket', 'Is Gravity Enabled') + #self.outputs.new(ArmVectorSocket', Angular Factor') + #self.outputs.new('ArmVectorSocket', Linear Factor') diff --git a/blender/arm/logicnode/physics/LN_get_rb_velocity.py b/blender/arm/logicnode/physics/LN_get_rb_velocity.py index e4b889f9..33269ccb 100644 --- a/blender/arm/logicnode/physics/LN_get_rb_velocity.py +++ b/blender/arm/logicnode/physics/LN_get_rb_velocity.py @@ -9,8 +9,8 @@ class GetVelocityNode(ArmLogicTreeNode): def init(self, context): super(GetVelocityNode, self).init(context) self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketBool', 'Linear On Local Axis') - self.add_input('NodeSocketBool', 'Angular On Local Axis') + self.add_input('ArmBoolSocket', 'Linear On Local Axis') + self.add_input('ArmBoolSocket', 'Angular On Local Axis') - self.add_output('NodeSocketVector', 'Linear') - self.add_output('NodeSocketVector', 'Angular') + self.add_output('ArmVectorSocket', 'Linear') + self.add_output('ArmVectorSocket', 'Angular') diff --git a/blender/arm/logicnode/physics/LN_get_world_gravity.py b/blender/arm/logicnode/physics/LN_get_world_gravity.py index e91555f5..fe810eec 100644 --- a/blender/arm/logicnode/physics/LN_get_world_gravity.py +++ b/blender/arm/logicnode/physics/LN_get_world_gravity.py @@ -11,4 +11,4 @@ class GetGravityNode(ArmLogicTreeNode): def init(self, context): super(GetGravityNode, self).init(context) - self.add_output('NodeSocketVector', 'World Gravity') + self.add_output('ArmVectorSocket', 'World Gravity') diff --git a/blender/arm/logicnode/physics/LN_has_contact.py b/blender/arm/logicnode/physics/LN_has_contact.py index 9a1eb8da..4bd2151f 100644 --- a/blender/arm/logicnode/physics/LN_has_contact.py +++ b/blender/arm/logicnode/physics/LN_has_contact.py @@ -12,4 +12,4 @@ class HasContactNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketObject', 'RB 1') self.add_input('ArmNodeSocketObject', 'RB 2') - self.add_output('NodeSocketBool', 'Has Contact') + self.add_output('ArmBoolSocket', 'Has Contact') diff --git a/blender/arm/logicnode/physics/LN_has_contact_array.py b/blender/arm/logicnode/physics/LN_has_contact_array.py index 7fafd3e9..e64d342e 100644 --- a/blender/arm/logicnode/physics/LN_has_contact_array.py +++ b/blender/arm/logicnode/physics/LN_has_contact_array.py @@ -12,4 +12,4 @@ class HasContactArrayNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmNodeSocketArray', 'RBs') - self.add_output('NodeSocketBool', 'Has Contact') + self.add_output('ArmBoolSocket', 'Has Contact') diff --git a/blender/arm/logicnode/physics/LN_physics_constraint.py b/blender/arm/logicnode/physics/LN_physics_constraint.py index 28dd0f6f..d4d1c539 100644 --- a/blender/arm/logicnode/physics/LN_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_physics_constraint.py @@ -53,9 +53,9 @@ class PhysicsConstraintNode(ArmLogicTreeNode): def init(self, context): super(PhysicsConstraintNode, self).init(context) - self.add_input('NodeSocketFloat', 'Lower limit') - self.add_input('NodeSocketFloat', 'Upper limit') - self.add_output('NodeSocketShader', 'Constraint') + self.add_input('ArmFloatSocket', 'Lower limit') + self.add_input('ArmFloatSocket', 'Upper limit') + self.add_output('ArmDynamicSocket', 'Constraint') def update_sockets(self, context): while len(self.inputs) > 0: @@ -63,11 +63,11 @@ class PhysicsConstraintNode(ArmLogicTreeNode): # Add dynamic input sockets if self.property2: - self.add_input('NodeSocketFloat', 'Stiffness', 10.0) - self.add_input('NodeSocketFloat', 'Damping', 0.5) + self.add_input('ArmFloatSocket', 'Stiffness', 10.0) + self.add_input('ArmFloatSocket', 'Damping', 0.5) else: - self.add_input('NodeSocketFloat', 'Lower limit') - self.add_input('NodeSocketFloat', 'Upper limit') + self.add_input('ArmFloatSocket', 'Lower limit') + self.add_input('ArmFloatSocket', 'Upper limit') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/physics/LN_pick_rb.py b/blender/arm/logicnode/physics/LN_pick_rb.py index 8497e1f9..65e34f54 100644 --- a/blender/arm/logicnode/physics/LN_pick_rb.py +++ b/blender/arm/logicnode/physics/LN_pick_rb.py @@ -21,8 +21,8 @@ class PickObjectNode(ArmLogicTreeNode): def init(self, context): super(PickObjectNode, self).init(context) - self.add_input('NodeSocketVector', 'Screen Coords') - self.add_input('NodeSocketInt', 'Mask', default_value=1) + self.add_input('ArmVectorSocket', 'Screen Coords') + self.add_input('ArmIntSocket', 'Mask', default_value=1) self.add_output('ArmNodeSocketObject', 'RB') - self.add_output('NodeSocketVector', 'Hit') + self.add_output('ArmVectorSocket', 'Hit') diff --git a/blender/arm/logicnode/physics/LN_ray_cast.py b/blender/arm/logicnode/physics/LN_ray_cast.py index 6792bdb5..79995333 100644 --- a/blender/arm/logicnode/physics/LN_ray_cast.py +++ b/blender/arm/logicnode/physics/LN_ray_cast.py @@ -24,10 +24,10 @@ class RayCastNode(ArmLogicTreeNode): def init(self, context): super(RayCastNode, self).init(context) - self.add_input('NodeSocketVector', 'From') - self.add_input('NodeSocketVector', 'To') - self.add_input('NodeSocketInt', 'Mask', default_value=1) + self.add_input('ArmVectorSocket', 'From') + self.add_input('ArmVectorSocket', 'To') + self.add_input('ArmIntSocket', 'Mask', default_value=1) self.add_output('ArmNodeSocketObject', 'RB') - self.add_output('NodeSocketVector', 'Hit') - self.add_output('NodeSocketVector', 'Normal') + self.add_output('ArmVectorSocket', 'Hit') + self.add_output('ArmVectorSocket', 'Normal') diff --git a/blender/arm/logicnode/physics/LN_set_rb_friction.py b/blender/arm/logicnode/physics/LN_set_rb_friction.py index d2c4e929..c2267732 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_friction.py +++ b/blender/arm/logicnode/physics/LN_set_rb_friction.py @@ -11,6 +11,6 @@ class SetFrictionNode (ArmLogicTreeNode): super(SetFrictionNode, self).init(context) self.inputs.new('ArmNodeSocketAction', 'In') self.inputs.new('ArmNodeSocketObject', 'RB') - self.inputs.new('NodeSocketFloat', 'Friction') + self.inputs.new('ArmFloatSocket', 'Friction') self.outputs.new('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py b/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py index a7109160..73f0405d 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py +++ b/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py @@ -10,6 +10,6 @@ class SetGravityEnabledNode(ArmLogicTreeNode): super(SetGravityEnabledNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketBool', 'Enabled') + self.add_input('ArmBoolSocket', 'Enabled') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_set_rb_velocity.py b/blender/arm/logicnode/physics/LN_set_rb_velocity.py index 024e980c..48e95bbc 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_velocity.py +++ b/blender/arm/logicnode/physics/LN_set_rb_velocity.py @@ -10,9 +10,9 @@ class SetVelocityNode(ArmLogicTreeNode): super(SetVelocityNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') - self.add_input('NodeSocketVector', 'Linear') - self.add_input('NodeSocketVector', 'Linear Factor', default_value=[1.0, 1.0, 1.0]) - self.add_input('NodeSocketVector', 'Angular') - self.add_input('NodeSocketVector', 'Angular Factor', default_value=[1.0, 1.0, 1.0]) + self.add_input('ArmVectorSocket', 'Linear') + self.add_input('ArmVectorSocket', 'Linear Factor', default_value=[1.0, 1.0, 1.0]) + self.add_input('ArmVectorSocket', 'Angular') + self.add_input('ArmVectorSocket', 'Angular Factor', default_value=[1.0, 1.0, 1.0]) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_set_world_gravity.py b/blender/arm/logicnode/physics/LN_set_world_gravity.py index c04fc6c4..e8646994 100644 --- a/blender/arm/logicnode/physics/LN_set_world_gravity.py +++ b/blender/arm/logicnode/physics/LN_set_world_gravity.py @@ -12,6 +12,6 @@ class SetGravityNode(ArmLogicTreeNode): def init(self, context): super(SetGravityNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketVector', 'Gravity') + self.add_input('ArmVectorSocket', 'Gravity') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/physics/LN_volume_trigger.py b/blender/arm/logicnode/physics/LN_volume_trigger.py index 240588aa..fab5aa3c 100644 --- a/blender/arm/logicnode/physics/LN_volume_trigger.py +++ b/blender/arm/logicnode/physics/LN_volume_trigger.py @@ -24,7 +24,7 @@ class VolumeTriggerNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketObject', 'Object 1') self.add_input('ArmNodeSocketObject', 'Object 2') - self.add_output('NodeSocketBool', 'Bool') + self.add_output('ArmBoolSocket', 'Bool') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py index bf1d7faf..5cf34dda 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py @@ -9,10 +9,10 @@ class ColorgradingGetGlobalNode(ArmLogicTreeNode): def init(self, context): super(ColorgradingGetGlobalNode, self).init(context) - self.add_output('NodeSocketFloat', 'Whitebalance') - self.add_output('NodeSocketVector', 'Tint') - self.add_output('NodeSocketVector', 'Saturation') - self.add_output('NodeSocketVector', 'Contrast') - self.add_output('NodeSocketVector', 'Gamma') - self.add_output('NodeSocketVector', 'Gain') - self.add_output('NodeSocketVector', 'Offset') + self.add_output('ArmFloatSocket', 'Whitebalance') + self.add_output('ArmVectorSocket', 'Tint') + self.add_output('ArmVectorSocket', 'Saturation') + self.add_output('ArmVectorSocket', 'Contrast') + self.add_output('ArmVectorSocket', 'Gamma') + self.add_output('ArmVectorSocket', 'Gain') + self.add_output('ArmVectorSocket', 'Offset') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py index 598aba4f..583fe71b 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py @@ -9,9 +9,9 @@ class ColorgradingGetHighlightNode(ArmLogicTreeNode): def init(self, context): super(ColorgradingGetHighlightNode, self).init(context) - self.add_output('NodeSocketFloat', 'HightlightMin') - self.add_output('NodeSocketVector', 'Saturation') - self.add_output('NodeSocketVector', 'Contrast') - self.add_output('NodeSocketVector', 'Gamma') - self.add_output('NodeSocketVector', 'Gain') - self.add_output('NodeSocketVector', 'Offset') + self.add_output('ArmFloatSocket', 'HightlightMin') + self.add_output('ArmVectorSocket', 'Saturation') + self.add_output('ArmVectorSocket', 'Contrast') + self.add_output('ArmVectorSocket', 'Gamma') + self.add_output('ArmVectorSocket', 'Gain') + self.add_output('ArmVectorSocket', 'Offset') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py index fde32c60..cd8d860d 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py @@ -9,8 +9,8 @@ class ColorgradingGetMidtoneNode(ArmLogicTreeNode): def init(self, context): super(ColorgradingGetMidtoneNode, self).init(context) - self.add_output('NodeSocketVector', 'Saturation') - self.add_output('NodeSocketVector', 'Contrast') - self.add_output('NodeSocketVector', 'Gamma') - self.add_output('NodeSocketVector', 'Gain') - self.add_output('NodeSocketVector', 'Offset') + self.add_output('ArmVectorSocket', 'Saturation') + self.add_output('ArmVectorSocket', 'Contrast') + self.add_output('ArmVectorSocket', 'Gamma') + self.add_output('ArmVectorSocket', 'Gain') + self.add_output('ArmVectorSocket', 'Offset') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py index c4662185..16c96cb6 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py @@ -9,9 +9,9 @@ class ColorgradingGetShadowNode(ArmLogicTreeNode): def init(self, context): super(ColorgradingGetShadowNode, self).init(context) - self.add_output('NodeSocketFloat', 'ShadowMax') - self.add_output('NodeSocketVector', 'Saturation') - self.add_output('NodeSocketVector', 'Contrast') - self.add_output('NodeSocketVector', 'Gamma') - self.add_output('NodeSocketVector', 'Gain') - self.add_output('NodeSocketVector', 'Offset') + self.add_output('ArmFloatSocket', 'ShadowMax') + self.add_output('ArmVectorSocket', 'Saturation') + self.add_output('ArmVectorSocket', 'Contrast') + self.add_output('ArmVectorSocket', 'Gamma') + self.add_output('ArmVectorSocket', 'Gain') + self.add_output('ArmVectorSocket', 'Offset') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py index ee3aaad5..c9258bb6 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py @@ -42,22 +42,22 @@ class ColorgradingSetGlobalNode(ArmLogicTreeNode): def draw_nodes_uniform(self, context): - self.add_input('NodeSocketFloat', 'Whitebalance', default_value=6500.0) - self.add_input('NodeSocketColor', 'Tint', default_value=[1.0, 1.0, 1.0, 1.0]) - self.add_input('NodeSocketFloat', 'Saturation', default_value=1) - self.add_input('NodeSocketFloat', 'Contrast', default_value=1) - self.add_input('NodeSocketFloat', 'Gamma', default_value=1) - self.add_input('NodeSocketFloat', 'Gain', default_value=1) - self.add_input('NodeSocketFloat', 'Offset', default_value=1) + self.add_input('ArmFloatSocket', 'Whitebalance', default_value=6500.0) + self.add_input('ArmColorSocket', 'Tint', default_value=[1.0, 1.0, 1.0, 1.0]) + self.add_input('ArmFloatSocket', 'Saturation', default_value=1) + self.add_input('ArmFloatSocket', 'Contrast', default_value=1) + self.add_input('ArmFloatSocket', 'Gamma', default_value=1) + self.add_input('ArmFloatSocket', 'Gain', default_value=1) + self.add_input('ArmFloatSocket', 'Offset', default_value=1) def draw_nodes_rgb(self, context): - self.add_input('NodeSocketFloat', 'Whitebalance', default_value=6500.0) - self.add_input('NodeSocketVector', 'Tint', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Saturation', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Contrast', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gamma', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gain', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Offset', default_value=[1,1,1]) + self.add_input('ArmFloatSocket', 'Whitebalance', default_value=6500.0) + self.add_input('ArmVectorSocket', 'Tint', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Saturation', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Contrast', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gamma', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gain', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Offset', default_value=[1,1,1]) def draw_nodes_colorwheel(self, context): pass diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py index 64144b18..bc775851 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py @@ -42,20 +42,20 @@ class ColorgradingSetHighlightNode(ArmLogicTreeNode): def draw_nodes_uniform(self, context): - self.add_input('NodeSocketFloat', 'HighlightMin', default_value=0) - self.add_input('NodeSocketFloat', 'Saturation', default_value=1) - self.add_input('NodeSocketFloat', 'Contrast', default_value=1) - self.add_input('NodeSocketFloat', 'Gamma', default_value=1) - self.add_input('NodeSocketFloat', 'Gain', default_value=1) - self.add_input('NodeSocketFloat', 'Offset', default_value=1) + self.add_input('ArmFloatSocket', 'HighlightMin', default_value=0) + self.add_input('ArmFloatSocket', 'Saturation', default_value=1) + self.add_input('ArmFloatSocket', 'Contrast', default_value=1) + self.add_input('ArmFloatSocket', 'Gamma', default_value=1) + self.add_input('ArmFloatSocket', 'Gain', default_value=1) + self.add_input('ArmFloatSocket', 'Offset', default_value=1) def draw_nodes_rgb(self, context): - self.add_input('NodeSocketFloat', 'HighlightMin', default_value=0) - self.add_input('NodeSocketVector', 'Saturation', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Contrast', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gamma', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gain', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Offset', default_value=[1,1,1]) + self.add_input('ArmFloatSocket', 'HighlightMin', default_value=0) + self.add_input('ArmVectorSocket', 'Saturation', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Contrast', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gamma', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gain', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Offset', default_value=[1,1,1]) def draw_nodes_colorwheel(self, context): pass diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py index 0845c625..14dcdbdf 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py @@ -42,19 +42,19 @@ class ColorgradingSetMidtoneNode(ArmLogicTreeNode): def draw_nodes_uniform(self, context): - self.add_input('NodeSocketFloat', 'Saturation', default_value=1) - self.add_input('NodeSocketFloat', 'Contrast', default_value=1) - self.add_input('NodeSocketFloat', 'Gamma', default_value=1) - self.add_input('NodeSocketFloat', 'Gain', default_value=1) - self.add_input('NodeSocketFloat', 'Offset', default_value=1) + self.add_input('ArmFloatSocket', 'Saturation', default_value=1) + self.add_input('ArmFloatSocket', 'Contrast', default_value=1) + self.add_input('ArmFloatSocket', 'Gamma', default_value=1) + self.add_input('ArmFloatSocket', 'Gain', default_value=1) + self.add_input('ArmFloatSocket', 'Offset', default_value=1) def draw_nodes_rgb(self, context): - self.add_input('NodeSocketVector', 'Tint', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Saturation', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Contrast', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gamma', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gain', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Offset', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Tint', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Saturation', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Contrast', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gamma', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gain', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Offset', default_value=[1,1,1]) def draw_nodes_colorwheel(self, context): pass diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py index b32f64e7..a3abd236 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py @@ -42,20 +42,20 @@ class ColorgradingSetShadowNode(ArmLogicTreeNode): def draw_nodes_uniform(self, context): - self.add_input('NodeSocketFloat', 'ShadowMax', default_value=1) - self.add_input('NodeSocketFloat', 'Saturation', default_value=1) - self.add_input('NodeSocketFloat', 'Contrast', default_value=1) - self.add_input('NodeSocketFloat', 'Gamma', default_value=1) - self.add_input('NodeSocketFloat', 'Gain', default_value=1) - self.add_input('NodeSocketFloat', 'Offset', default_value=1) + self.add_input('ArmFloatSocket', 'ShadowMax', default_value=1) + self.add_input('ArmFloatSocket', 'Saturation', default_value=1) + self.add_input('ArmFloatSocket', 'Contrast', default_value=1) + self.add_input('ArmFloatSocket', 'Gamma', default_value=1) + self.add_input('ArmFloatSocket', 'Gain', default_value=1) + self.add_input('ArmFloatSocket', 'Offset', default_value=1) def draw_nodes_rgb(self, context): - self.add_input('NodeSocketFloat', 'ShadowMax', default_value=1) - self.add_input('NodeSocketVector', 'Saturation', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Contrast', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gamma', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Gain', default_value=[1,1,1]) - self.add_input('NodeSocketVector', 'Offset', default_value=[1,1,1]) + self.add_input('ArmFloatSocket', 'ShadowMax', default_value=1) + self.add_input('ArmVectorSocket', 'Saturation', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Contrast', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gamma', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Gain', default_value=[1,1,1]) + self.add_input('ArmVectorSocket', 'Offset', default_value=[1,1,1]) def draw_nodes_colorwheel(self, context): pass diff --git a/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py b/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py index e1774cdb..744e7721 100644 --- a/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py @@ -8,6 +8,6 @@ class BloomGetNode(ArmLogicTreeNode): def init(self, context): super(BloomGetNode, self).init(context) - self.add_output('NodeSocketFloat', 'Threshold') - self.add_output('NodeSocketFloat', 'Strength') - self.add_output('NodeSocketFloat', 'Radius') + self.add_output('ArmFloatSocket', 'Threshold') + self.add_output('ArmFloatSocket', 'Strength') + self.add_output('ArmFloatSocket', 'Radius') diff --git a/blender/arm/logicnode/postprocess/LN_get_ca_settings.py b/blender/arm/logicnode/postprocess/LN_get_ca_settings.py index 60a9a429..51fb624d 100644 --- a/blender/arm/logicnode/postprocess/LN_get_ca_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_ca_settings.py @@ -8,5 +8,5 @@ class ChromaticAberrationGetNode(ArmLogicTreeNode): def init(self, context): super(ChromaticAberrationGetNode, self).init(context) - self.add_output('NodeSocketFloat', 'Strength') - self.add_output('NodeSocketFloat', 'Samples') + self.add_output('ArmFloatSocket', 'Strength') + self.add_output('ArmFloatSocket', 'Samples') diff --git a/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py b/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py index 33599052..71906eae 100644 --- a/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py +++ b/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py @@ -8,13 +8,13 @@ class CameraGetNode(ArmLogicTreeNode): def init(self, context): super(CameraGetNode, self).init(context) - self.add_output('NodeSocketFloat', 'F-Stop') - self.add_output('NodeSocketFloat', 'Shutter Time') - self.add_output('NodeSocketFloat', 'ISO') - self.add_output('NodeSocketFloat', 'Exposure Compensation') - self.add_output('NodeSocketFloat', 'Fisheye Distortion') - self.add_output('NodeSocketBool', 'Auto Focus') - self.add_output('NodeSocketFloat', 'DOF Distance') - self.add_output('NodeSocketFloat', 'DOF Length') - self.add_output('NodeSocketFloat', 'DOF F-Stop') - self.add_output('NodeSocketFloat', 'Film Grain') + self.add_output('ArmFloatSocket', 'F-Stop') + self.add_output('ArmFloatSocket', 'Shutter Time') + self.add_output('ArmFloatSocket', 'ISO') + self.add_output('ArmFloatSocket', 'Exposure Compensation') + self.add_output('ArmFloatSocket', 'Fisheye Distortion') + self.add_output('ArmBoolSocket', 'Auto Focus') + self.add_output('ArmFloatSocket', 'DOF Distance') + self.add_output('ArmFloatSocket', 'DOF Length') + self.add_output('ArmFloatSocket', 'DOF F-Stop') + self.add_output('ArmFloatSocket', 'Film Grain') diff --git a/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py b/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py index 6f8aa6a3..fd93f516 100644 --- a/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py @@ -8,8 +8,8 @@ class LenstextureGetNode(ArmLogicTreeNode): def init(self, context): super(LenstextureGetNode, self).init(context) - self.add_output('NodeSocketFloat', 'Center Min Clip') - self.add_output('NodeSocketFloat', 'Center Max Clip') - self.add_output('NodeSocketFloat', 'Luminance Min') - self.add_output('NodeSocketFloat', 'Luminance Max') - self.add_output('NodeSocketFloat', 'Brightness Exponent') + self.add_output('ArmFloatSocket', 'Center Min Clip') + self.add_output('ArmFloatSocket', 'Center Max Clip') + self.add_output('ArmFloatSocket', 'Luminance Min') + self.add_output('ArmFloatSocket', 'Luminance Max') + self.add_output('ArmFloatSocket', 'Brightness Exponent') diff --git a/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py b/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py index 3aecab2c..7208d123 100644 --- a/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py @@ -8,6 +8,6 @@ class SSAOGetNode(ArmLogicTreeNode): def init(self, context): super(SSAOGetNode, self).init(context) - self.add_output('NodeSocketFloat', 'Radius') - self.add_output('NodeSocketFloat', 'Strength') - self.add_output('NodeSocketFloat', 'Max Steps') + self.add_output('ArmFloatSocket', 'Radius') + self.add_output('ArmFloatSocket', 'Strength') + self.add_output('ArmFloatSocket', 'Max Steps') diff --git a/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py b/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py index 782ce30f..69ac4405 100644 --- a/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py @@ -8,8 +8,8 @@ class SSRGetNode(ArmLogicTreeNode): def init(self, context): super(SSRGetNode, self).init(context) - self.add_output('NodeSocketFloat', 'SSR Step') - self.add_output('NodeSocketFloat', 'SSR Step Min') - self.add_output('NodeSocketFloat', 'SSR Search') - self.add_output('NodeSocketFloat', 'SSR Falloff') - self.add_output('NodeSocketFloat', 'SSR Jitter') + self.add_output('ArmFloatSocket', 'SSR Step') + self.add_output('ArmFloatSocket', 'SSR Step Min') + self.add_output('ArmFloatSocket', 'SSR Search') + self.add_output('ArmFloatSocket', 'SSR Falloff') + self.add_output('ArmFloatSocket', 'SSR Jitter') diff --git a/blender/arm/logicnode/postprocess/LN_lenstexture_set.py b/blender/arm/logicnode/postprocess/LN_lenstexture_set.py index 2fe8a79d..4ee7380f 100644 --- a/blender/arm/logicnode/postprocess/LN_lenstexture_set.py +++ b/blender/arm/logicnode/postprocess/LN_lenstexture_set.py @@ -9,10 +9,10 @@ class LenstextureSetNode(ArmLogicTreeNode): def init(self, context): super(LenstextureSetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'Center Min Clip', default_value=0.1) - self.add_input('NodeSocketFloat', 'Center Max Clip', default_value=0.5) - self.add_input('NodeSocketFloat', 'Luminance Min', default_value=0.10) - self.add_input('NodeSocketFloat', 'Luminance Max', default_value=2.50) - self.add_input('NodeSocketFloat', 'Brightness Exponent', default_value=2.0) + self.add_input('ArmFloatSocket', 'Center Min Clip', default_value=0.1) + self.add_input('ArmFloatSocket', 'Center Max Clip', default_value=0.5) + self.add_input('ArmFloatSocket', 'Luminance Min', default_value=0.10) + self.add_input('ArmFloatSocket', 'Luminance Max', default_value=2.50) + self.add_input('ArmFloatSocket', 'Brightness Exponent', default_value=2.0) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py b/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py index ffa85450..90c8d5a3 100644 --- a/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py @@ -9,8 +9,8 @@ class BloomSetNode(ArmLogicTreeNode): def init(self, context): super(BloomSetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'Threshold', default_value=1.00) - self.add_input('NodeSocketFloat', 'Strength', default_value=3.50) - self.add_input('NodeSocketFloat', 'Radius', default_value=3.0) + self.add_input('ArmFloatSocket', 'Threshold', default_value=1.00) + self.add_input('ArmFloatSocket', 'Strength', default_value=3.50) + self.add_input('ArmFloatSocket', 'Radius', default_value=3.0) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/postprocess/LN_set_ca_settings.py b/blender/arm/logicnode/postprocess/LN_set_ca_settings.py index 18b6f0a1..be459419 100644 --- a/blender/arm/logicnode/postprocess/LN_set_ca_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_ca_settings.py @@ -9,7 +9,7 @@ class ChromaticAberrationSetNode(ArmLogicTreeNode): def init(self, context): super(ChromaticAberrationSetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'Strength', default_value=2.0) - self.add_input('NodeSocketInt', 'Samples', default_value=32) + self.add_input('ArmFloatSocket', 'Strength', default_value=2.0) + self.add_input('ArmIntSocket', 'Samples', default_value=32) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py b/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py index a21d8ddc..e589b6c9 100644 --- a/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py +++ b/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py @@ -9,16 +9,16 @@ class CameraSetNode(ArmLogicTreeNode): def init(self, context): super(CameraSetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'F-stop', default_value=2.0) - self.add_input('NodeSocketFloat', 'Shutter Time', default_value=1.0) - self.add_input('NodeSocketFloat', 'ISO', default_value=100.0) - self.add_input('NodeSocketFloat', 'Exposure Compensation', default_value=0.0) - self.add_input('NodeSocketFloat', 'Fisheye Distortion', default_value=0.01) - self.add_input('NodeSocketBool', 'Auto Focus', default_value=True) - self.add_input('NodeSocketFloat', 'DoF Distance', default_value=10.0) - self.add_input('NodeSocketFloat', 'DoF Length', default_value=160.0) - self.add_input('NodeSocketFloat', 'DoF F-Stop', default_value=128.0) - self.add_input('NodeSocketInt', 'Tonemapper', default_value=0.0) - self.add_input('NodeSocketFloat', 'Film Grain', default_value=2.0) + self.add_input('ArmFloatSocket', 'F-stop', default_value=2.0) + self.add_input('ArmFloatSocket', 'Shutter Time', default_value=1.0) + self.add_input('ArmFloatSocket', 'ISO', default_value=100.0) + self.add_input('ArmFloatSocket', 'Exposure Compensation', default_value=0.0) + self.add_input('ArmFloatSocket', 'Fisheye Distortion', default_value=0.01) + self.add_input('ArmBoolSocket', 'Auto Focus', default_value=True) + self.add_input('ArmFloatSocket', 'DoF Distance', default_value=10.0) + self.add_input('ArmFloatSocket', 'DoF Length', default_value=160.0) + self.add_input('ArmFloatSocket', 'DoF F-Stop', default_value=128.0) + self.add_input('ArmIntSocket', 'Tonemapper', default_value=0.0) + self.add_input('ArmFloatSocket', 'Film Grain', default_value=2.0) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py b/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py index 199d5d6c..386e980b 100644 --- a/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py @@ -9,8 +9,8 @@ class SSAOSetNode(ArmLogicTreeNode): def init(self, context): super(SSAOSetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'Radius', default_value=1.0) - self.add_input('NodeSocketFloat', 'Strength', default_value=5.0) - self.add_input('NodeSocketInt', 'Max Steps', default_value=8) + self.add_input('ArmFloatSocket', 'Radius', default_value=1.0) + self.add_input('ArmFloatSocket', 'Strength', default_value=5.0) + self.add_input('ArmIntSocket', 'Max Steps', default_value=8) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py b/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py index 40995378..fd6bb111 100644 --- a/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py @@ -9,10 +9,10 @@ class SSRSetNode(ArmLogicTreeNode): def init(self, context): super(SSRSetNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketFloat', 'SSR Step', default_value=0.04) - self.add_input('NodeSocketFloat', 'SSR Step Min', default_value=0.05) - self.add_input('NodeSocketFloat', 'SSR Search', default_value=5.0) - self.add_input('NodeSocketFloat', 'SSR Falloff', default_value=5.0) - self.add_input('NodeSocketFloat', 'SSR Jitter', default_value=0.6) + self.add_input('ArmFloatSocket', 'SSR Step', default_value=0.04) + self.add_input('ArmFloatSocket', 'SSR Step Min', default_value=0.05) + self.add_input('ArmFloatSocket', 'SSR Search', default_value=5.0) + self.add_input('ArmFloatSocket', 'SSR Falloff', default_value=5.0) + self.add_input('ArmFloatSocket', 'SSR Jitter', default_value=0.6) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/random/LN_random_boolean.py b/blender/arm/logicnode/random/LN_random_boolean.py index 8fef83ae..039a2c91 100644 --- a/blender/arm/logicnode/random/LN_random_boolean.py +++ b/blender/arm/logicnode/random/LN_random_boolean.py @@ -9,4 +9,4 @@ class RandomBooleanNode(ArmLogicTreeNode): def init(self, context): super(RandomBooleanNode, self).init(context) - self.add_output('NodeSocketBool', 'Bool') + self.add_output('ArmBoolSocket', 'Bool') diff --git a/blender/arm/logicnode/random/LN_random_choice.py b/blender/arm/logicnode/random/LN_random_choice.py index ad6b4f7e..ee273513 100644 --- a/blender/arm/logicnode/random/LN_random_choice.py +++ b/blender/arm/logicnode/random/LN_random_choice.py @@ -11,4 +11,4 @@ class RandomChoiceNode(ArmLogicTreeNode): super().init(context) self.add_input('ArmNodeSocketArray', 'Array') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/random/LN_random_color.py b/blender/arm/logicnode/random/LN_random_color.py index 82ef9bf8..38c36442 100644 --- a/blender/arm/logicnode/random/LN_random_color.py +++ b/blender/arm/logicnode/random/LN_random_color.py @@ -9,4 +9,4 @@ class RandomColorNode(ArmLogicTreeNode): def init(self, context): super(RandomColorNode, self).init(context) - self.add_output('NodeSocketColor', 'Color') + self.add_output('ArmColorSocket', 'Color') diff --git a/blender/arm/logicnode/random/LN_random_float.py b/blender/arm/logicnode/random/LN_random_float.py index 6303d5e0..22dca241 100644 --- a/blender/arm/logicnode/random/LN_random_float.py +++ b/blender/arm/logicnode/random/LN_random_float.py @@ -9,7 +9,7 @@ class RandomFloatNode(ArmLogicTreeNode): def init(self, context): super(RandomFloatNode, self).init(context) - self.add_input('NodeSocketFloat', 'Min') - self.add_input('NodeSocketFloat', 'Max', default_value=1.0) - # self.add_input('NodeSocketInt', 'Seed') - self.add_output('NodeSocketFloat', 'Float') + self.add_input('ArmFloatSocket', 'Min') + self.add_input('ArmFloatSocket', 'Max', default_value=1.0) + # self.add_input('ArmIntSocket', 'Seed') + self.add_output('ArmFloatSocket', 'Float') diff --git a/blender/arm/logicnode/random/LN_random_integer.py b/blender/arm/logicnode/random/LN_random_integer.py index dfb3442f..0b69d5a7 100644 --- a/blender/arm/logicnode/random/LN_random_integer.py +++ b/blender/arm/logicnode/random/LN_random_integer.py @@ -9,6 +9,6 @@ class RandomIntegerNode(ArmLogicTreeNode): def init(self, context): super(RandomIntegerNode, self).init(context) - self.add_input('NodeSocketInt', 'Min') - self.add_input('NodeSocketInt', 'Max', default_value=2) - self.add_output('NodeSocketInt', 'Int') + self.add_input('ArmIntSocket', 'Min') + self.add_input('ArmIntSocket', 'Max', default_value=2) + self.add_output('ArmIntSocket', 'Int') diff --git a/blender/arm/logicnode/random/LN_random_vector.py b/blender/arm/logicnode/random/LN_random_vector.py index 6986a8a0..11161f8e 100644 --- a/blender/arm/logicnode/random/LN_random_vector.py +++ b/blender/arm/logicnode/random/LN_random_vector.py @@ -9,6 +9,6 @@ class RandomVectorNode(ArmLogicTreeNode): def init(self, context): super(RandomVectorNode, self).init(context) - self.add_input('NodeSocketVector', 'Min', default_value=[-1.0, -1.0, -1.0]) - self.add_input('NodeSocketVector', 'Max', default_value=[1.0, 1.0, 1.0]) - self.add_output('NodeSocketVector', 'Vector') + self.add_input('ArmVectorSocket', 'Min', default_value=[-1.0, -1.0, -1.0]) + self.add_input('ArmVectorSocket', 'Max', default_value=[1.0, 1.0, 1.0]) + self.add_output('ArmVectorSocket', 'Vector') diff --git a/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py b/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py index e7b6e31e..a2d01c1b 100644 --- a/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py @@ -18,7 +18,7 @@ class RpConfigNode(ArmLogicTreeNode): def init(self, context): super(RpConfigNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketBool', 'Enable') + self.add_input('ArmBoolSocket', 'Enable') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py b/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py index cf34577e..7de5ccfe 100644 --- a/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py +++ b/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py @@ -15,11 +15,11 @@ class SetShaderUniformNode(ArmLogicTreeNode): self.inputs.remove(self.inputs[2]) if self.property0 == 'int': - self.add_input('NodeSocketInt', 'Int') + self.add_input('ArmIntSocket', 'Int') elif self.property0 == 'float': - self.add_input('NodeSocketFloat', 'Float') + self.add_input('ArmFloatSocket', 'Float') elif self.property0 in ('vec2', 'vec3', 'vec4'): - self.add_input('NodeSocketVector', 'Vector') + self.add_input('ArmVectorSocket', 'Vector') property0: HaxeEnumProperty( 'property0', @@ -36,8 +36,8 @@ class SetShaderUniformNode(ArmLogicTreeNode): def init(self, context): super().init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Uniform Name') - self.add_input('NodeSocketFloat', 'Float') + self.add_input('ArmStringSocket', 'Uniform Name') + self.add_input('ArmFloatSocket', 'Float') self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/replacement.py b/blender/arm/logicnode/replacement.py index 99585f13..c01556a6 100644 --- a/blender/arm/logicnode/replacement.py +++ b/blender/arm/logicnode/replacement.py @@ -10,6 +10,7 @@ Original author: @niacdoial import os.path import time import traceback +import typing from typing import Dict, List, Optional, Tuple import bpy.props @@ -17,6 +18,7 @@ import bpy.props import arm.log as log import arm.logicnode.arm_nodes as arm_nodes import arm.logicnode.arm_sockets +import arm.node_utils as node_utils # List of errors that occurred during the replacement # Format: (error identifier, node.bl_idname (or None), tree name, exception traceback (optional)) @@ -272,3 +274,78 @@ def replace_all(): log.error(f'There were errors in the node update procedure, a detailed report has been written to {reportfile}') bpy.ops.arm.show_node_update_errors() + + +def node_compat_sdk2108(): + """SDK 21.08 broke compatibility with older nodes as nodes now use + custom sockets even for Blender's default data types and custom + property "constructors". This allows to listen for events for the + live patch system. + + In order to update older nodes this routine is used. It creates a + full copy of the nodes and replaces all properties and sockets with + their new equivalents. + """ + for tree in bpy.data.node_groups: + if tree.bl_idname == "ArmLogicTreeType": + for node in list(tree.nodes): + # Don't raise exceptions for invalid unregistered nodes, this + # function didn't cause the registration problem if there is one + if not node.__class__.is_registered_node_type(): + continue + + newnode = tree.nodes.new(node.__class__.bl_idname) + + newnode.parent = node.parent + newnode.location = node.location + newnode.select = node.select + + # Also copy the node's version number to _not_ prevent actual node + # replacement after this step + newnode.arm_version = node.arm_version + + # First replace all properties + for prop_name, prop in typing.get_type_hints(node.__class__, {}, {}).items(): + if isinstance(prop, bpy.props._PropertyDeferred): + if hasattr(node, prop_name) and hasattr(newnode, prop_name): + setattr(newnode, prop_name, getattr(node, prop_name)) + + # Replace sockets with new socket types + socket_replacements = { + 'NodeSocketBool': 'ArmBoolSocket', + 'NodeSocketColor': 'ArmColorSocket', + 'NodeSocketFloat': 'ArmFloatSocket', + 'NodeSocketInt': 'ArmIntSocket', + 'NodeSocketShader': 'ArmDynamicSocket', + 'NodeSocketString': 'ArmStringSocket', + 'NodeSocketVector': 'ArmVectorSocket' + } + + # Recreate all sockets + newnode.inputs.clear() + for inp in node.inputs: + inp_idname = inp.bl_idname + inp_idname = socket_replacements.get(inp_idname, inp_idname) + + newinp = newnode.inputs.new(inp_idname, inp.name, identifier=inp.identifier) + + if inp.is_linked: + for link in inp.links: + tree.links.new(link.from_socket, newinp) + else: + node_utils.set_socket_default(newinp, node_utils.get_socket_default(inp)) + + newnode.outputs.clear() + for out in node.outputs: + out_idname = out.bl_idname + out_idname = socket_replacements.get(out_idname, out_idname) + + newout = newnode.outputs.new(out_idname, out.name, identifier=out.identifier) + + if out.is_linked: + for link in out.links: + tree.links.new(newout, link.to_socket) + else: + node_utils.set_socket_default(newout, node_utils.get_socket_default(out)) + + tree.nodes.remove(node) diff --git a/blender/arm/logicnode/scene/LN_create_collection.py b/blender/arm/logicnode/scene/LN_create_collection.py index 9c728c21..5e6157c3 100644 --- a/blender/arm/logicnode/scene/LN_create_collection.py +++ b/blender/arm/logicnode/scene/LN_create_collection.py @@ -10,6 +10,6 @@ class CreateCollectionNode(ArmLogicTreeNode): def init(self, context): super(CreateCollectionNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Collection') + self.add_input('ArmStringSocket', 'Collection') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/scene/LN_get_collection.py b/blender/arm/logicnode/scene/LN_get_collection.py index 14fb5d7a..2048650e 100644 --- a/blender/arm/logicnode/scene/LN_get_collection.py +++ b/blender/arm/logicnode/scene/LN_get_collection.py @@ -12,6 +12,6 @@ class GetGroupNode(ArmLogicTreeNode): def init(self, context): super(GetGroupNode, self).init(context) - self.add_input('NodeSocketString', 'Name') + self.add_input('ArmStringSocket', 'Name') self.add_output('ArmNodeSocketArray', 'Objects') diff --git a/blender/arm/logicnode/scene/LN_get_scene_active.py b/blender/arm/logicnode/scene/LN_get_scene_active.py index a263b428..841a3fe1 100644 --- a/blender/arm/logicnode/scene/LN_get_scene_active.py +++ b/blender/arm/logicnode/scene/LN_get_scene_active.py @@ -8,4 +8,4 @@ class ActiveSceneNode(ArmLogicTreeNode): def init(self, context): super(ActiveSceneNode, self).init(context) - self.add_output('NodeSocketShader', 'Scene') + self.add_output('ArmDynamicSocket', 'Scene') diff --git a/blender/arm/logicnode/scene/LN_remove_collection.py b/blender/arm/logicnode/scene/LN_remove_collection.py index b7a40ce9..3e6d49c5 100644 --- a/blender/arm/logicnode/scene/LN_remove_collection.py +++ b/blender/arm/logicnode/scene/LN_remove_collection.py @@ -10,6 +10,6 @@ class RemoveGroupNode(ArmLogicTreeNode): def init(self, context): super(RemoveGroupNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Collection') + self.add_input('ArmStringSocket', 'Collection') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/scene/LN_scene.py b/blender/arm/logicnode/scene/LN_scene.py index 4131608a..d2ed0b60 100644 --- a/blender/arm/logicnode/scene/LN_scene.py +++ b/blender/arm/logicnode/scene/LN_scene.py @@ -13,7 +13,7 @@ class SceneNode(ArmLogicTreeNode): def init(self, context): super(SceneNode, self).init(context) - self.add_output('NodeSocketShader', 'Scene') + self.add_output('ArmDynamicSocket', 'Scene') def draw_buttons(self, context, layout): layout.prop_search(self, 'property0_get', bpy.data, 'scenes', icon='NONE', text='') diff --git a/blender/arm/logicnode/scene/LN_set_scene_active.py b/blender/arm/logicnode/scene/LN_set_scene_active.py index 4a231d83..e839765c 100644 --- a/blender/arm/logicnode/scene/LN_set_scene_active.py +++ b/blender/arm/logicnode/scene/LN_set_scene_active.py @@ -9,7 +9,7 @@ class SetSceneNode(ArmLogicTreeNode): def init(self, context): super(SetSceneNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Scene') + self.add_input('ArmDynamicSocket', 'Scene') self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketObject', 'Root') diff --git a/blender/arm/logicnode/scene/LN_spawn_collection.py b/blender/arm/logicnode/scene/LN_spawn_collection.py index 12e995e9..72c6db7c 100644 --- a/blender/arm/logicnode/scene/LN_spawn_collection.py +++ b/blender/arm/logicnode/scene/LN_spawn_collection.py @@ -33,7 +33,7 @@ class SpawnCollectionNode(ArmLogicTreeNode): def init(self, context): super(SpawnCollectionNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Transform') + self.add_input('ArmDynamicSocket', 'Transform') self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketArray', 'Top-Level Objects') diff --git a/blender/arm/logicnode/scene/LN_spawn_scene.py b/blender/arm/logicnode/scene/LN_spawn_scene.py index d9d42a2b..5a2b50dd 100644 --- a/blender/arm/logicnode/scene/LN_spawn_scene.py +++ b/blender/arm/logicnode/scene/LN_spawn_scene.py @@ -9,8 +9,8 @@ class SpawnSceneNode(ArmLogicTreeNode): def init(self, context): super(SpawnSceneNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Scene') - self.add_input('NodeSocketShader', 'Transform') + self.add_input('ArmDynamicSocket', 'Scene') + self.add_input('ArmDynamicSocket', 'Transform') self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmNodeSocketObject', 'Root') diff --git a/blender/arm/logicnode/string/LN_concatenate_string.py b/blender/arm/logicnode/string/LN_concatenate_string.py index 381957c0..0c8c3e13 100644 --- a/blender/arm/logicnode/string/LN_concatenate_string.py +++ b/blender/arm/logicnode/string/LN_concatenate_string.py @@ -12,14 +12,14 @@ class ConcatenateStringNode(ArmLogicTreeNode): def init(self, context): super(ConcatenateStringNode, self).init(context) - self.add_input('NodeSocketString', 'Input 0') + self.add_input('ArmStringSocket', 'Input 0') - self.add_output('NodeSocketString', 'String') + self.add_output('ArmStringSocket', 'String') def draw_buttons(self, context, layout): row = layout.row(align=True) op = row.operator('arm.node_add_input', text='New', icon='PLUS', emboss=True) op.node_index = str(id(self)) - op.socket_type = 'NodeSocketString' + op.socket_type = 'ArmStringSocket' op = row.operator('arm.node_remove_input', text='', icon='X', emboss=True) op.node_index = str(id(self)) diff --git a/blender/arm/logicnode/string/LN_parse_float.py b/blender/arm/logicnode/string/LN_parse_float.py index 2cb6b8cb..f52fc698 100644 --- a/blender/arm/logicnode/string/LN_parse_float.py +++ b/blender/arm/logicnode/string/LN_parse_float.py @@ -9,6 +9,6 @@ class ParseFloatNode(ArmLogicTreeNode): def init(self, context): super(ParseFloatNode, self).init(context) - self.add_output('NodeSocketFloat', 'Float') + self.add_output('ArmFloatSocket', 'Float') - self.add_input('NodeSocketString', 'String') + self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/string/LN_split_string.py b/blender/arm/logicnode/string/LN_split_string.py index 793716eb..79941b81 100644 --- a/blender/arm/logicnode/string/LN_split_string.py +++ b/blender/arm/logicnode/string/LN_split_string.py @@ -10,5 +10,5 @@ class SplitStringNode(ArmLogicTreeNode): super(SplitStringNode, self).init(context) self.add_output('ArmNodeSocketArray', 'Array') - self.add_input('NodeSocketString', 'String') - self.add_input('NodeSocketString', 'Split') + self.add_input('ArmStringSocket', 'String') + self.add_input('ArmStringSocket', 'Split') diff --git a/blender/arm/logicnode/string/LN_string.py b/blender/arm/logicnode/string/LN_string.py index bc37a715..6b4679c3 100644 --- a/blender/arm/logicnode/string/LN_string.py +++ b/blender/arm/logicnode/string/LN_string.py @@ -8,6 +8,6 @@ class StringNode(ArmLogicTreeNode): def init(self, context): super(StringNode, self).init(context) - self.add_input('NodeSocketString', 'String In') + self.add_input('ArmStringSocket', 'String In') - self.add_output('NodeSocketString', 'String Out', is_var=True) + self.add_output('ArmStringSocket', 'String Out', is_var=True) diff --git a/blender/arm/logicnode/string/LN_string_case.py b/blender/arm/logicnode/string/LN_string_case.py index 64d35ae1..195bb6c1 100644 --- a/blender/arm/logicnode/string/LN_string_case.py +++ b/blender/arm/logicnode/string/LN_string_case.py @@ -14,9 +14,9 @@ class CaseStringNode(ArmLogicTreeNode): def init(self, context): super(CaseStringNode, self).init(context) - self.add_input('NodeSocketString', 'String In') + self.add_input('ArmStringSocket', 'String In') - self.add_output('NodeSocketString', 'String Out') + self.add_output('ArmStringSocket', 'String Out') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/string/LN_string_contains.py b/blender/arm/logicnode/string/LN_string_contains.py index dafe546f..aa657ec5 100644 --- a/blender/arm/logicnode/string/LN_string_contains.py +++ b/blender/arm/logicnode/string/LN_string_contains.py @@ -15,10 +15,10 @@ class ContainsStringNode(ArmLogicTreeNode): def init(self, context): super(ContainsStringNode, self).init(context) - self.add_input('NodeSocketString', 'String') - self.add_input('NodeSocketString', 'Find') + self.add_input('ArmStringSocket', 'String') + self.add_input('ArmStringSocket', 'Find') - self.add_output('NodeSocketBool', 'Contains') + self.add_output('ArmBoolSocket', 'Contains') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/string/LN_string_length.py b/blender/arm/logicnode/string/LN_string_length.py index 2e4f249d..9037a1ed 100644 --- a/blender/arm/logicnode/string/LN_string_length.py +++ b/blender/arm/logicnode/string/LN_string_length.py @@ -8,6 +8,6 @@ class LengthStringNode(ArmLogicTreeNode): def init(self, context): super(LengthStringNode, self).init(context) - self.add_output('NodeSocketInt', 'Length') + self.add_output('ArmIntSocket', 'Length') - self.add_input('NodeSocketString', 'String') + self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/string/LN_sub_string.py b/blender/arm/logicnode/string/LN_sub_string.py index 60c65213..b3b0a7c0 100644 --- a/blender/arm/logicnode/string/LN_sub_string.py +++ b/blender/arm/logicnode/string/LN_sub_string.py @@ -8,8 +8,8 @@ class SubStringNode(ArmLogicTreeNode): def init(self, context): super(SubStringNode, self).init(context) - self.add_input('NodeSocketString', 'String In') - self.add_input('NodeSocketInt', 'Start') - self.add_input('NodeSocketInt', 'End') + self.add_input('ArmStringSocket', 'String In') + self.add_input('ArmIntSocket', 'Start') + self.add_input('ArmIntSocket', 'End') - self.add_output('NodeSocketString', 'String Out') + self.add_output('ArmStringSocket', 'String Out') diff --git a/blender/arm/logicnode/trait/LN_add_trait_to_object.py b/blender/arm/logicnode/trait/LN_add_trait_to_object.py index 04a22b31..c2fe8847 100644 --- a/blender/arm/logicnode/trait/LN_add_trait_to_object.py +++ b/blender/arm/logicnode/trait/LN_add_trait_to_object.py @@ -10,6 +10,6 @@ class AddTraitNode(ArmLogicTreeNode): super(AddTraitNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Trait') + self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/trait/LN_get_object_trait.py b/blender/arm/logicnode/trait/LN_get_object_trait.py index 86c9dd15..7014a2f8 100644 --- a/blender/arm/logicnode/trait/LN_get_object_trait.py +++ b/blender/arm/logicnode/trait/LN_get_object_trait.py @@ -10,6 +10,6 @@ class GetTraitNode(ArmLogicTreeNode): def init(self, context): super(GetTraitNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Name') + self.add_input('ArmStringSocket', 'Name') - self.add_output('NodeSocketShader', 'Trait') + self.add_output('ArmDynamicSocket', 'Trait') diff --git a/blender/arm/logicnode/trait/LN_get_trait_name.py b/blender/arm/logicnode/trait/LN_get_trait_name.py index 49143b6b..c8156da5 100644 --- a/blender/arm/logicnode/trait/LN_get_trait_name.py +++ b/blender/arm/logicnode/trait/LN_get_trait_name.py @@ -8,7 +8,7 @@ class GetTraitNameNode(ArmLogicTreeNode): def init(self, context): super(GetTraitNameNode, self).init(context) - self.add_input('NodeSocketShader', 'Trait') + self.add_input('ArmDynamicSocket', 'Trait') - self.add_output('NodeSocketString', 'Name') - self.add_output('NodeSocketString', 'Class Type') + self.add_output('ArmStringSocket', 'Name') + self.add_output('ArmStringSocket', 'Class Type') diff --git a/blender/arm/logicnode/trait/LN_get_trait_paused.py b/blender/arm/logicnode/trait/LN_get_trait_paused.py index 2150523d..286df85d 100644 --- a/blender/arm/logicnode/trait/LN_get_trait_paused.py +++ b/blender/arm/logicnode/trait/LN_get_trait_paused.py @@ -8,6 +8,6 @@ class GetTraitPausedNode(ArmLogicTreeNode): def init(self, context): super(GetTraitPausedNode, self).init(context) - self.add_input('NodeSocketShader', 'Trait') + self.add_input('ArmDynamicSocket', 'Trait') - self.add_output('NodeSocketBool', 'Is Paused') + self.add_output('ArmBoolSocket', 'Is Paused') diff --git a/blender/arm/logicnode/trait/LN_remove_trait.py b/blender/arm/logicnode/trait/LN_remove_trait.py index 07a41f16..0d40e82a 100644 --- a/blender/arm/logicnode/trait/LN_remove_trait.py +++ b/blender/arm/logicnode/trait/LN_remove_trait.py @@ -9,6 +9,6 @@ class RemoveTraitNode(ArmLogicTreeNode): def init(self, context): super(RemoveTraitNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Trait') + self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/trait/LN_self_trait.py b/blender/arm/logicnode/trait/LN_self_trait.py index dc06e0c4..5e3c85b7 100644 --- a/blender/arm/logicnode/trait/LN_self_trait.py +++ b/blender/arm/logicnode/trait/LN_self_trait.py @@ -8,4 +8,4 @@ class SelfTraitNode(ArmLogicTreeNode): def init(self, context): super(SelfTraitNode, self).init(context) - self.add_output('NodeSocketShader', 'Trait') + self.add_output('ArmDynamicSocket', 'Trait') diff --git a/blender/arm/logicnode/trait/LN_set_trait_paused.py b/blender/arm/logicnode/trait/LN_set_trait_paused.py index 81ada9c4..6c4b595c 100644 --- a/blender/arm/logicnode/trait/LN_set_trait_paused.py +++ b/blender/arm/logicnode/trait/LN_set_trait_paused.py @@ -9,7 +9,7 @@ class SetTraitPausedNode(ArmLogicTreeNode): def init(self, context): super(SetTraitPausedNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Trait') - self.add_input('NodeSocketBool', 'Paused') + self.add_input('ArmDynamicSocket', 'Trait') + self.add_input('ArmBoolSocket', 'Paused') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/trait/LN_trait.py b/blender/arm/logicnode/trait/LN_trait.py index b572923f..4ed2a6dd 100644 --- a/blender/arm/logicnode/trait/LN_trait.py +++ b/blender/arm/logicnode/trait/LN_trait.py @@ -12,7 +12,7 @@ class TraitNode(ArmLogicTreeNode): def init(self, context): super(TraitNode, self).init(context) - self.add_output('NodeSocketShader', 'Trait', is_var=True) + self.add_output('ArmDynamicSocket', 'Trait', is_var=True) def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/transform/LN_append_transform.py b/blender/arm/logicnode/transform/LN_append_transform.py index a0def018..81a087c0 100644 --- a/blender/arm/logicnode/transform/LN_append_transform.py +++ b/blender/arm/logicnode/transform/LN_append_transform.py @@ -10,6 +10,6 @@ class AppendTransformNode(ArmLogicTreeNode): super(AppendTransformNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Transform') + self.add_input('ArmDynamicSocket', 'Transform') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_get_object_location.py b/blender/arm/logicnode/transform/LN_get_object_location.py index c708ba9a..06b15234 100644 --- a/blender/arm/logicnode/transform/LN_get_object_location.py +++ b/blender/arm/logicnode/transform/LN_get_object_location.py @@ -11,4 +11,4 @@ class GetLocationNode(ArmLogicTreeNode): super(GetLocationNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketVector', 'Location') + self.add_output('ArmVectorSocket', 'Location') diff --git a/blender/arm/logicnode/transform/LN_get_object_rotation.py b/blender/arm/logicnode/transform/LN_get_object_rotation.py index ab14b0d0..821a47d8 100644 --- a/blender/arm/logicnode/transform/LN_get_object_rotation.py +++ b/blender/arm/logicnode/transform/LN_get_object_rotation.py @@ -11,9 +11,9 @@ class GetRotationNode(ArmLogicTreeNode): super(GetRotationNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketVector', 'Euler Angles') - self.add_output('NodeSocketVector', 'Vector') - self.add_output('NodeSocketFloat', 'Angle (Radians)') - self.add_output('NodeSocketFloat', 'Angle (Degrees)') - self.add_output('NodeSocketVector', 'Quaternion XYZ') - self.add_output('NodeSocketFloat', 'Quaternion W') + self.add_output('ArmVectorSocket', 'Euler Angles') + self.add_output('ArmVectorSocket', 'Vector') + self.add_output('ArmFloatSocket', 'Angle (Radians)') + self.add_output('ArmFloatSocket', 'Angle (Degrees)') + self.add_output('ArmVectorSocket', 'Quaternion XYZ') + self.add_output('ArmFloatSocket', 'Quaternion W') diff --git a/blender/arm/logicnode/transform/LN_get_object_scale.py b/blender/arm/logicnode/transform/LN_get_object_scale.py index 60f21e65..f6f1ff56 100644 --- a/blender/arm/logicnode/transform/LN_get_object_scale.py +++ b/blender/arm/logicnode/transform/LN_get_object_scale.py @@ -11,4 +11,4 @@ class GetScaleNode(ArmLogicTreeNode): super(GetScaleNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketVector', 'Scale') + self.add_output('ArmVectorSocket', 'Scale') diff --git a/blender/arm/logicnode/transform/LN_get_object_transform.py b/blender/arm/logicnode/transform/LN_get_object_transform.py index 1477d899..a10163ae 100644 --- a/blender/arm/logicnode/transform/LN_get_object_transform.py +++ b/blender/arm/logicnode/transform/LN_get_object_transform.py @@ -12,4 +12,4 @@ class GetTransformNode(ArmLogicTreeNode): super(GetTransformNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketShader', 'Transform') + self.add_output('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/transform/LN_get_world_orientation.py b/blender/arm/logicnode/transform/LN_get_world_orientation.py index 7efce5b3..28c074c6 100644 --- a/blender/arm/logicnode/transform/LN_get_world_orientation.py +++ b/blender/arm/logicnode/transform/LN_get_world_orientation.py @@ -18,7 +18,7 @@ class GetWorldNode(ArmLogicTreeNode): super(GetWorldNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_output('NodeSocketVector', 'Vector') + self.add_output('ArmVectorSocket', 'Vector') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/transform/LN_look_at.py b/blender/arm/logicnode/transform/LN_look_at.py index 0d276883..a38b20f2 100644 --- a/blender/arm/logicnode/transform/LN_look_at.py +++ b/blender/arm/logicnode/transform/LN_look_at.py @@ -19,10 +19,10 @@ class LookAtNode(ArmLogicTreeNode): def init(self, context): super(LookAtNode, self).init(context) - self.add_input('NodeSocketVector', 'From Location') - self.add_input('NodeSocketVector', 'To Location') + self.add_input('ArmVectorSocket', 'From Location') + self.add_input('ArmVectorSocket', 'To Location') - self.add_output('NodeSocketVector', 'Rotation') + self.add_output('ArmVectorSocket', 'Rotation') def draw_buttons(self, context, layout): layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/transform/LN_rotate_object.py b/blender/arm/logicnode/transform/LN_rotate_object.py index 66cc6498..773c245f 100644 --- a/blender/arm/logicnode/transform/LN_rotate_object.py +++ b/blender/arm/logicnode/transform/LN_rotate_object.py @@ -11,8 +11,8 @@ class RotateObjectNode(ArmLogicTreeNode): super().init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'Euler Angles') - self.add_input('NodeSocketFloat', 'Angle / W') + self.add_input('ArmVectorSocket', 'Euler Angles') + self.add_input('ArmFloatSocket', 'Angle / W') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_separate_transform.py b/blender/arm/logicnode/transform/LN_separate_transform.py index 5c834992..28762a17 100644 --- a/blender/arm/logicnode/transform/LN_separate_transform.py +++ b/blender/arm/logicnode/transform/LN_separate_transform.py @@ -8,8 +8,8 @@ class SeparateTransformNode(ArmLogicTreeNode): def init(self, context): super(SeparateTransformNode, self).init(context) - self.add_input('NodeSocketShader', 'Transform') + self.add_input('ArmDynamicSocket', 'Transform') - self.add_output('NodeSocketVector', 'Location') - self.add_output('NodeSocketVector', 'Rotation') - self.add_output('NodeSocketVector', 'Scale') + self.add_output('ArmVectorSocket', 'Location') + self.add_output('ArmVectorSocket', 'Rotation') + self.add_output('ArmVectorSocket', 'Scale') diff --git a/blender/arm/logicnode/transform/LN_set_object_location.py b/blender/arm/logicnode/transform/LN_set_object_location.py index 48afdffb..36a665b5 100644 --- a/blender/arm/logicnode/transform/LN_set_object_location.py +++ b/blender/arm/logicnode/transform/LN_set_object_location.py @@ -11,6 +11,6 @@ class SetLocationNode(ArmLogicTreeNode): super(SetLocationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'Location') + self.add_input('ArmVectorSocket', 'Location') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_set_object_rotation.py b/blender/arm/logicnode/transform/LN_set_object_rotation.py index b9c38a45..ac563ff5 100644 --- a/blender/arm/logicnode/transform/LN_set_object_rotation.py +++ b/blender/arm/logicnode/transform/LN_set_object_rotation.py @@ -11,8 +11,8 @@ class SetRotationNode(ArmLogicTreeNode): super(SetRotationNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'Euler Angles / Vector XYZ') - self.add_input('NodeSocketFloat', 'Angle / W') + self.add_input('ArmVectorSocket', 'Euler Angles / Vector XYZ') + self.add_input('ArmFloatSocket', 'Angle / W') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_set_object_scale.py b/blender/arm/logicnode/transform/LN_set_object_scale.py index e9580801..d797cba3 100644 --- a/blender/arm/logicnode/transform/LN_set_object_scale.py +++ b/blender/arm/logicnode/transform/LN_set_object_scale.py @@ -11,6 +11,6 @@ class SetScaleNode(ArmLogicTreeNode): super(SetScaleNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'Scale', default_value=[1.0, 1.0, 1.0]) + self.add_input('ArmVectorSocket', 'Scale', default_value=[1.0, 1.0, 1.0]) self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_set_object_transform.py b/blender/arm/logicnode/transform/LN_set_object_transform.py index 8d965d3e..99b08ac7 100644 --- a/blender/arm/logicnode/transform/LN_set_object_transform.py +++ b/blender/arm/logicnode/transform/LN_set_object_transform.py @@ -10,6 +10,6 @@ class SetTransformNode(ArmLogicTreeNode): super(SetTransformNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketShader', 'Transform') + self.add_input('ArmDynamicSocket', 'Transform') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_transform.py b/blender/arm/logicnode/transform/LN_transform.py index 002502a8..95c1fea4 100644 --- a/blender/arm/logicnode/transform/LN_transform.py +++ b/blender/arm/logicnode/transform/LN_transform.py @@ -8,8 +8,8 @@ class TransformNode(ArmLogicTreeNode): def init(self, context): super(TransformNode, self).init(context) - self.add_input('NodeSocketVector', 'Location') - self.add_input('NodeSocketVector', 'Rotation') - self.add_input('NodeSocketVector', 'Scale', default_value=[1.0, 1.0, 1.0]) + self.add_input('ArmVectorSocket', 'Location') + self.add_input('ArmVectorSocket', 'Rotation') + self.add_input('ArmVectorSocket', 'Scale', default_value=[1.0, 1.0, 1.0]) - self.add_output('NodeSocketShader', 'Transform') + self.add_output('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/transform/LN_transform_math.py b/blender/arm/logicnode/transform/LN_transform_math.py index 282a9439..70a7b5dc 100644 --- a/blender/arm/logicnode/transform/LN_transform_math.py +++ b/blender/arm/logicnode/transform/LN_transform_math.py @@ -8,7 +8,7 @@ class TransformMathNode(ArmLogicTreeNode): def init(self, context): super(TransformMathNode, self).init(context) - self.add_input('NodeSocketShader', 'Transform 1') - self.add_input('NodeSocketShader', 'Transform 2') + self.add_input('ArmDynamicSocket', 'Transform 1') + self.add_input('ArmDynamicSocket', 'Transform 2') - self.add_output('NodeSocketShader', 'Result') + self.add_output('ArmDynamicSocket', 'Result') diff --git a/blender/arm/logicnode/transform/LN_transform_to_vector.py b/blender/arm/logicnode/transform/LN_transform_to_vector.py index 9fbc6c3d..9b01681d 100644 --- a/blender/arm/logicnode/transform/LN_transform_to_vector.py +++ b/blender/arm/logicnode/transform/LN_transform_to_vector.py @@ -8,11 +8,11 @@ class VectorFromTransformNode(ArmLogicTreeNode): def init(self, context): super(VectorFromTransformNode, self).init(context) - self.add_input('NodeSocketShader', 'Transform') + self.add_input('ArmDynamicSocket', 'Transform') - self.add_output('NodeSocketVector', 'Vector') - self.add_output('NodeSocketVector', 'Quaternion XYZ') - self.add_output('NodeSocketFloat', 'Quaternion W') + self.add_output('ArmVectorSocket', 'Vector') + self.add_output('ArmVectorSocket', 'Quaternion XYZ') + self.add_output('ArmFloatSocket', 'Quaternion W') def on_property_update(self, context): """called by the EnumProperty, used to update the node socket labels""" diff --git a/blender/arm/logicnode/transform/LN_translate_object.py b/blender/arm/logicnode/transform/LN_translate_object.py index 048043be..9076e9ad 100644 --- a/blender/arm/logicnode/transform/LN_translate_object.py +++ b/blender/arm/logicnode/transform/LN_translate_object.py @@ -11,7 +11,7 @@ class TranslateObjectNode(ArmLogicTreeNode): super(TranslateObjectNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'Vector') - self.add_input('NodeSocketBool', 'On Local Axis') + self.add_input('ArmVectorSocket', 'Vector') + self.add_input('ArmBoolSocket', 'On Local Axis') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_translate_on_local_axis.py b/blender/arm/logicnode/transform/LN_translate_on_local_axis.py index 41c1af5c..35456dad 100644 --- a/blender/arm/logicnode/transform/LN_translate_on_local_axis.py +++ b/blender/arm/logicnode/transform/LN_translate_on_local_axis.py @@ -12,8 +12,8 @@ class TranslateOnLocalAxisNode(ArmLogicTreeNode): super(TranslateOnLocalAxisNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketFloat', 'Speed') - self.add_input('NodeSocketInt', 'Forward/Up/Right') - self.add_input('NodeSocketBool', 'Inverse') + self.add_input('ArmFloatSocket', 'Speed') + self.add_input('ArmIntSocket', 'Forward/Up/Right') + self.add_input('ArmBoolSocket', 'Inverse') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py b/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py index e1402b6a..2b064684 100644 --- a/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py +++ b/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py @@ -16,6 +16,6 @@ class VectorToObjectOrientationNode(ArmLogicTreeNode): def init(self, context): super(VectorToObjectOrientationNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'World') + self.add_input('ArmVectorSocket', 'World') - self.add_output('NodeSocketVector', 'Oriented') + self.add_output('ArmVectorSocket', 'Oriented') diff --git a/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py b/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py index 61497f81..0895659e 100644 --- a/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py +++ b/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py @@ -16,6 +16,6 @@ class WorldVectorToLocalSpaceNode(ArmLogicTreeNode): def init(self, context): super(WorldVectorToLocalSpaceNode, self).init(context) self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketVector', 'World') + self.add_input('ArmVectorSocket', 'World') - self.add_output('NodeSocketVector', 'Local') + self.add_output('ArmVectorSocket', 'Local') diff --git a/blender/arm/logicnode/variable/LN_boolean.py b/blender/arm/logicnode/variable/LN_boolean.py index 08d597d1..810cdfc9 100644 --- a/blender/arm/logicnode/variable/LN_boolean.py +++ b/blender/arm/logicnode/variable/LN_boolean.py @@ -9,6 +9,6 @@ class BooleanNode(ArmLogicTreeNode): def init(self, context): super(BooleanNode, self).init(context) - self.add_input('NodeSocketBool', 'Bool In') + self.add_input('ArmBoolSocket', 'Bool In') - self.add_output('NodeSocketBool', 'Bool Out', is_var=True) + self.add_output('ArmBoolSocket', 'Bool Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_color.py b/blender/arm/logicnode/variable/LN_color.py index 1723f052..3f7f805e 100644 --- a/blender/arm/logicnode/variable/LN_color.py +++ b/blender/arm/logicnode/variable/LN_color.py @@ -8,6 +8,6 @@ class ColorNode(ArmLogicTreeNode): def init(self, context): super(ColorNode, self).init(context) - self.add_input('NodeSocketColor', 'Color In', default_value=[1.0, 1.0, 1.0, 1.0]) + self.add_input('ArmColorSocket', 'Color In', default_value=[1.0, 1.0, 1.0, 1.0]) - self.add_output('NodeSocketColor', 'Color Out', is_var=True) + self.add_output('ArmColorSocket', 'Color Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_dynamic.py b/blender/arm/logicnode/variable/LN_dynamic.py index 495d23da..11e1e73e 100644 --- a/blender/arm/logicnode/variable/LN_dynamic.py +++ b/blender/arm/logicnode/variable/LN_dynamic.py @@ -8,4 +8,4 @@ class DynamicNode(ArmLogicTreeNode): def init(self, context): super(DynamicNode, self).init(context) - self.add_output('NodeSocketShader', 'Dynamic', is_var=True) + self.add_output('ArmDynamicSocket', 'Dynamic', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_float.py b/blender/arm/logicnode/variable/LN_float.py index a5c0f290..b660e53f 100644 --- a/blender/arm/logicnode/variable/LN_float.py +++ b/blender/arm/logicnode/variable/LN_float.py @@ -11,5 +11,5 @@ class FloatNode(ArmLogicTreeNode): def init(self, context): super(FloatNode, self).init(context) - self.add_input('NodeSocketFloat', 'Float In') - self.add_output('NodeSocketFloat', 'Float Out', is_var=True) + self.add_input('ArmFloatSocket', 'Float In') + self.add_output('ArmFloatSocket', 'Float Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_integer.py b/blender/arm/logicnode/variable/LN_integer.py index f4f022f4..fb16b2d5 100644 --- a/blender/arm/logicnode/variable/LN_integer.py +++ b/blender/arm/logicnode/variable/LN_integer.py @@ -8,5 +8,5 @@ class IntegerNode(ArmLogicTreeNode): def init(self, context): super(IntegerNode, self).init(context) - self.add_input('NodeSocketInt', 'Int In') - self.add_output('NodeSocketInt', 'Int Out', is_var=True) + self.add_input('ArmIntSocket', 'Int In') + self.add_output('ArmIntSocket', 'Int Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_mask.py b/blender/arm/logicnode/variable/LN_mask.py index 002c2472..68ec954f 100644 --- a/blender/arm/logicnode/variable/LN_mask.py +++ b/blender/arm/logicnode/variable/LN_mask.py @@ -10,6 +10,6 @@ class MaskNode(ArmLogicTreeNode): super(MaskNode, self).init(context) for i in range(1, 21): label = 'Group {:02d}'.format(i) - self.inputs.new('NodeSocketBool', label) + self.inputs.new('ArmBoolSocket', label) - self.add_output('NodeSocketInt', 'Mask', is_var=True) + self.add_output('ArmIntSocket', 'Mask', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_quaternion.py b/blender/arm/logicnode/variable/LN_quaternion.py index 8f91465d..15eb6ca2 100644 --- a/blender/arm/logicnode/variable/LN_quaternion.py +++ b/blender/arm/logicnode/variable/LN_quaternion.py @@ -9,11 +9,11 @@ class QuaternionNode(ArmLogicTreeNode): def init(self, context): super(QuaternionNode, self).init(context) - self.add_input('NodeSocketFloat', 'X') - self.add_input('NodeSocketFloat', 'Y') - self.add_input('NodeSocketFloat', 'Z') - self.add_input('NodeSocketFloat', 'W', default_value=1.0) + self.add_input('ArmFloatSocket', 'X') + self.add_input('ArmFloatSocket', 'Y') + self.add_input('ArmFloatSocket', 'Z') + self.add_input('ArmFloatSocket', 'W', default_value=1.0) - self.add_output('NodeSocketVector', 'Quaternion') - self.add_output('NodeSocketVector', 'XYZ') - self.add_output('NodeSocketFloat', 'W') + self.add_output('ArmVectorSocket', 'Quaternion') + self.add_output('ArmVectorSocket', 'XYZ') + self.add_output('ArmFloatSocket', 'W') diff --git a/blender/arm/logicnode/variable/LN_set_variable.py b/blender/arm/logicnode/variable/LN_set_variable.py index d9ed2985..ae729ee7 100644 --- a/blender/arm/logicnode/variable/LN_set_variable.py +++ b/blender/arm/logicnode/variable/LN_set_variable.py @@ -16,7 +16,7 @@ class SetVariableNode(ArmLogicTreeNode): def init(self, context): super(SetVariableNode, self).init(context) self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketShader', 'Variable', is_var=True) - self.add_input('NodeSocketShader', 'Value') + self.add_input('ArmDynamicSocket', 'Variable', is_var=True) + self.add_input('ArmDynamicSocket', 'Value') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/variable/LN_vector.py b/blender/arm/logicnode/variable/LN_vector.py index 630f2a9f..d93cd2c6 100644 --- a/blender/arm/logicnode/variable/LN_vector.py +++ b/blender/arm/logicnode/variable/LN_vector.py @@ -8,8 +8,8 @@ class VectorNode(ArmLogicTreeNode): def init(self, context): super(VectorNode, self).init(context) - self.add_input('NodeSocketFloat', 'X') - self.add_input('NodeSocketFloat', 'Y') - self.add_input('NodeSocketFloat', 'Z') + self.add_input('ArmFloatSocket', 'X') + self.add_input('ArmFloatSocket', 'Y') + self.add_input('ArmFloatSocket', 'Z') - self.add_output('NodeSocketVector', 'Vector', is_var=True) + self.add_output('ArmVectorSocket', 'Vector', is_var=True) diff --git a/blender/arm/node_utils.py b/blender/arm/node_utils.py index e501707f..2e601884 100755 --- a/blender/arm/node_utils.py +++ b/blender/arm/node_utils.py @@ -5,6 +5,7 @@ from bpy.types import NodeSocket, NodeInputs, NodeOutputs from nodeitems_utils import NodeItem import arm.log +import arm.logicnode.arm_sockets import arm.utils @@ -60,6 +61,30 @@ def get_socket_index(sockets: Union[NodeInputs, NodeOutputs], socket: NodeSocket return -1 +def get_socket_default(socket: NodeSocket) -> Any: + """Get the socket's default value, or `None` if it doesn't exist.""" + if isinstance(socket, arm.logicnode.arm_sockets.ArmCustomSocket): + if socket.arm_socket_type != 'NONE': + return socket.default_value_raw + + # Shader-type sockets don't have a default value + elif socket.type != 'SHADER': + return socket.default_value + + return None + + +def set_socket_default(socket: NodeSocket, value: Any): + """Set the socket's default value if it exists.""" + if isinstance(socket, arm.logicnode.arm_sockets.ArmCustomSocket): + if socket.arm_socket_type != 'NONE': + socket.default_value_raw = value + + # Shader-type sockets don't have a default value + elif socket.type != 'SHADER': + socket.default_value = value + + def get_export_tree_name(tree: bpy.types.NodeTree, do_warn=False) -> str: """Return the name of the given node tree that's used in the exported Haxe code. diff --git a/blender/arm/nodes_logic.py b/blender/arm/nodes_logic.py index 12f605fb..ff1c20ce 100755 --- a/blender/arm/nodes_logic.py +++ b/blender/arm/nodes_logic.py @@ -354,7 +354,7 @@ class ReplaceNodesOperator(bpy.types.Operator): bl_description = "Replace deprecated nodes" def execute(self, context): - arm.logicnode.replacement.replace_all() + arm.logicnode.replacement.replace_all(force_replacement=True) return {'FINISHED'} @classmethod diff --git a/blender/arm/props.py b/blender/arm/props.py index 99497c80..8c48ce9f 100755 --- a/blender/arm/props.py +++ b/blender/arm/props.py @@ -492,18 +492,25 @@ def init_properties_on_load(): def update_armory_world(): global arm_version wrd = bpy.data.worlds['Arm'] + # Outdated project - if bpy.data.filepath != '' and (wrd.arm_version != arm_version or wrd.arm_commit != arm_commit): # Call on project load only - # This allows for seamless migration from ealier versions of Armory - for rp in wrd.arm_rplist: # TODO: deprecated + file_version = tuple(map(int, wrd.arm_version.split('.'))) + sdk_version = tuple(map(int, arm_version.split('.'))) + if bpy.data.filepath != '' and (file_version < sdk_version or wrd.arm_commit != arm_commit): + # This allows for seamless migration from earlier versions of Armory + for rp in wrd.arm_rplist: # TODO: deprecated if rp.rp_gi != 'Off': rp.rp_gi = 'Off' rp.rp_voxelao = True - # Replace deprecated nodes + if file_version < (2021, 8): + # There were breaking changes in SDK 2021.08, use a special + # update routine first before regularly replacing nodes + arm.logicnode.replacement.node_compat_sdk2108() + arm.logicnode.replacement.replace_all() - print('Project updated to sdk v' + arm_version + ' (' + arm_commit + ')') + print(f'Project updated to SDK v{arm_version}({arm_commit})') wrd.arm_version = arm_version wrd.arm_commit = arm_commit arm.make.clean() diff --git a/blender/arm/utils.py b/blender/arm/utils.py index 7b3af738..2003a905 100755 --- a/blender/arm/utils.py +++ b/blender/arm/utils.py @@ -948,6 +948,10 @@ def get_link_web_server(): def compare_version_blender_arm(): return not (bpy.app.version[0] != 2 or bpy.app.version[1] != 93) +def get_file_arm_version_tuple() -> tuple[int]: + wrd = bpy.data.worlds['Arm'] + return tuple(map(int, wrd.arm_version.split('.'))) + def type_name_to_type(name: str) -> bpy.types.bpy_struct: """Return the Blender type given by its name, if registered.""" return bpy.types.bpy_struct.bl_rna_get_subclass_py(name) From ee194a18069cadc522762eb8eef3baf29a7ce752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 10 Jul 2021 21:50:30 +0200 Subject: [PATCH 14/45] Live patch: support for socket default values --- Sources/armory/trait/internal/LivePatch.hx | 10 +++++++++ blender/arm/live_patch.py | 26 +++++++++++++++++++++- blender/arm/logicnode/arm_nodes.py | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 8d8be7db..7a9733e5 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -55,5 +55,15 @@ class LivePatch extends iron.Trait { 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 } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index c9a89c9e..cfd8ecd5 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -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}");' write_patch(js) - if event_id == 'ln_update_prop': + elif event_id == 'ln_update_prop': node: ArmLogicTreeNode prop_name: str 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});' 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): """As long as bpy.msgbus doesn't listen to changes made by diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index 7c929f31..1f8f9681 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -62,7 +62,7 @@ class ArmLogicTreeNode(bpy.types.Node): 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): - pass + arm.live_patch.send_event('ln_socket_val', (self, socket)) def insert_link(self, link: bpy.types.NodeLink): """Called on *both* nodes when a link between two nodes is created.""" From 823cc379b65bf5ca7d56139c49a354861469f78c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 10 Jul 2021 22:08:19 +0200 Subject: [PATCH 15/45] Live patch: ignore more operators & fix code style --- blender/arm/live_patch.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index cfd8ecd5..f6b97e23 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -224,17 +224,29 @@ def on_operator(operator_id: str): """ if not __running: return - # Don't re-export the scene for the following operators - if operator_id in ("VIEW3D_OT_select", "OUTLINER_OT_item_activate", "OBJECT_OT_editmode_toggle", "NODE_OT_select", "NODE_OT_translate_attach_remove_on_cancel"): + + if operator_id in IGNORE_OPERATORS: return - if operator_id == "TRANSFORM_OT_translate": - send_event("obj_location") - elif operator_id in ("TRANSFORM_OT_rotate", "TRANSFORM_OT_trackball"): - send_event("obj_rotation") - elif operator_id == "TRANSFORM_OT_resize": - send_event("obj_scale") + if operator_id == 'TRANSFORM_OT_translate': + send_event('obj_location') + elif operator_id in ('TRANSFORM_OT_rotate', 'TRANSFORM_OT_trackball'): + send_event('obj_rotation') + elif operator_id == 'TRANSFORM_OT_resize': + send_event('obj_scale') # Rebuild else: patch_export() + + +# Don't re-export the scene for the following operators +IGNORE_OPERATORS = ( + 'VIEW3D_OT_select', + 'VIEW3D_OT_select_box', + 'OUTLINER_OT_item_activate', + 'OBJECT_OT_editmode_toggle', + 'NODE_OT_select', + 'NODE_OT_translate_attach_remove_on_cancel', + 'NODE_OT_translate_attach' +) From bdee03873b99904b9612b1b4fe4f8d202566bd26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 18 Jul 2021 22:28:32 +0200 Subject: [PATCH 16/45] Live patch: support for node duplication --- Sources/armory/trait/internal/LivePatch.hx | 55 +++++++++++++++++++++- blender/arm/live_patch.py | 29 ++++++++++-- blender/arm/logicnode/arm_nodes.py | 6 +++ blender/arm/make_logic.py | 15 +++--- blender/arm/node_utils.py | 25 ++++++++-- 5 files changed, 114 insertions(+), 16 deletions(-) diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 7a9733e5..61ff0af8 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -1,6 +1,6 @@ package armory.trait.internal; -import armory.logicnode.LogicNode.LogicNodeInput; +import armory.logicnode.LogicNode; import armory.logicnode.LogicTree; @@ -65,5 +65,58 @@ class LivePatch extends iron.Trait { @:privateAccess node.inputs[socketIndex].set(value); } + + public static function patchNodeCopy(treeName: String, nodeName: String, newNodeName: String, copyProps: Array, inputDatas: Array>, outputDatas: Array>) { + var tree = LogicTree.nodeTrees[treeName]; + if (tree == null) return; + + var node = tree.nodes[nodeName]; + if (node == null) return; + + // No further constructor parameters required here, all variable nodes + // use optional further parameters and all values are set later in this + // function. + var newNode = Type.createInstance(Type.getClass(node), [tree]); + newNode.name = newNodeName; + tree.nodes[newNodeName] = newNode; + + for (propName in copyProps) { + Reflect.setField(newNode, propName, Reflect.field(node, propName)); + } + + var i = 0; + for (inputData in inputDatas) { + newNode.addInput(createSocketDefaultNode(newNode, inputData[0], inputData[1]), i++); + } + + for (outputData in outputDatas) { + newNode.addOutputs([createSocketDefaultNode(newNode, outputData[0], outputData[1])]); + } + } + + static inline function createSocketDefaultNode(node: LogicNode, inputType: String, value: Dynamic): LogicNode { + return switch (inputType) { + case "VECTOR": + new armory.logicnode.VectorNode(node.tree, value[0], value[1], value[2]); + case "RGBA": + new armory.logicnode.ColorNode(node.tree, value[0], value[1], value[2], value[3]); + case "RGB": + new armory.logicnode.ColorNode(node.tree, value[0], value[1], value[2]); + case "VALUE": + new armory.logicnode.FloatNode(node.tree, value); + case "INT": + new armory.logicnode.IntegerNode(node.tree, value); + case "BOOLEAN": + new armory.logicnode.BooleanNode(node.tree, value); + case "STRING": + new armory.logicnode.StringNode(node.tree, value); + case "NONE": + new armory.logicnode.NullNode(node.tree); + case "OBJECT": + new armory.logicnode.ObjectNode(node.tree, value); + default: + new armory.logicnode.DynamicNode(node.tree, value); + } + } #end } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index f6b97e23..0affd3f2 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -202,19 +202,40 @@ def send_event(event_id: str, opt_data: Any = None): 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()) + value = 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() + else: + value = arm.node_utils.haxe_format_socket_val(value) js = f'LivePatch.patchUpdateNodeInputVal("{tree_name}", "{node_name}", {socket_index}, {value});' write_patch(js) + elif event_id == 'ln_copy': + newnode: ArmLogicTreeNode + node: ArmLogicTreeNode + newnode, node = opt_data + + # Use newnode to get the tree, node has no id_data at this moment + tree_name = arm.node_utils.get_export_tree_name(newnode.get_tree()) + + newnode_name = arm.node_utils.get_export_node_name(newnode)[1:] + node_name = arm.node_utils.get_export_node_name(node)[1:] + + props_list = '[' + ','.join(f'"{p}"' for p in arm.node_utils.get_haxe_property_names(node)) + ']' + + inp_data = [(inp.arm_socket_type, inp.get_default_value()) for inp in newnode.inputs] + inp_data = arm.node_utils.haxe_format_socket_val(inp_data) + out_data = [(out.arm_socket_type, out.get_default_value()) for out in newnode.outputs] + out_data = arm.node_utils.haxe_format_socket_val(out_data) + + js = f'LivePatch.patchNodeCopy("{tree_name}", "{node_name}", "{newnode_name}", {props_list}, {inp_data}, {out_data});' + write_patch(js) + def on_operator(operator_id: str): """As long as bpy.msgbus doesn't listen to changes made by @@ -246,6 +267,8 @@ IGNORE_OPERATORS = ( 'VIEW3D_OT_select_box', 'OUTLINER_OT_item_activate', 'OBJECT_OT_editmode_toggle', + 'NODE_OT_duplicate_move', + 'NODE_OT_link', 'NODE_OT_select', 'NODE_OT_translate_attach_remove_on_cancel', 'NODE_OT_translate_attach' diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index 1f8f9681..6be13f4f 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -54,6 +54,12 @@ class ArmLogicTreeNode(bpy.types.Node): def get_tree(self): return self.id_data + def copy(self, node): + """Called if the node was copied. `self` holds the copied node, + `node` the original one. + """ + arm.live_patch.send_event('ln_copy', (self, node)) + def on_prop_update(self, context: bpy.types.Context, prop_name: str): """Called if a property created with a function from the arm_props module is changed. If the property has a custom update diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index eef667fe..cc6b9a4d 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -267,28 +267,27 @@ def build_default_node(inp: bpy.types.NodeSocket): if is_custom_socket: # ArmCustomSockets need to implement get_default_value() - default_value = arm.node_utils.haxe_format_socket_val(inp.get_default_value()) + default_value = inp.get_default_value() inp_type = inp.arm_socket_type # any custom socket's `type` is "VALUE". might as well have valuable type information for custom nodes as well. else: if hasattr(inp, 'default_value'): default_value = inp.default_value else: default_value = None - default_value = arm.node_utils.haxe_format_socket_val(default_value) inp_type = inp.type + default_value = arm.node_utils.haxe_format_socket_val(default_value, array_outer_brackets=False) + if inp_type == 'VECTOR': - return f'new armory.logicnode.VectorNode(this, {default_value[0]}, {default_value[1]}, {default_value[2]})' - elif inp_type == 'RGBA': - return f'new armory.logicnode.ColorNode(this, {default_value[0]}, {default_value[1]}, {default_value[2]}, {default_value[3]})' - elif inp_type == 'RGB': - return f'new armory.logicnode.ColorNode(this, {default_value[0]}, {default_value[1]}, {default_value[2]})' + return f'new armory.logicnode.VectorNode(this, {default_value})' + elif inp_type in ('RGB', 'RGBA'): + return f'new armory.logicnode.ColorNode(this, {default_value})' elif inp_type == 'VALUE': return f'new armory.logicnode.FloatNode(this, {default_value})' elif inp_type == 'INT': return f'new armory.logicnode.IntegerNode(this, {default_value})' elif inp_type == 'BOOLEAN': - return f'new armory.logicnode.BooleanNode(this, {str(default_value).lower()})' + return f'new armory.logicnode.BooleanNode(this, {default_value})' elif inp_type == 'STRING': return f'new armory.logicnode.StringNode(this, {default_value})' elif inp_type == 'NONE': diff --git a/blender/arm/node_utils.py b/blender/arm/node_utils.py index 2e601884..2a9621fe 100755 --- a/blender/arm/node_utils.py +++ b/blender/arm/node_utils.py @@ -1,6 +1,8 @@ +import collections from typing import Any, Generator, Type, Union import bpy +import mathutils from bpy.types import NodeSocket, NodeInputs, NodeOutputs from nodeitems_utils import NodeItem @@ -122,16 +124,31 @@ def get_haxe_property_names(node: bpy.types.Node) -> Generator[str, None, None]: yield prop_name -def haxe_format_socket_val(socket_val: Any) -> str: - """Formats a socket value to be valid Haxe syntax.""" - if isinstance(socket_val, str): +def haxe_format_socket_val(socket_val: Any, array_outer_brackets=True) -> str: + """Formats a socket value to be valid Haxe syntax. + + If `array_outer_brackets` is false, no square brackets are put + around array values. + + Make sure that elements of sequence types are not yet in Haxe + syntax, otherwise they are strings and get additional quotes! + """ + if isinstance(socket_val, bool): + socket_val = str(socket_val).lower() + + elif isinstance(socket_val, str): socket_val = '"{:s}"'.format(socket_val.replace('"', '\\"')) + elif isinstance(socket_val, (collections.Sequence, bpy.types.bpy_prop_array, mathutils.Color, mathutils.Euler, mathutils.Vector)): + socket_val = ','.join(haxe_format_socket_val(v, array_outer_brackets=True) for v in socket_val) + if array_outer_brackets: + socket_val = f'[{socket_val}]' + elif socket_val is None: # Don't write 'None' into the Haxe code socket_val = 'null' - return socket_val + return str(socket_val) def haxe_format_prop(node: bpy.types.Node, prop_name: str) -> str: From c65764be9902884e9483c266599f4f47efe73968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 20 Jul 2021 14:24:00 +0200 Subject: [PATCH 17/45] Cleanup LivePatch.hx --- Sources/armory/trait/internal/LivePatch.hx | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 61ff0af8..d51c43a1 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -86,36 +86,36 @@ class LivePatch extends iron.Trait { var i = 0; for (inputData in inputDatas) { - newNode.addInput(createSocketDefaultNode(newNode, inputData[0], inputData[1]), i++); + newNode.addInput(createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), i++); } for (outputData in outputDatas) { - newNode.addOutputs([createSocketDefaultNode(newNode, outputData[0], outputData[1])]); + newNode.addOutputs([createSocketDefaultNode(newNode.tree, outputData[0], outputData[1])]); } } - static inline function createSocketDefaultNode(node: LogicNode, inputType: String, value: Dynamic): LogicNode { + static inline function createSocketDefaultNode(tree: LogicTree, inputType: String, value: Dynamic): LogicNode { return switch (inputType) { case "VECTOR": - new armory.logicnode.VectorNode(node.tree, value[0], value[1], value[2]); + new armory.logicnode.VectorNode(tree, value[0], value[1], value[2]); case "RGBA": - new armory.logicnode.ColorNode(node.tree, value[0], value[1], value[2], value[3]); + new armory.logicnode.ColorNode(tree, value[0], value[1], value[2], value[3]); case "RGB": - new armory.logicnode.ColorNode(node.tree, value[0], value[1], value[2]); + new armory.logicnode.ColorNode(tree, value[0], value[1], value[2]); case "VALUE": - new armory.logicnode.FloatNode(node.tree, value); + new armory.logicnode.FloatNode(tree, value); case "INT": - new armory.logicnode.IntegerNode(node.tree, value); + new armory.logicnode.IntegerNode(tree, value); case "BOOLEAN": - new armory.logicnode.BooleanNode(node.tree, value); + new armory.logicnode.BooleanNode(tree, value); case "STRING": - new armory.logicnode.StringNode(node.tree, value); + new armory.logicnode.StringNode(tree, value); case "NONE": - new armory.logicnode.NullNode(node.tree); + new armory.logicnode.NullNode(tree); case "OBJECT": - new armory.logicnode.ObjectNode(node.tree, value); + new armory.logicnode.ObjectNode(tree, value); default: - new armory.logicnode.DynamicNode(node.tree, value); + new armory.logicnode.DynamicNode(tree, value); } } #end From e930da7388d2da2277d53b03a62de2f97c2ec5b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 20 Jul 2021 14:25:35 +0200 Subject: [PATCH 18/45] Live patch: support for node deletion --- Sources/armory/trait/internal/LivePatch.hx | 39 ++++++++++++++++++++++ blender/arm/live_patch.py | 12 +++++++ blender/arm/logicnode/arm_nodes.py | 4 +++ 3 files changed, 55 insertions(+) diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index d51c43a1..190a85ff 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -66,6 +66,45 @@ class LivePatch extends iron.Trait { @:privateAccess node.inputs[socketIndex].set(value); } + public static function patchNodeDelete(treeName: String, nodeName: String, outputDatas: Array>) { + var tree = LogicTree.nodeTrees[treeName]; + if (tree == null) return; + + var node = tree.nodes[nodeName]; + if (node == null) return; + + // Remove this node from the outputs of connected nodes + for (input in node.inputs) { + var inNodeOutputs = input.node.outputs; + + // Default nodes don't have outputs when exported from Blender + if (input.from < inNodeOutputs.length) { + for (outNode in inNodeOutputs[input.from]) { + if (outNode == node) { + inNodeOutputs[input.from].remove(outNode); + } + } + } + + } + + // Replace connected inputs of other nodes with default nodes + for (outputNodes in node.outputs) { + for (outNode in outputNodes) { + for (outNodeInput in outNode.inputs) { + if (outNodeInput.node == node) { + var outputIndex = outNodeInput.from; + var socketType = outputDatas[outputIndex][0]; + var socketValue = outputDatas[outputIndex][1]; + outNodeInput.node = createSocketDefaultNode(node.tree, socketType, socketValue); + } + } + } + } + + tree.nodes.remove(nodeName); + } + public static function patchNodeCopy(treeName: String, nodeName: String, newNodeName: String, copyProps: Array, inputDatas: Array>, outputDatas: Array>) { var tree = LogicTree.nodeTrees[treeName]; if (tree == null) return; diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 0affd3f2..1130e5b5 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -215,6 +215,18 @@ def send_event(event_id: str, opt_data: Any = None): js = f'LivePatch.patchUpdateNodeInputVal("{tree_name}", "{node_name}", {socket_index}, {value});' write_patch(js) + elif event_id == 'ln_delete': + node: ArmLogicTreeNode = opt_data + + tree_name = arm.node_utils.get_export_tree_name(node.get_tree()) + node_name = arm.node_utils.get_export_node_name(node)[1:] + + out_data = [(out.arm_socket_type, out.get_default_value()) for out in node.outputs] + out_data = arm.node_utils.haxe_format_socket_val(out_data) + + js = f'LivePatch.patchNodeDelete("{tree_name}", "{node_name}", {out_data});' + write_patch(js) + elif event_id == 'ln_copy': newnode: ArmLogicTreeNode node: ArmLogicTreeNode diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index 6be13f4f..50db2c43 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -54,6 +54,10 @@ class ArmLogicTreeNode(bpy.types.Node): def get_tree(self): return self.id_data + def free(self): + """Called before the node is deleted.""" + arm.live_patch.send_event('ln_delete', self) + def copy(self, node): """Called if the node was copied. `self` holds the copied node, `node` the original one. From 3ed915b65418147141548a2a61b44d1caf10b909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 20 Jul 2021 14:28:42 +0200 Subject: [PATCH 19/45] Cleanup LivePatch.hx --- Sources/armory/trait/internal/LivePatch.hx | 34 ++++++++-------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 190a85ff..69c33452 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -133,28 +133,18 @@ class LivePatch extends iron.Trait { } } - static inline function createSocketDefaultNode(tree: LogicTree, inputType: String, value: Dynamic): LogicNode { - return switch (inputType) { - case "VECTOR": - new armory.logicnode.VectorNode(tree, value[0], value[1], value[2]); - case "RGBA": - new armory.logicnode.ColorNode(tree, value[0], value[1], value[2], value[3]); - case "RGB": - new armory.logicnode.ColorNode(tree, value[0], value[1], value[2]); - case "VALUE": - new armory.logicnode.FloatNode(tree, value); - case "INT": - new armory.logicnode.IntegerNode(tree, value); - case "BOOLEAN": - new armory.logicnode.BooleanNode(tree, value); - case "STRING": - new armory.logicnode.StringNode(tree, value); - case "NONE": - new armory.logicnode.NullNode(tree); - case "OBJECT": - new armory.logicnode.ObjectNode(tree, value); - default: - new armory.logicnode.DynamicNode(tree, value); + static inline function createSocketDefaultNode(tree: LogicTree, socketType: String, value: Dynamic): LogicNode { + return switch (socketType) { + case "VECTOR": new armory.logicnode.VectorNode(tree, value[0], value[1], value[2]); + case "RGBA": new armory.logicnode.ColorNode(tree, value[0], value[1], value[2], value[3]); + case "RGB": new armory.logicnode.ColorNode(tree, value[0], value[1], value[2]); + case "VALUE": new armory.logicnode.FloatNode(tree, value); + case "INT": new armory.logicnode.IntegerNode(tree, value); + case "BOOLEAN": new armory.logicnode.BooleanNode(tree, value); + case "STRING": new armory.logicnode.StringNode(tree, value); + case "NONE": new armory.logicnode.NullNode(tree); + case "OBJECT": new armory.logicnode.ObjectNode(tree, value); + default: new armory.logicnode.DynamicNode(tree, value); } } #end From 1edc7a9469617e1844fceaaace22a0446b080afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 20 Jul 2021 20:53:22 +0200 Subject: [PATCH 20/45] Live patch: support for adding nodes --- Sources/armory/logicnode/LogicNode.hx | 1 + Sources/armory/trait/internal/LivePatch.hx | 28 ++++++++++++++++++- blender/arm/live_patch.py | 21 +++++++++++++- blender/arm/logicnode/animation/LN_action.py | 3 +- .../logicnode/animation/LN_blend_action.py | 3 +- blender/arm/logicnode/animation/LN_bone_fk.py | 3 +- blender/arm/logicnode/animation/LN_bone_ik.py | 3 +- .../animation/LN_get_action_state.py | 3 +- .../animation/LN_get_tilesheet_state.py | 3 +- .../animation/LN_on_action_marker.py | 3 +- .../animation/LN_play_action_from.py | 5 ++-- .../logicnode/animation/LN_play_tilesheet.py | 3 +- .../animation/LN_set_action_paused.py | 3 +- .../animation/LN_set_action_speed.py | 3 +- .../logicnode/animation/LN_set_parent_bone.py | 3 +- .../animation/LN_set_particle_speed.py | 3 +- .../animation/LN_set_tilesheet_paused.py | 3 +- blender/arm/logicnode/arm_nodes.py | 8 ++++++ blender/arm/logicnode/array/LN_array.py | 3 +- blender/arm/logicnode/array/LN_array_add.py | 3 +- .../arm/logicnode/array/LN_array_boolean.py | 3 +- blender/arm/logicnode/array/LN_array_color.py | 3 +- .../arm/logicnode/array/LN_array_contains.py | 3 +- blender/arm/logicnode/array/LN_array_float.py | 3 +- blender/arm/logicnode/array/LN_array_get.py | 3 +- .../arm/logicnode/array/LN_array_integer.py | 3 +- .../arm/logicnode/array/LN_array_length.py | 3 +- .../arm/logicnode/array/LN_array_loop_node.py | 3 +- .../arm/logicnode/array/LN_array_object.py | 3 +- blender/arm/logicnode/array/LN_array_pop.py | 3 +- .../array/LN_array_remove_by_index.py | 3 +- .../array/LN_array_remove_by_value.py | 3 +- blender/arm/logicnode/array/LN_array_set.py | 3 +- blender/arm/logicnode/array/LN_array_shift.py | 3 +- blender/arm/logicnode/array/LN_array_slice.py | 3 +- .../arm/logicnode/array/LN_array_splice.py | 3 +- .../arm/logicnode/array/LN_array_string.py | 3 +- .../arm/logicnode/array/LN_array_vector.py | 3 +- .../logicnode/camera/LN_get_camera_active.py | 3 +- .../arm/logicnode/camera/LN_get_camera_fov.py | 3 +- .../logicnode/camera/LN_set_camera_active.py | 3 +- .../arm/logicnode/camera/LN_set_camera_fov.py | 3 +- .../canvas/LN_get_canvas_checkbox.py | 3 +- .../canvas/LN_get_canvas_input_text.py | 3 +- .../canvas/LN_get_canvas_location.py | 3 +- .../canvas/LN_get_canvas_position.py | 3 +- .../canvas/LN_get_canvas_progress_bar.py | 3 +- .../canvas/LN_get_canvas_rotation.py | 3 +- .../logicnode/canvas/LN_get_canvas_scale.py | 3 +- .../logicnode/canvas/LN_get_canvas_slider.py | 3 +- .../logicnode/canvas/LN_get_canvas_visible.py | 3 +- .../logicnode/canvas/LN_on_canvas_element.py | 3 +- .../logicnode/canvas/LN_set_canvas_asset.py | 3 +- .../canvas/LN_set_canvas_checkbox.py | 3 +- .../canvas/LN_set_canvas_location.py | 3 +- .../canvas/LN_set_canvas_progress_bar.py | 3 +- .../canvas/LN_set_canvas_rotation.py | 3 +- .../logicnode/canvas/LN_set_canvas_scale.py | 3 +- .../logicnode/canvas/LN_set_canvas_slider.py | 3 +- .../logicnode/canvas/LN_set_canvas_text.py | 3 +- .../canvas/LN_set_canvas_text_color.py | 3 +- .../logicnode/canvas/LN_set_canvas_visible.py | 3 +- .../logicnode/deprecated/LN_get_mouse_lock.py | 3 +- .../deprecated/LN_get_mouse_visible.py | 3 +- .../logicnode/deprecated/LN_mouse_coords.py | 3 +- .../arm/logicnode/deprecated/LN_on_gamepad.py | 3 +- .../logicnode/deprecated/LN_on_keyboard.py | 3 +- .../arm/logicnode/deprecated/LN_on_mouse.py | 3 +- .../arm/logicnode/deprecated/LN_on_surface.py | 3 +- .../deprecated/LN_on_virtual_button.py | 3 +- .../logicnode/deprecated/LN_pause_action.py | 3 +- .../deprecated/LN_pause_tilesheet.py | 3 +- .../logicnode/deprecated/LN_pause_trait.py | 3 +- .../logicnode/deprecated/LN_play_action.py | 3 +- .../logicnode/deprecated/LN_resume_action.py | 3 +- .../deprecated/LN_resume_tilesheet.py | 3 +- .../logicnode/deprecated/LN_resume_trait.py | 3 +- .../LN_rotate_object_around_axis.py | 3 +- .../logicnode/deprecated/LN_scale_object.py | 3 +- .../logicnode/deprecated/LN_set_mouse_lock.py | 3 +- .../deprecated/LN_set_mouse_visible.py | 3 +- .../deprecated/LN_set_object_material.py | 3 +- .../logicnode/deprecated/LN_surface_coords.py | 3 +- .../event/LN_on_application_state.py | 3 +- blender/arm/logicnode/event/LN_on_event.py | 3 +- blender/arm/logicnode/event/LN_on_init.py | 3 +- blender/arm/logicnode/event/LN_on_timer.py | 3 +- blender/arm/logicnode/event/LN_on_update.py | 3 +- .../event/LN_send_event_to_object.py | 3 +- .../logicnode/event/LN_send_global_event.py | 3 +- blender/arm/logicnode/input/LN_gamepad.py | 3 +- .../arm/logicnode/input/LN_gamepad_coords.py | 3 +- .../logicnode/input/LN_get_cursor_location.py | 3 +- .../logicnode/input/LN_get_cursor_state.py | 3 +- .../logicnode/input/LN_get_mouse_movement.py | 3 +- .../logicnode/input/LN_get_touch_location.py | 3 +- .../logicnode/input/LN_get_touch_movement.py | 3 +- blender/arm/logicnode/input/LN_keyboard.py | 3 +- blender/arm/logicnode/input/LN_mouse.py | 3 +- blender/arm/logicnode/input/LN_on_swipe.py | 3 +- .../arm/logicnode/input/LN_on_tap_screen.py | 3 +- .../arm/logicnode/input/LN_sensor_coords.py | 3 +- .../logicnode/input/LN_set_cursor_state.py | 3 +- blender/arm/logicnode/input/LN_touch.py | 3 +- .../arm/logicnode/input/LN_virtual_button.py | 3 +- .../arm/logicnode/light/LN_set_light_color.py | 3 +- .../logicnode/light/LN_set_light_strength.py | 3 +- .../logicnode/logic/LN_alternate_output.py | 3 +- blender/arm/logicnode/logic/LN_branch.py | 3 +- .../arm/logicnode/logic/LN_call_function.py | 3 +- blender/arm/logicnode/logic/LN_function.py | 3 +- .../arm/logicnode/logic/LN_function_output.py | 3 +- blender/arm/logicnode/logic/LN_gate.py | 3 +- .../arm/logicnode/logic/LN_invert_boolean.py | 3 +- .../arm/logicnode/logic/LN_invert_output.py | 3 +- blender/arm/logicnode/logic/LN_is_false.py | 3 +- blender/arm/logicnode/logic/LN_is_not_null.py | 3 +- blender/arm/logicnode/logic/LN_is_null.py | 3 +- blender/arm/logicnode/logic/LN_is_true.py | 3 +- blender/arm/logicnode/logic/LN_loop.py | 3 +- blender/arm/logicnode/logic/LN_loop_break.py | 3 +- blender/arm/logicnode/logic/LN_merge.py | 3 +- blender/arm/logicnode/logic/LN_null.py | 3 +- .../arm/logicnode/logic/LN_output_sequence.py | 3 +- .../logicnode/logic/LN_output_to_boolean.py | 3 +- .../arm/logicnode/logic/LN_switch_output.py | 3 +- .../arm/logicnode/logic/LN_value_changed.py | 3 +- blender/arm/logicnode/logic/LN_while_true.py | 3 +- .../material/LN_get_object_material.py | 3 +- blender/arm/logicnode/material/LN_material.py | 3 +- .../material/LN_set_material_image_param.py | 3 +- .../material/LN_set_material_rgb_param.py | 3 +- .../material/LN_set_material_value_param.py | 3 +- .../material/LN_set_object_material_slot.py | 3 +- blender/arm/logicnode/math/LN_clamp.py | 3 +- blender/arm/logicnode/math/LN_compare.py | 3 +- blender/arm/logicnode/math/LN_deg_to_rad.py | 3 +- blender/arm/logicnode/math/LN_map_range.py | 3 +- blender/arm/logicnode/math/LN_math.py | 3 +- .../arm/logicnode/math/LN_math_expression.py | 3 +- blender/arm/logicnode/math/LN_matrix_math.py | 3 +- blender/arm/logicnode/math/LN_mix.py | 3 +- blender/arm/logicnode/math/LN_mix_vector.py | 3 +- .../arm/logicnode/math/LN_quaternion_math.py | 3 +- blender/arm/logicnode/math/LN_rad_to_deg.py | 3 +- .../math/LN_screen_to_world_space.py | 3 +- .../logicnode/math/LN_separate_quaternion.py | 3 +- blender/arm/logicnode/math/LN_separate_rgb.py | 3 +- blender/arm/logicnode/math/LN_separate_xyz.py | 3 +- blender/arm/logicnode/math/LN_vector_clamp.py | 3 +- blender/arm/logicnode/math/LN_vector_math.py | 3 +- .../math/LN_world_to_screen_space.py | 3 +- .../miscellaneous/LN_boolean_to_vector.py | 3 +- .../logicnode/miscellaneous/LN_call_group.py | 3 +- .../miscellaneous/LN_default_if_null.py | 3 +- .../miscellaneous/LN_get_application_time.py | 3 +- .../LN_get_debug_console_settings.py | 3 +- .../LN_get_display_resolution.py | 3 +- .../arm/logicnode/miscellaneous/LN_get_fps.py | 3 +- .../miscellaneous/LN_get_window_resolution.py | 3 +- .../logicnode/miscellaneous/LN_group_nodes.py | 3 +- .../LN_set_debug_console_settings.py | 3 +- .../miscellaneous/LN_set_time_scale.py | 3 +- .../arm/logicnode/miscellaneous/LN_sleep.py | 3 +- .../arm/logicnode/miscellaneous/LN_timer.py | 3 +- .../logicnode/native/LN_call_haxe_static.py | 3 +- .../native/LN_detect_mobile_browser.py | 3 +- blender/arm/logicnode/native/LN_expression.py | 3 +- .../logicnode/native/LN_get_haxe_property.py | 3 +- .../native/LN_get_system_language.py | 3 +- .../logicnode/native/LN_get_system_name.py | 3 +- blender/arm/logicnode/native/LN_loadUrl.py | 3 +- blender/arm/logicnode/native/LN_print.py | 3 +- blender/arm/logicnode/native/LN_read_file.py | 3 +- blender/arm/logicnode/native/LN_read_json.py | 3 +- .../arm/logicnode/native/LN_read_storage.py | 3 +- blender/arm/logicnode/native/LN_script.py | 3 +- .../logicnode/native/LN_set_haxe_property.py | 3 +- .../arm/logicnode/native/LN_set_vibrate.py | 3 +- blender/arm/logicnode/native/LN_shutdown.py | 3 +- blender/arm/logicnode/native/LN_write_file.py | 3 +- blender/arm/logicnode/native/LN_write_json.py | 3 +- .../arm/logicnode/native/LN_write_storage.py | 3 +- .../logicnode/navmesh/LN_go_to_location.py | 3 +- .../navmesh/LN_navigable_location.py | 3 +- .../navmesh/LN_pick_navmesh_location.py | 3 +- .../arm/logicnode/navmesh/LN_stop_agent.py | 3 +- .../arm/logicnode/object/LN_get_distance.py | 3 +- .../logicnode/object/LN_get_object_by_name.py | 5 ++-- .../logicnode/object/LN_get_object_child.py | 3 +- .../object/LN_get_object_children.py | 3 +- .../logicnode/object/LN_get_object_mesh.py | 3 +- .../logicnode/object/LN_get_object_name.py | 3 +- .../object/LN_get_object_offscreen.py | 3 +- .../logicnode/object/LN_get_object_parent.py | 3 +- .../object/LN_get_object_property.py | 3 +- .../logicnode/object/LN_get_object_visible.py | 3 +- blender/arm/logicnode/object/LN_mesh.py | 3 +- blender/arm/logicnode/object/LN_object.py | 3 +- .../arm/logicnode/object/LN_remove_object.py | 3 +- .../object/LN_remove_object_parent.py | 3 +- .../arm/logicnode/object/LN_self_object.py | 3 +- .../logicnode/object/LN_set_object_mesh.py | 3 +- .../logicnode/object/LN_set_object_name.py | 3 +- .../logicnode/object/LN_set_object_parent.py | 3 +- .../object/LN_set_object_property.py | 3 +- .../logicnode/object/LN_set_object_visible.py | 3 +- .../arm/logicnode/object/LN_spawn_object.py | 5 ++-- .../object/LN_spawn_object_by_name.py | 3 +- .../logicnode/physics/LN_Add_rigid_body.py | 3 +- .../physics/LN_add_physics_constraint.py | 3 +- .../arm/logicnode/physics/LN_apply_force.py | 3 +- .../physics/LN_apply_force_at_location.py | 3 +- .../arm/logicnode/physics/LN_apply_impulse.py | 3 +- .../physics/LN_apply_impulse_at_location.py | 3 +- .../arm/logicnode/physics/LN_apply_torque.py | 3 +- .../physics/LN_apply_torque_impulse.py | 3 +- .../logicnode/physics/LN_get_rb_contacts.py | 3 +- .../physics/LN_get_rb_first_contact.py | 3 +- .../logicnode/physics/LN_get_rb_velocity.py | 3 +- .../logicnode/physics/LN_get_world_gravity.py | 3 +- .../arm/logicnode/physics/LN_has_contact.py | 3 +- .../logicnode/physics/LN_has_contact_array.py | 3 +- .../arm/logicnode/physics/LN_on_contact.py | 3 +- .../logicnode/physics/LN_on_contact_array.py | 3 +- .../logicnode/physics/LN_on_volume_trigger.py | 3 +- .../physics/LN_physics_constraint.py | 3 +- blender/arm/logicnode/physics/LN_pick_rb.py | 11 ++++---- blender/arm/logicnode/physics/LN_ray_cast.py | 3 +- blender/arm/logicnode/physics/LN_remove_rb.py | 3 +- .../physics/LN_set_rb_activation_state.py | 3 +- .../logicnode/physics/LN_set_rb_friction.py | 3 +- .../physics/LN_set_rb_gravity_enabled.py | 3 +- .../logicnode/physics/LN_set_rb_velocity.py | 3 +- .../logicnode/physics/LN_set_world_gravity.py | 3 +- .../logicnode/physics/LN_volume_trigger.py | 3 +- .../LN_colorgrading_get_global_node.py | 3 +- .../LN_colorgrading_get_highlight_node.py | 3 +- .../LN_colorgrading_get_midtone_node.py | 3 +- .../LN_colorgrading_get_shadow_node.py | 3 +- .../LN_colorgrading_set_global_node.py | 3 +- .../LN_colorgrading_set_highlight_node.py | 3 +- .../LN_colorgrading_set_midtone_node.py | 3 +- .../LN_colorgrading_set_shadow_node.py | 3 +- .../postprocess/LN_get_bloom_settings.py | 3 +- .../postprocess/LN_get_ca_settings.py | 3 +- .../postprocess/LN_get_camera_post_process.py | 3 +- .../LN_get_lenstexture_settings.py | 3 +- .../postprocess/LN_get_ssao_settings.py | 3 +- .../postprocess/LN_get_ssr_settings.py | 3 +- .../postprocess/LN_lenstexture_set.py | 3 +- .../postprocess/LN_set_bloom_settings.py | 3 +- .../postprocess/LN_set_ca_settings.py | 3 +- .../postprocess/LN_set_camera_post_process.py | 3 +- .../postprocess/LN_set_ssao_settings.py | 3 +- .../postprocess/LN_set_ssr_settings.py | 3 +- .../arm/logicnode/random/LN_random_boolean.py | 3 +- .../arm/logicnode/random/LN_random_choice.py | 3 +- .../arm/logicnode/random/LN_random_color.py | 3 +- .../arm/logicnode/random/LN_random_float.py | 3 +- .../arm/logicnode/random/LN_random_integer.py | 3 +- .../arm/logicnode/random/LN_random_output.py | 3 +- .../arm/logicnode/random/LN_random_vector.py | 3 +- .../renderpath/LN_set_msaa_quality.py | 3 +- .../renderpath/LN_set_post_process_quality.py | 3 +- .../renderpath/LN_set_shader_uniform.py | 3 +- .../renderpath/LN_set_shadows_quality.py | 3 +- .../renderpath/LN_set_ssaa_quality.py | 3 +- blender/arm/logicnode/scene/LN_collection.py | 3 +- .../logicnode/scene/LN_create_collection.py | 3 +- .../arm/logicnode/scene/LN_get_collection.py | 3 +- .../logicnode/scene/LN_get_scene_active.py | 3 +- .../arm/logicnode/scene/LN_get_scene_root.py | 3 +- .../arm/logicnode/scene/LN_global_object.py | 3 +- .../logicnode/scene/LN_remove_collection.py | 3 +- .../logicnode/scene/LN_remove_scene_active.py | 3 +- blender/arm/logicnode/scene/LN_scene.py | 3 +- .../logicnode/scene/LN_set_scene_active.py | 3 +- .../logicnode/scene/LN_spawn_collection.py | 3 +- blender/arm/logicnode/scene/LN_spawn_scene.py | 3 +- .../arm/logicnode/sound/LN_pause_speaker.py | 3 +- blender/arm/logicnode/sound/LN_play_sound.py | 3 +- .../arm/logicnode/sound/LN_play_speaker.py | 3 +- .../arm/logicnode/sound/LN_stop_speaker.py | 3 +- .../logicnode/string/LN_concatenate_string.py | 3 +- .../arm/logicnode/string/LN_parse_float.py | 3 +- .../arm/logicnode/string/LN_split_string.py | 3 +- blender/arm/logicnode/string/LN_string.py | 3 +- .../arm/logicnode/string/LN_string_case.py | 3 +- .../logicnode/string/LN_string_contains.py | 3 +- .../arm/logicnode/string/LN_string_length.py | 3 +- blender/arm/logicnode/string/LN_sub_string.py | 3 +- .../logicnode/trait/LN_add_trait_to_object.py | 3 +- .../logicnode/trait/LN_get_object_trait.py | 3 +- .../logicnode/trait/LN_get_object_traits.py | 3 +- .../arm/logicnode/trait/LN_get_trait_name.py | 3 +- .../logicnode/trait/LN_get_trait_paused.py | 3 +- .../arm/logicnode/trait/LN_remove_trait.py | 3 +- blender/arm/logicnode/trait/LN_self_trait.py | 3 +- .../logicnode/trait/LN_set_trait_paused.py | 3 +- blender/arm/logicnode/trait/LN_trait.py | 3 +- .../transform/LN_append_transform.py | 3 +- .../transform/LN_get_object_location.py | 3 +- .../transform/LN_get_object_rotation.py | 3 +- .../transform/LN_get_object_scale.py | 3 +- .../transform/LN_get_object_transform.py | 3 +- .../transform/LN_get_world_orientation.py | 3 +- blender/arm/logicnode/transform/LN_look_at.py | 3 +- .../logicnode/transform/LN_rotate_object.py | 3 +- .../transform/LN_separate_transform.py | 3 +- .../transform/LN_set_object_location.py | 3 +- .../transform/LN_set_object_rotation.py | 3 +- .../transform/LN_set_object_scale.py | 3 +- .../transform/LN_set_object_transform.py | 3 +- .../arm/logicnode/transform/LN_transform.py | 3 +- .../logicnode/transform/LN_transform_math.py | 3 +- .../transform/LN_transform_to_vector.py | 3 +- .../transform/LN_translate_object.py | 3 +- .../transform/LN_translate_on_local_axis.py | 3 +- .../LN_vector_to_object_orientation.py | 5 ++-- .../LN_world_vector_to_local_space.py | 5 ++-- blender/arm/logicnode/variable/LN_boolean.py | 3 +- blender/arm/logicnode/variable/LN_color.py | 3 +- blender/arm/logicnode/variable/LN_dynamic.py | 3 +- blender/arm/logicnode/variable/LN_float.py | 3 +- blender/arm/logicnode/variable/LN_integer.py | 3 +- blender/arm/logicnode/variable/LN_mask.py | 3 +- .../arm/logicnode/variable/LN_quaternion.py | 3 +- .../arm/logicnode/variable/LN_set_variable.py | 3 +- blender/arm/logicnode/variable/LN_vector.py | 3 +- blender/arm/make_logic.py | 3 +- blender/arm/node_utils.py | 2 +- blender/arm/write_data.py | 3 ++ 333 files changed, 396 insertions(+), 666 deletions(-) diff --git a/Sources/armory/logicnode/LogicNode.hx b/Sources/armory/logicnode/LogicNode.hx index 9255a559..38dac54b 100644 --- a/Sources/armory/logicnode/LogicNode.hx +++ b/Sources/armory/logicnode/LogicNode.hx @@ -1,5 +1,6 @@ package armory.logicnode; +#if arm_patch @:keep @:keepSub #end class LogicNode { var tree: LogicTree; diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 69c33452..550acb5b 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -6,6 +6,7 @@ import armory.logicnode.LogicTree; #if arm_patch @:expose("LivePatch") #end @:access(armory.logicnode.LogicNode) +@:access(armory.logicnode.LogicNodeInput) class LivePatch extends iron.Trait { #if !arm_patch @@ -105,6 +106,31 @@ class LivePatch extends iron.Trait { tree.nodes.remove(nodeName); } + public static function patchNodeCreate(treeName: String, nodeName: String, nodeType: String, propDatas: Array>, inputDatas: Array>, outputDatas: Array>) { + var tree = LogicTree.nodeTrees[treeName]; + if (tree == null) return; + + // No further constructor parameters required here, all variable nodes + // use optional further parameters and all values are set later in this + // function. + var newNode: LogicNode = Type.createInstance(Type.resolveClass(nodeType), [tree]); + newNode.name = nodeName; + tree.nodes[nodeName] = newNode; + + for (propData in propDatas) { + Reflect.setField(newNode, propData[0], propData[1]); + } + + var i = 0; + for (inputData in inputDatas) { + newNode.addInput(createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), i++); + } + + for (outputData in outputDatas) { + newNode.addOutputs([createSocketDefaultNode(newNode.tree, outputData[0], outputData[1])]); + } + } + public static function patchNodeCopy(treeName: String, nodeName: String, newNodeName: String, copyProps: Array, inputDatas: Array>, outputDatas: Array>) { var tree = LogicTree.nodeTrees[treeName]; if (tree == null) return; @@ -115,7 +141,7 @@ class LivePatch extends iron.Trait { // No further constructor parameters required here, all variable nodes // use optional further parameters and all values are set later in this // function. - var newNode = Type.createInstance(Type.getClass(node), [tree]); + var newNode: LogicNode = Type.createInstance(Type.getClass(node), [tree]); newNode.name = newNodeName; tree.nodes[newNodeName] = newNode; diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 1130e5b5..7bc8073d 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -186,7 +186,7 @@ def send_event(event_id: str, opt_data: Any = None): 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_prop(node, prop_name) + value = arm.node_utils.haxe_format_prop_value(node, prop_name) js = f'LivePatch.patchUpdateNodeProp("{tree_name}", "{node_name}", "{prop_name}", {value});' write_patch(js) @@ -215,6 +215,25 @@ def send_event(event_id: str, opt_data: Any = None): js = f'LivePatch.patchUpdateNodeInputVal("{tree_name}", "{node_name}", {socket_index}, {value});' write_patch(js) + elif event_id == 'ln_create': + node: ArmLogicTreeNode = opt_data + + tree_name = arm.node_utils.get_export_tree_name(node.get_tree()) + node_name = arm.node_utils.get_export_node_name(node)[1:] + node_type = 'armory.logicnode.' + node.bl_idname[2:] + + prop_names = (p for p in arm.node_utils.get_haxe_property_names(node)) + prop_values = (getattr(node, prop_name) for prop_name in prop_names) + prop_datas = arm.node_utils.haxe_format_socket_val(list(zip(prop_names, prop_values))) + + inp_data = [(inp.arm_socket_type, inp.get_default_value()) for inp in node.inputs] + inp_data = arm.node_utils.haxe_format_socket_val(inp_data) + out_data = [(out.arm_socket_type, out.get_default_value()) for out in node.outputs] + out_data = arm.node_utils.haxe_format_socket_val(out_data) + + js = f'LivePatch.patchNodeCreate("{tree_name}", "{node_name}", "{node_type}", {prop_datas}, {inp_data}, {out_data});' + write_patch(js) + elif event_id == 'ln_delete': node: ArmLogicTreeNode = opt_data diff --git a/blender/arm/logicnode/animation/LN_action.py b/blender/arm/logicnode/animation/LN_action.py index d156819b..e7913910 100644 --- a/blender/arm/logicnode/animation/LN_action.py +++ b/blender/arm/logicnode/animation/LN_action.py @@ -6,8 +6,7 @@ class AnimActionNode(ArmLogicTreeNode): bl_label = 'Action' arm_version = 1 - def init(self, context): - super(AnimActionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAnimAction', 'Action') self.add_output('ArmNodeSocketAnimAction', 'Action', is_var=True) diff --git a/blender/arm/logicnode/animation/LN_blend_action.py b/blender/arm/logicnode/animation/LN_blend_action.py index 0d98d693..0214e28d 100644 --- a/blender/arm/logicnode/animation/LN_blend_action.py +++ b/blender/arm/logicnode/animation/LN_blend_action.py @@ -6,8 +6,7 @@ class BlendActionNode(ArmLogicTreeNode): bl_label = 'Blend Action' arm_version = 1 - def init(self, context): - super(BlendActionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketAnimAction', 'Action 1') diff --git a/blender/arm/logicnode/animation/LN_bone_fk.py b/blender/arm/logicnode/animation/LN_bone_fk.py index 58f59910..d994584d 100644 --- a/blender/arm/logicnode/animation/LN_bone_fk.py +++ b/blender/arm/logicnode/animation/LN_bone_fk.py @@ -7,8 +7,7 @@ class BoneFKNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'armature' - def init(self, context): - super(BoneFKNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Bone') diff --git a/blender/arm/logicnode/animation/LN_bone_ik.py b/blender/arm/logicnode/animation/LN_bone_ik.py index 00577537..e677b9d8 100644 --- a/blender/arm/logicnode/animation/LN_bone_ik.py +++ b/blender/arm/logicnode/animation/LN_bone_ik.py @@ -7,8 +7,7 @@ class BoneIKNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'armature' - def init(self, context): - super(BoneIKNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Bone') diff --git a/blender/arm/logicnode/animation/LN_get_action_state.py b/blender/arm/logicnode/animation/LN_get_action_state.py index 51e2d130..1b506613 100644 --- a/blender/arm/logicnode/animation/LN_get_action_state.py +++ b/blender/arm/logicnode/animation/LN_get_action_state.py @@ -6,8 +6,7 @@ class AnimationStateNode(ArmLogicTreeNode): bl_label = 'Get Action State' arm_version = 1 - def init(self, context): - super(AnimationStateNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmStringSocket', 'Action') diff --git a/blender/arm/logicnode/animation/LN_get_tilesheet_state.py b/blender/arm/logicnode/animation/LN_get_tilesheet_state.py index dadf0888..09adee81 100644 --- a/blender/arm/logicnode/animation/LN_get_tilesheet_state.py +++ b/blender/arm/logicnode/animation/LN_get_tilesheet_state.py @@ -7,8 +7,7 @@ class GetTilesheetStateNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'tilesheet' - def init(self, context): - super(GetTilesheetStateNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmStringSocket', 'Name') diff --git a/blender/arm/logicnode/animation/LN_on_action_marker.py b/blender/arm/logicnode/animation/LN_on_action_marker.py index c26abc19..07c4e690 100644 --- a/blender/arm/logicnode/animation/LN_on_action_marker.py +++ b/blender/arm/logicnode/animation/LN_on_action_marker.py @@ -6,8 +6,7 @@ class OnActionMarkerNode(ArmLogicTreeNode): bl_label = 'On Action Marker' arm_version = 1 - def init(self, context): - super(OnActionMarkerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Marker') diff --git a/blender/arm/logicnode/animation/LN_play_action_from.py b/blender/arm/logicnode/animation/LN_play_action_from.py index 732a7c40..31a218ea 100644 --- a/blender/arm/logicnode/animation/LN_play_action_from.py +++ b/blender/arm/logicnode/animation/LN_play_action_from.py @@ -6,8 +6,7 @@ class PlayActionFromNode(ArmLogicTreeNode): bl_label = 'Play Action From' arm_version = 2 - def init(self, context): - super(PlayActionFromNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketAnimAction', 'Action') @@ -22,7 +21,7 @@ class PlayActionFromNode(ArmLogicTreeNode): def get_replacement_node(self, node_tree: bpy.types.NodeTree): if self.arm_version not in (0, 1): raise LookupError() - + return NodeReplacement( 'LNPlayActionFromNode', self.arm_version, 'LNPlayActionFromNode', 2, in_socket_mapping={0:0, 1:1, 2:2, 3:3, 4:4}, out_socket_mapping={0:0, 1:1} diff --git a/blender/arm/logicnode/animation/LN_play_tilesheet.py b/blender/arm/logicnode/animation/LN_play_tilesheet.py index 4af5d10a..6e008f9e 100644 --- a/blender/arm/logicnode/animation/LN_play_tilesheet.py +++ b/blender/arm/logicnode/animation/LN_play_tilesheet.py @@ -7,8 +7,7 @@ class PlayTilesheetNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'tilesheet' - def init(self, context): - super(PlayTilesheetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Name') diff --git a/blender/arm/logicnode/animation/LN_set_action_paused.py b/blender/arm/logicnode/animation/LN_set_action_paused.py index 8df9b9ce..6c994959 100644 --- a/blender/arm/logicnode/animation/LN_set_action_paused.py +++ b/blender/arm/logicnode/animation/LN_set_action_paused.py @@ -6,8 +6,7 @@ class SetActionPausedNode(ArmLogicTreeNode): bl_label = 'Set Action Paused' arm_version = 1 - def init(self, context): - super(SetActionPausedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmBoolSocket', 'Paused') diff --git a/blender/arm/logicnode/animation/LN_set_action_speed.py b/blender/arm/logicnode/animation/LN_set_action_speed.py index 9a011883..e90cec67 100644 --- a/blender/arm/logicnode/animation/LN_set_action_speed.py +++ b/blender/arm/logicnode/animation/LN_set_action_speed.py @@ -6,8 +6,7 @@ class SetActionSpeedNode(ArmLogicTreeNode): bl_label = 'Set Action Speed' arm_version = 1 - def init(self, context): - super(SetActionSpeedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmFloatSocket', 'Speed', default_value=1.0) diff --git a/blender/arm/logicnode/animation/LN_set_parent_bone.py b/blender/arm/logicnode/animation/LN_set_parent_bone.py index dc40384b..5aa686e3 100644 --- a/blender/arm/logicnode/animation/LN_set_parent_bone.py +++ b/blender/arm/logicnode/animation/LN_set_parent_bone.py @@ -7,8 +7,7 @@ class SetParentBoneNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'armature' - def init(self, context): - super(SetParentBoneNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketObject', 'Parent', default_value='Parent') diff --git a/blender/arm/logicnode/animation/LN_set_particle_speed.py b/blender/arm/logicnode/animation/LN_set_particle_speed.py index d4e614bd..2fe92ee4 100644 --- a/blender/arm/logicnode/animation/LN_set_particle_speed.py +++ b/blender/arm/logicnode/animation/LN_set_particle_speed.py @@ -6,8 +6,7 @@ class SetParticleSpeedNode(ArmLogicTreeNode): bl_label = 'Set Particle Speed' arm_version = 1 - def init(self, context): - super(SetParticleSpeedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmFloatSocket', 'Speed', default_value=1.0) diff --git a/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py b/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py index ef7f954a..393a259f 100644 --- a/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py +++ b/blender/arm/logicnode/animation/LN_set_tilesheet_paused.py @@ -7,8 +7,7 @@ class SetTilesheetPausedNode(ArmLogicTreeNode): arm_section = 'tilesheet' arm_version = 1 - def init(self, context): - super(SetTilesheetPausedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmBoolSocket', 'Paused') diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index 50db2c43..d7548c5c 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -37,6 +37,14 @@ class ArmLogicTreeNode(bpy.types.Node): else: self.arm_version = 1 + if not hasattr(self, 'arm_init'): + # Show warning for older node packages + arm.log.warn(f'Node {self.bl_idname} has no arm_init function and might not work correctly!') + else: + self.arm_init(context) + + arm.live_patch.send_event('ln_create', self) + @classmethod def poll(cls, ntree): return ntree.bl_idname == 'ArmLogicTreeType' diff --git a/blender/arm/logicnode/array/LN_array.py b/blender/arm/logicnode/array/LN_array.py index 39326e79..65473756 100644 --- a/blender/arm/logicnode/array/LN_array.py +++ b/blender/arm/logicnode/array/LN_array.py @@ -10,8 +10,7 @@ class ArrayNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super(ArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array', is_var=True) self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_add.py b/blender/arm/logicnode/array/LN_array_add.py index acbc5959..0fc31a6d 100644 --- a/blender/arm/logicnode/array/LN_array_add.py +++ b/blender/arm/logicnode/array/LN_array_add.py @@ -15,8 +15,7 @@ class ArrayAddNode(ArmLogicTreeNode): super(ArrayAddNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(ArrayAddNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmBoolSocket', 'Modify Original', default_value=True) diff --git a/blender/arm/logicnode/array/LN_array_boolean.py b/blender/arm/logicnode/array/LN_array_boolean.py index ae355b09..7c0b333d 100644 --- a/blender/arm/logicnode/array/LN_array_boolean.py +++ b/blender/arm/logicnode/array/LN_array_boolean.py @@ -11,8 +11,7 @@ class BooleanArrayNode(ArmLogicTreeNode): super(BooleanArrayNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(BooleanArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array', is_var=True) self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_color.py b/blender/arm/logicnode/array/LN_array_color.py index f569245a..148fd2da 100644 --- a/blender/arm/logicnode/array/LN_array_color.py +++ b/blender/arm/logicnode/array/LN_array_color.py @@ -11,8 +11,7 @@ class ColorArrayNode(ArmLogicTreeNode): super(ColorArrayNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(ColorArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array', is_var=True) self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_contains.py b/blender/arm/logicnode/array/LN_array_contains.py index b0a2bc53..c81ec46a 100644 --- a/blender/arm/logicnode/array/LN_array_contains.py +++ b/blender/arm/logicnode/array/LN_array_contains.py @@ -6,8 +6,7 @@ class ArrayContainsNode(ArmLogicTreeNode): bl_label = 'Array Contains' arm_version = 1 - def init(self, context): - super(ArrayContainsNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_float.py b/blender/arm/logicnode/array/LN_array_float.py index 22e2019b..2c3ec3d8 100644 --- a/blender/arm/logicnode/array/LN_array_float.py +++ b/blender/arm/logicnode/array/LN_array_float.py @@ -11,8 +11,7 @@ class FloatArrayNode(ArmLogicTreeNode): super(FloatArrayNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(FloatArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array', is_var=True) self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_get.py b/blender/arm/logicnode/array/LN_array_get.py index bda50633..598a60f5 100644 --- a/blender/arm/logicnode/array/LN_array_get.py +++ b/blender/arm/logicnode/array/LN_array_get.py @@ -6,8 +6,7 @@ class ArrayGetNode(ArmLogicTreeNode): bl_label = 'Array Get' arm_version = 1 - def init(self, context): - super(ArrayGetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmIntSocket', 'Index') diff --git a/blender/arm/logicnode/array/LN_array_integer.py b/blender/arm/logicnode/array/LN_array_integer.py index f4e0aab8..1b01e721 100644 --- a/blender/arm/logicnode/array/LN_array_integer.py +++ b/blender/arm/logicnode/array/LN_array_integer.py @@ -11,8 +11,7 @@ class IntegerArrayNode(ArmLogicTreeNode): super(IntegerArrayNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(IntegerArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array') self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_length.py b/blender/arm/logicnode/array/LN_array_length.py index c655ac86..3ef4e9f1 100644 --- a/blender/arm/logicnode/array/LN_array_length.py +++ b/blender/arm/logicnode/array/LN_array_length.py @@ -6,8 +6,7 @@ class ArrayLengthNode(ArmLogicTreeNode): bl_label = 'Array Length' arm_version = 1 - def init(self, context): - super(ArrayLengthNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketArray', 'Array') self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_loop_node.py b/blender/arm/logicnode/array/LN_array_loop_node.py index 18207c8e..aefd7331 100644 --- a/blender/arm/logicnode/array/LN_array_loop_node.py +++ b/blender/arm/logicnode/array/LN_array_loop_node.py @@ -7,8 +7,7 @@ class ArrayLoopNode(ArmLogicTreeNode): bl_label = 'Array Loop' arm_version = 1 - def init(self, context): - super(ArrayLoopNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') diff --git a/blender/arm/logicnode/array/LN_array_object.py b/blender/arm/logicnode/array/LN_array_object.py index 71c55d89..513e211c 100644 --- a/blender/arm/logicnode/array/LN_array_object.py +++ b/blender/arm/logicnode/array/LN_array_object.py @@ -11,8 +11,7 @@ class ObjectArrayNode(ArmLogicTreeNode): super(ObjectArrayNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(ObjectArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array', is_var=True) self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_pop.py b/blender/arm/logicnode/array/LN_array_pop.py index 9708b343..37b9ad5c 100644 --- a/blender/arm/logicnode/array/LN_array_pop.py +++ b/blender/arm/logicnode/array/LN_array_pop.py @@ -8,8 +8,7 @@ class ArrayPopNode(ArmLogicTreeNode): bl_label = 'Array Pop' arm_version = 1 - def init(self, context): - super(ArrayPopNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketArray', 'Array') self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_remove_by_index.py b/blender/arm/logicnode/array/LN_array_remove_by_index.py index a07c864c..efc69b43 100644 --- a/blender/arm/logicnode/array/LN_array_remove_by_index.py +++ b/blender/arm/logicnode/array/LN_array_remove_by_index.py @@ -8,8 +8,7 @@ class ArrayRemoveIndexNode(ArmLogicTreeNode): bl_label = 'Array Remove by Index' arm_version = 1 - def init(self, context): - super(ArrayRemoveIndexNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmIntSocket', 'Index') diff --git a/blender/arm/logicnode/array/LN_array_remove_by_value.py b/blender/arm/logicnode/array/LN_array_remove_by_value.py index 8ab646fd..5314b714 100644 --- a/blender/arm/logicnode/array/LN_array_remove_by_value.py +++ b/blender/arm/logicnode/array/LN_array_remove_by_value.py @@ -11,8 +11,7 @@ class ArrayRemoveValueNode(ArmLogicTreeNode): # def __init__(self): # array_nodes[str(id(self))] = self - def init(self, context): - super(ArrayRemoveValueNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_set.py b/blender/arm/logicnode/array/LN_array_set.py index c0fb2293..e1eac977 100644 --- a/blender/arm/logicnode/array/LN_array_set.py +++ b/blender/arm/logicnode/array/LN_array_set.py @@ -6,8 +6,7 @@ class ArraySetNode(ArmLogicTreeNode): bl_label = 'Array Set' arm_version = 1 - def init(self, context): - super(ArraySetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmIntSocket', 'Index') diff --git a/blender/arm/logicnode/array/LN_array_shift.py b/blender/arm/logicnode/array/LN_array_shift.py index d1d31b37..15ee7b78 100644 --- a/blender/arm/logicnode/array/LN_array_shift.py +++ b/blender/arm/logicnode/array/LN_array_shift.py @@ -8,8 +8,7 @@ class ArrayShiftNode(ArmLogicTreeNode): bl_label = 'Array Shift' arm_version = 1 - def init(self, context): - super(ArrayShiftNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketArray', 'Array') self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/array/LN_array_slice.py b/blender/arm/logicnode/array/LN_array_slice.py index 87da4910..be2b1bd4 100644 --- a/blender/arm/logicnode/array/LN_array_slice.py +++ b/blender/arm/logicnode/array/LN_array_slice.py @@ -8,8 +8,7 @@ class ArraySliceNode(ArmLogicTreeNode): bl_label = 'Array Slice' arm_version = 1 - def init(self, context): - super(ArraySliceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmIntSocket', 'Index') self.add_input('ArmIntSocket', 'End') diff --git a/blender/arm/logicnode/array/LN_array_splice.py b/blender/arm/logicnode/array/LN_array_splice.py index ea1c28f8..1f367cc5 100644 --- a/blender/arm/logicnode/array/LN_array_splice.py +++ b/blender/arm/logicnode/array/LN_array_splice.py @@ -8,8 +8,7 @@ class ArraySpliceNode(ArmLogicTreeNode): bl_label = 'Array Splice' arm_version = 1 - def init(self, context): - super(ArraySpliceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') self.add_input('ArmIntSocket', 'Index') diff --git a/blender/arm/logicnode/array/LN_array_string.py b/blender/arm/logicnode/array/LN_array_string.py index 2052a9db..0bf6ed27 100644 --- a/blender/arm/logicnode/array/LN_array_string.py +++ b/blender/arm/logicnode/array/LN_array_string.py @@ -11,8 +11,7 @@ class StringArrayNode(ArmLogicTreeNode): super(StringArrayNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(StringArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array', is_var=True) self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/array/LN_array_vector.py b/blender/arm/logicnode/array/LN_array_vector.py index 75b08e59..bf1715d7 100644 --- a/blender/arm/logicnode/array/LN_array_vector.py +++ b/blender/arm/logicnode/array/LN_array_vector.py @@ -11,8 +11,7 @@ class VectorArrayNode(ArmLogicTreeNode): super(VectorArrayNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(VectorArrayNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array', is_var=True) self.add_output('ArmIntSocket', 'Length') diff --git a/blender/arm/logicnode/camera/LN_get_camera_active.py b/blender/arm/logicnode/camera/LN_get_camera_active.py index 54c3fe7a..9956d45e 100644 --- a/blender/arm/logicnode/camera/LN_get_camera_active.py +++ b/blender/arm/logicnode/camera/LN_get_camera_active.py @@ -8,6 +8,5 @@ class ActiveCameraNode(ArmLogicTreeNode): bl_label = 'Get Camera Active' arm_version = 1 - def init(self, context): - super(ActiveCameraNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketObject', 'Camera') diff --git a/blender/arm/logicnode/camera/LN_get_camera_fov.py b/blender/arm/logicnode/camera/LN_get_camera_fov.py index f6dc4426..b5e70466 100644 --- a/blender/arm/logicnode/camera/LN_get_camera_fov.py +++ b/blender/arm/logicnode/camera/LN_get_camera_fov.py @@ -8,8 +8,7 @@ class GetCameraFovNode(ArmLogicTreeNode): bl_label = 'Get Camera FOV' arm_version = 1 - def init(self, context): - super(GetCameraFovNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmFloatSocket', 'FOV') diff --git a/blender/arm/logicnode/camera/LN_set_camera_active.py b/blender/arm/logicnode/camera/LN_set_camera_active.py index dd05a919..fa078d10 100644 --- a/blender/arm/logicnode/camera/LN_set_camera_active.py +++ b/blender/arm/logicnode/camera/LN_set_camera_active.py @@ -8,8 +8,7 @@ class SetCameraNode(ArmLogicTreeNode): bl_label = 'Set Camera Active' arm_version = 1 - def init(self, context): - super(SetCameraNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Camera') diff --git a/blender/arm/logicnode/camera/LN_set_camera_fov.py b/blender/arm/logicnode/camera/LN_set_camera_fov.py index 2a5103ea..1974c0d0 100644 --- a/blender/arm/logicnode/camera/LN_set_camera_fov.py +++ b/blender/arm/logicnode/camera/LN_set_camera_fov.py @@ -8,8 +8,7 @@ class SetCameraFovNode(ArmLogicTreeNode): bl_label = 'Set Camera FOV' arm_version = 1 - def init(self, context): - super(SetCameraFovNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Camera') self.add_input('ArmFloatSocket', 'FOV', default_value=0.9) diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py b/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py index a8860a36..de3cee1d 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_checkbox.py @@ -6,8 +6,7 @@ class CanvasGetCheckboxNode(ArmLogicTreeNode): bl_label = 'Get Canvas Checkbox' arm_version = 1 - def init(self, context): - super(CanvasGetCheckboxNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Element') self.add_output('ArmBoolSocket', 'Is Checked') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py b/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py index 69938c5c..e8d1a7d3 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_input_text.py @@ -6,8 +6,7 @@ class CanvasGetInputTextNode(ArmLogicTreeNode): bl_label = 'Get Canvas Input Text' arm_version = 1 - def init(self, context): - super(CanvasGetInputTextNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Element') self.add_output('ArmStringSocket', 'Text') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_location.py b/blender/arm/logicnode/canvas/LN_get_canvas_location.py index 21e38a1b..71e9491f 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_location.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_location.py @@ -6,8 +6,7 @@ class CanvasGetLocationNode(ArmLogicTreeNode): bl_label = 'Get Canvas Location' arm_version = 1 - def init(self, context): - super(CanvasGetLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_position.py b/blender/arm/logicnode/canvas/LN_get_canvas_position.py index 66ae4db6..47efa750 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_position.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_position.py @@ -6,8 +6,7 @@ class CanvasGetPositionNode(ArmLogicTreeNode): bl_label = 'Get Canvas Position' arm_version = 1 - def init(self, context): - super(CanvasGetPositionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Element') self.add_output('ArmIntSocket', 'Position') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py b/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py index 493a740d..5e9435ca 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_progress_bar.py @@ -6,8 +6,7 @@ class CanvasGetPBNode(ArmLogicTreeNode): bl_label = 'Get Canvas Progress Bar' arm_version = 1 - def init(self, context): - super(CanvasGetPBNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py b/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py index bde56b39..3b7ffa9e 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_rotation.py @@ -6,8 +6,7 @@ class CanvasGetRotationNode(ArmLogicTreeNode): bl_label = 'Get Canvas Rotation' arm_version = 1 - def init(self, context): - super(CanvasGetRotationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_scale.py b/blender/arm/logicnode/canvas/LN_get_canvas_scale.py index fad278f2..9e65ea39 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_scale.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_scale.py @@ -6,8 +6,7 @@ class CanvasGetScaleNode(ArmLogicTreeNode): bl_label = 'Get Canvas Scale' arm_version = 1 - def init(self, context): - super(CanvasGetScaleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_slider.py b/blender/arm/logicnode/canvas/LN_get_canvas_slider.py index d6d44535..c0d09cc4 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_slider.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_slider.py @@ -6,8 +6,7 @@ class CanvasGetSliderNode(ArmLogicTreeNode): bl_label = 'Get Canvas Slider' arm_version = 1 - def init(self, context): - super(CanvasGetSliderNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Element') self.add_output('ArmFloatSocket', 'Float') diff --git a/blender/arm/logicnode/canvas/LN_get_canvas_visible.py b/blender/arm/logicnode/canvas/LN_get_canvas_visible.py index f930146f..3fb4ae1b 100644 --- a/blender/arm/logicnode/canvas/LN_get_canvas_visible.py +++ b/blender/arm/logicnode/canvas/LN_get_canvas_visible.py @@ -9,8 +9,7 @@ class CanvasGetVisibleNode(ArmLogicTreeNode): bl_label = 'Get Canvas Visible' arm_version = 1 - def init(self, context): - super(CanvasGetVisibleNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmStringSocket', 'Element') self.outputs.new('ArmBoolSocket', 'Is Visible') diff --git a/blender/arm/logicnode/canvas/LN_on_canvas_element.py b/blender/arm/logicnode/canvas/LN_on_canvas_element.py index a72501a5..fe65ad0c 100644 --- a/blender/arm/logicnode/canvas/LN_on_canvas_element.py +++ b/blender/arm/logicnode/canvas/LN_on_canvas_element.py @@ -24,8 +24,7 @@ class OnCanvasElementNode(ArmLogicTreeNode): ('right', 'Right', 'Right mouse button')], name='Mouse Button', default='left') - def init(self, context): - super(OnCanvasElementNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Element') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_asset.py b/blender/arm/logicnode/canvas/LN_set_canvas_asset.py index 077ece2e..bf734e70 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_asset.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_asset.py @@ -6,8 +6,7 @@ class CanvasSetAssetNode(ArmLogicTreeNode): bl_label = 'Set Canvas Asset' arm_version = 1 - def init(self, context): - super(CanvasSetAssetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmStringSocket', 'Asset') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py b/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py index 293200a5..ad41a7ae 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_checkbox.py @@ -6,8 +6,7 @@ class CanvasSetCheckBoxNode(ArmLogicTreeNode): bl_label = 'Set Canvas Checkbox' arm_version = 1 - def init(self, context): - super(CanvasSetCheckBoxNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmBoolSocket', 'Check') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_location.py b/blender/arm/logicnode/canvas/LN_set_canvas_location.py index cfb43449..03402117 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_location.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_location.py @@ -6,8 +6,7 @@ class CanvasSetLocationNode(ArmLogicTreeNode): bl_label = 'Set Canvas Location' arm_version = 1 - def init(self, context): - super(CanvasSetLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmFloatSocket', 'X') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py b/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py index 38ae0530..b5d59085 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_progress_bar.py @@ -6,8 +6,7 @@ class CanvasSetPBNode(ArmLogicTreeNode): bl_label = 'Set Canvas Progress Bar' arm_version = 1 - def init(self, context): - super(CanvasSetPBNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmIntSocket', 'At') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py b/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py index dae5deaf..ee9f6502 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_rotation.py @@ -6,8 +6,7 @@ class CanvasSetRotationNode(ArmLogicTreeNode): bl_label = 'Set Canvas Rotation' arm_version = 1 - def init(self, context): - super(CanvasSetRotationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmFloatSocket', 'Rad') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_scale.py b/blender/arm/logicnode/canvas/LN_set_canvas_scale.py index 714c0030..7afbf7ab 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_scale.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_scale.py @@ -6,8 +6,7 @@ class CanvasSetScaleNode(ArmLogicTreeNode): bl_label = 'Set Canvas Scale' arm_version = 1 - def init(self, context): - super(CanvasSetScaleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmIntSocket', 'Height') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_slider.py b/blender/arm/logicnode/canvas/LN_set_canvas_slider.py index 7f48cce3..9988266b 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_slider.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_slider.py @@ -6,8 +6,7 @@ class CanvasSetSliderNode(ArmLogicTreeNode): bl_label = 'Set Canvas Slider' arm_version = 1 - def init(self, context): - super(CanvasSetSliderNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmFloatSocket', 'Float') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_text.py b/blender/arm/logicnode/canvas/LN_set_canvas_text.py index a706b31a..462b7ba2 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_text.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_text.py @@ -6,8 +6,7 @@ class CanvasSetTextNode(ArmLogicTreeNode): bl_label = 'Set Canvas Text' arm_version = 1 - def init(self, context): - super(CanvasSetTextNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmStringSocket', 'Text') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py b/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py index b6064691..5863510f 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_text_color.py @@ -6,8 +6,7 @@ class CanvasSetTextColorNode(ArmLogicTreeNode): bl_label = 'Set Canvas Text Color' arm_version = 1 - def init(self, context): - super(CanvasSetTextColorNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmFloatSocket', 'R') diff --git a/blender/arm/logicnode/canvas/LN_set_canvas_visible.py b/blender/arm/logicnode/canvas/LN_set_canvas_visible.py index e9af8266..dbe88b26 100644 --- a/blender/arm/logicnode/canvas/LN_set_canvas_visible.py +++ b/blender/arm/logicnode/canvas/LN_set_canvas_visible.py @@ -6,8 +6,7 @@ class CanvasSetVisibleNode(ArmLogicTreeNode): bl_label = 'Set Canvas Visible' arm_version = 1 - def init(self, context): - super(CanvasSetVisibleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Element') self.add_input('ArmBoolSocket', 'Visible') diff --git a/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py b/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py index 5a651247..83cea8fa 100644 --- a/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py +++ b/blender/arm/logicnode/deprecated/LN_get_mouse_lock.py @@ -14,8 +14,7 @@ class GetMouseLockNode(ArmLogicTreeNode): arm_category = 'Input' arm_section = 'mouse' - def init(self, context): - super(GetMouseLockNode, self).init(context) + def arm_init(self, context): self.outputs.new('ArmBoolSocket', 'Is Locked') def get_replacement_node(self, node_tree: bpy.types.NodeTree): diff --git a/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py b/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py index 6f394deb..95c5d0f1 100644 --- a/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py +++ b/blender/arm/logicnode/deprecated/LN_get_mouse_visible.py @@ -14,8 +14,7 @@ class GetMouseVisibleNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 2 - def init(self, context): - super(GetMouseVisibleNode, self).init(context) + def arm_init(self, context): self.outputs.new('ArmBoolSocket', 'Is Visible') def get_replacement_node(self, node_tree: bpy.types.NodeTree): diff --git a/blender/arm/logicnode/deprecated/LN_mouse_coords.py b/blender/arm/logicnode/deprecated/LN_mouse_coords.py index 1244730d..60b58cdd 100644 --- a/blender/arm/logicnode/deprecated/LN_mouse_coords.py +++ b/blender/arm/logicnode/deprecated/LN_mouse_coords.py @@ -11,8 +11,7 @@ class MouseCoordsNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 2 - def init(self, context): - super(MouseCoordsNode, self).init(context) + def arm_init(self, context): self.add_output('ArmVectorSocket', 'Coords') self.add_output('ArmVectorSocket', 'Movement') self.add_output('ArmIntSocket', 'Wheel') diff --git a/blender/arm/logicnode/deprecated/LN_on_gamepad.py b/blender/arm/logicnode/deprecated/LN_on_gamepad.py index fe1f2913..3de6a284 100644 --- a/blender/arm/logicnode/deprecated/LN_on_gamepad.py +++ b/blender/arm/logicnode/deprecated/LN_on_gamepad.py @@ -42,8 +42,7 @@ class OnGamepadNode(ArmLogicTreeNode): ('touchpad', 'touchpad', 'touchpad'),], name='', default='cross') - def init(self, context): - super(OnGamepadNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') self.add_input('ArmIntSocket', 'Gamepad') diff --git a/blender/arm/logicnode/deprecated/LN_on_keyboard.py b/blender/arm/logicnode/deprecated/LN_on_keyboard.py index b5b8bbcf..77699451 100644 --- a/blender/arm/logicnode/deprecated/LN_on_keyboard.py +++ b/blender/arm/logicnode/deprecated/LN_on_keyboard.py @@ -74,8 +74,7 @@ class OnKeyboardNode(ArmLogicTreeNode): ('down', 'down', 'down'),], name='', default='space') - def init(self, context): - super(OnKeyboardNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/deprecated/LN_on_mouse.py b/blender/arm/logicnode/deprecated/LN_on_mouse.py index 487d634e..087ef551 100644 --- a/blender/arm/logicnode/deprecated/LN_on_mouse.py +++ b/blender/arm/logicnode/deprecated/LN_on_mouse.py @@ -25,8 +25,7 @@ class OnMouseNode(ArmLogicTreeNode): ('middle', 'middle', 'middle')], name='', default='left') - def init(self, context): - super(OnMouseNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/deprecated/LN_on_surface.py b/blender/arm/logicnode/deprecated/LN_on_surface.py index b906d143..706c45c6 100644 --- a/blender/arm/logicnode/deprecated/LN_on_surface.py +++ b/blender/arm/logicnode/deprecated/LN_on_surface.py @@ -19,8 +19,7 @@ class OnSurfaceNode(ArmLogicTreeNode): ('Moved', 'Moved', 'Moved')], name='', default='Touched') - def init(self, context): - super(OnSurfaceNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/deprecated/LN_on_virtual_button.py b/blender/arm/logicnode/deprecated/LN_on_virtual_button.py index e5201612..e2377d0b 100644 --- a/blender/arm/logicnode/deprecated/LN_on_virtual_button.py +++ b/blender/arm/logicnode/deprecated/LN_on_virtual_button.py @@ -19,8 +19,7 @@ class OnVirtualButtonNode(ArmLogicTreeNode): name='', default='Started') property1: HaxeStringProperty('property1', name='', default='button') - def init(self, context): - super(OnVirtualButtonNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/deprecated/LN_pause_action.py b/blender/arm/logicnode/deprecated/LN_pause_action.py index 2def9733..b515ec0d 100644 --- a/blender/arm/logicnode/deprecated/LN_pause_action.py +++ b/blender/arm/logicnode/deprecated/LN_pause_action.py @@ -10,8 +10,7 @@ class PauseActionNode(ArmLogicTreeNode): arm_category = 'Animation' arm_version = 2 - def init(self, context): - super(PauseActionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_pause_tilesheet.py b/blender/arm/logicnode/deprecated/LN_pause_tilesheet.py index 87185558..38313026 100644 --- a/blender/arm/logicnode/deprecated/LN_pause_tilesheet.py +++ b/blender/arm/logicnode/deprecated/LN_pause_tilesheet.py @@ -11,8 +11,7 @@ class PauseTilesheetNode(ArmLogicTreeNode): arm_section = 'tilesheet' arm_version = 2 - def init(self, context): - super(PauseTilesheetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_pause_trait.py b/blender/arm/logicnode/deprecated/LN_pause_trait.py index 7baa2d9f..b3aecd2c 100644 --- a/blender/arm/logicnode/deprecated/LN_pause_trait.py +++ b/blender/arm/logicnode/deprecated/LN_pause_trait.py @@ -10,8 +10,7 @@ class PauseTraitNode(ArmLogicTreeNode): arm_category = 'Trait' arm_version = 2 - def init(self, context): - super(PauseTraitNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_play_action.py b/blender/arm/logicnode/deprecated/LN_play_action.py index a386d7f2..5ac411c9 100644 --- a/blender/arm/logicnode/deprecated/LN_play_action.py +++ b/blender/arm/logicnode/deprecated/LN_play_action.py @@ -10,8 +10,7 @@ class PlayActionNode(ArmLogicTreeNode): arm_category = 'Animation' arm_version = 2 - def init(self, context): - super(PlayActionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketAnimAction', 'Action') diff --git a/blender/arm/logicnode/deprecated/LN_resume_action.py b/blender/arm/logicnode/deprecated/LN_resume_action.py index 4df1d8dc..9af44ae0 100644 --- a/blender/arm/logicnode/deprecated/LN_resume_action.py +++ b/blender/arm/logicnode/deprecated/LN_resume_action.py @@ -10,8 +10,7 @@ class ResumeActionNode(ArmLogicTreeNode): arm_category = 'Animation' arm_version = 2 - def init(self, context): - super(ResumeActionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_resume_tilesheet.py b/blender/arm/logicnode/deprecated/LN_resume_tilesheet.py index 68ad6da2..b807dcc9 100644 --- a/blender/arm/logicnode/deprecated/LN_resume_tilesheet.py +++ b/blender/arm/logicnode/deprecated/LN_resume_tilesheet.py @@ -10,8 +10,7 @@ class ResumeTilesheetNode(ArmLogicTreeNode): arm_category = 'Animation' arm_version = 2 - def init(self, context): - super(ResumeTilesheetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_resume_trait.py b/blender/arm/logicnode/deprecated/LN_resume_trait.py index ccb9e183..89c15bdf 100644 --- a/blender/arm/logicnode/deprecated/LN_resume_trait.py +++ b/blender/arm/logicnode/deprecated/LN_resume_trait.py @@ -10,8 +10,7 @@ class ResumeTraitNode(ArmLogicTreeNode): arm_category = 'Trait' arm_version = 2 - def init(self, context): - super(ResumeTraitNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py b/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py index 49fe997d..104f774b 100644 --- a/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py +++ b/blender/arm/logicnode/deprecated/LN_rotate_object_around_axis.py @@ -11,8 +11,7 @@ class RotateObjectAroundAxisNode(ArmLogicTreeNode): arm_section = 'rotation' arm_version = 2 - def init(self, context): - super(RotateObjectAroundAxisNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Axis', default_value=[0, 0, 1]) diff --git a/blender/arm/logicnode/deprecated/LN_scale_object.py b/blender/arm/logicnode/deprecated/LN_scale_object.py index 58f1078f..29d5ae3d 100644 --- a/blender/arm/logicnode/deprecated/LN_scale_object.py +++ b/blender/arm/logicnode/deprecated/LN_scale_object.py @@ -11,8 +11,7 @@ class ScaleObjectNode(ArmLogicTreeNode): arm_section = 'scale' arm_version = 2 - def init(self, context): - super(ScaleObjectNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Scale') diff --git a/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py b/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py index bb5ca4bb..a27f42c3 100644 --- a/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py +++ b/blender/arm/logicnode/deprecated/LN_set_mouse_lock.py @@ -11,8 +11,7 @@ class SetMouseLockNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 2 - def init(self, context): - super(SetMouseLockNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Lock') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py b/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py index 19c29d1b..73e40a5b 100644 --- a/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py +++ b/blender/arm/logicnode/deprecated/LN_set_mouse_visible.py @@ -11,8 +11,7 @@ class ShowMouseNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 2 - def init(self, context): - super(ShowMouseNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Show') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/deprecated/LN_set_object_material.py b/blender/arm/logicnode/deprecated/LN_set_object_material.py index 4ca6b967..5d01c135 100644 --- a/blender/arm/logicnode/deprecated/LN_set_object_material.py +++ b/blender/arm/logicnode/deprecated/LN_set_object_material.py @@ -10,8 +10,7 @@ class SetMaterialNode(ArmLogicTreeNode): arm_category = 'Material' arm_version = 2 - def init(self, context): - super(SetMaterialNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Material') diff --git a/blender/arm/logicnode/deprecated/LN_surface_coords.py b/blender/arm/logicnode/deprecated/LN_surface_coords.py index 480d4d95..3fc6d1ee 100644 --- a/blender/arm/logicnode/deprecated/LN_surface_coords.py +++ b/blender/arm/logicnode/deprecated/LN_surface_coords.py @@ -12,7 +12,6 @@ class SurfaceCoordsNode(ArmLogicTreeNode): arm_is_obsolete = 'is_obsolete' arm_version = 2 - def init(self, context): - super(SurfaceCoordsNode, self).init(context) + def arm_init(self, context): self.add_output('ArmVectorSocket', 'Coords') self.add_output('ArmVectorSocket', 'Movement') diff --git a/blender/arm/logicnode/event/LN_on_application_state.py b/blender/arm/logicnode/event/LN_on_application_state.py index e624e77d..d38f8255 100644 --- a/blender/arm/logicnode/event/LN_on_application_state.py +++ b/blender/arm/logicnode/event/LN_on_application_state.py @@ -6,8 +6,7 @@ class OnApplicationStateNode(ArmLogicTreeNode): bl_label = 'On Application State' arm_version = 1 - def init(self, context): - super().init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'On Foreground') self.add_output('ArmNodeSocketAction', 'On Background') self.add_output('ArmNodeSocketAction', 'On Shutdown') diff --git a/blender/arm/logicnode/event/LN_on_event.py b/blender/arm/logicnode/event/LN_on_event.py index 99d68c06..4cb7c28b 100644 --- a/blender/arm/logicnode/event/LN_on_event.py +++ b/blender/arm/logicnode/event/LN_on_event.py @@ -12,8 +12,7 @@ class OnEventNode(ArmLogicTreeNode): property0: HaxeStringProperty('property0', name='', default='') - def init(self, context): - super(OnEventNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/event/LN_on_init.py b/blender/arm/logicnode/event/LN_on_init.py index 3c75947c..b7246258 100644 --- a/blender/arm/logicnode/event/LN_on_init.py +++ b/blender/arm/logicnode/event/LN_on_init.py @@ -6,6 +6,5 @@ class OnInitNode(ArmLogicTreeNode): bl_label = 'On Init' arm_version = 1 - def init(self, context): - super(OnInitNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/event/LN_on_timer.py b/blender/arm/logicnode/event/LN_on_timer.py index 603755d2..f5c98e3e 100644 --- a/blender/arm/logicnode/event/LN_on_timer.py +++ b/blender/arm/logicnode/event/LN_on_timer.py @@ -9,8 +9,7 @@ class OnTimerNode(ArmLogicTreeNode): bl_label = 'On Timer' arm_version = 1 - def init(self, context): - super(OnTimerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Duration') self.add_input('ArmBoolSocket', 'Repeat') diff --git a/blender/arm/logicnode/event/LN_on_update.py b/blender/arm/logicnode/event/LN_on_update.py index 3b39d066..c73ac019 100644 --- a/blender/arm/logicnode/event/LN_on_update.py +++ b/blender/arm/logicnode/event/LN_on_update.py @@ -17,8 +17,7 @@ class OnUpdateNode(ArmLogicTreeNode): ('Physics Pre-Update', 'Physics Pre-Update', 'Physics Pre-Update')], name='On', default='Update') - def init(self, context): - super(OnUpdateNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/event/LN_send_event_to_object.py b/blender/arm/logicnode/event/LN_send_event_to_object.py index 03dd9ed1..8470a704 100644 --- a/blender/arm/logicnode/event/LN_send_event_to_object.py +++ b/blender/arm/logicnode/event/LN_send_event_to_object.py @@ -13,8 +13,7 @@ class SendEventNode(ArmLogicTreeNode): arm_section = 'custom' arm_version = 1 - def init(self, context): - super(SendEventNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Event') self.add_input('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/event/LN_send_global_event.py b/blender/arm/logicnode/event/LN_send_global_event.py index 25943b51..aba0ac0e 100644 --- a/blender/arm/logicnode/event/LN_send_global_event.py +++ b/blender/arm/logicnode/event/LN_send_global_event.py @@ -12,8 +12,7 @@ class SendGlobalEventNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'custom' - def init(self, context): - super(SendGlobalEventNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Event') diff --git a/blender/arm/logicnode/input/LN_gamepad.py b/blender/arm/logicnode/input/LN_gamepad.py index 09c5cd0e..83e31ac1 100644 --- a/blender/arm/logicnode/input/LN_gamepad.py +++ b/blender/arm/logicnode/input/LN_gamepad.py @@ -46,8 +46,7 @@ class GamepadNode(ArmLogicTreeNode): ('touchpad', 'touchpad', 'touchpad'),], name='', default='cross') - def init(self, context): - super(GamepadNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmBoolSocket', 'State') diff --git a/blender/arm/logicnode/input/LN_gamepad_coords.py b/blender/arm/logicnode/input/LN_gamepad_coords.py index fdb61b75..2648479a 100644 --- a/blender/arm/logicnode/input/LN_gamepad_coords.py +++ b/blender/arm/logicnode/input/LN_gamepad_coords.py @@ -11,8 +11,7 @@ class GamepadCoordsNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'gamepad' - def init(self, context): - super(GamepadCoordsNode, self).init(context) + def arm_init(self, context): self.add_output('ArmVectorSocket', 'Left Stick') self.add_output('ArmVectorSocket', 'Right Stick') self.add_output('ArmVectorSocket', 'Left Movement') diff --git a/blender/arm/logicnode/input/LN_get_cursor_location.py b/blender/arm/logicnode/input/LN_get_cursor_location.py index 2d102343..6e6eedac 100644 --- a/blender/arm/logicnode/input/LN_get_cursor_location.py +++ b/blender/arm/logicnode/input/LN_get_cursor_location.py @@ -7,8 +7,7 @@ class GetCursorLocationNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 1 - def init(self, context): - super(GetCursorLocationNode, self).init(context) + def arm_init(self, context): self.add_output('ArmIntSocket', 'X') self.add_output('ArmIntSocket', 'Y') self.add_output('ArmIntSocket', 'Inverted X') diff --git a/blender/arm/logicnode/input/LN_get_cursor_state.py b/blender/arm/logicnode/input/LN_get_cursor_state.py index b09c253a..0d1c7c8f 100644 --- a/blender/arm/logicnode/input/LN_get_cursor_state.py +++ b/blender/arm/logicnode/input/LN_get_cursor_state.py @@ -16,8 +16,7 @@ class GetCursorStateNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 1 - def init(self, context): - super(GetCursorStateNode, self).init(context) + def arm_init(self, context): self.outputs.new('ArmBoolSocket', 'Is Hidden Locked') self.outputs.new('ArmBoolSocket', 'Is Hidden') self.outputs.new('ArmBoolSocket', 'Is Locked') diff --git a/blender/arm/logicnode/input/LN_get_mouse_movement.py b/blender/arm/logicnode/input/LN_get_mouse_movement.py index a3ac08d2..fbef5311 100644 --- a/blender/arm/logicnode/input/LN_get_mouse_movement.py +++ b/blender/arm/logicnode/input/LN_get_mouse_movement.py @@ -9,8 +9,7 @@ class GetMouseMovementNode(ArmLogicTreeNode): arm_section = 'mouse' arm_version = 1 - def init(self, context): - super(GetMouseMovementNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'X Multiplier', default_value=-1.0) self.add_input('ArmFloatSocket', 'Y Multiplier', default_value=-1.0) diff --git a/blender/arm/logicnode/input/LN_get_touch_location.py b/blender/arm/logicnode/input/LN_get_touch_location.py index 1acf6028..3aea57b6 100644 --- a/blender/arm/logicnode/input/LN_get_touch_location.py +++ b/blender/arm/logicnode/input/LN_get_touch_location.py @@ -7,8 +7,7 @@ class GetTouchLocationNode(ArmLogicTreeNode): arm_section = 'surface' arm_version = 1 - def init(self, context): - super(GetTouchLocationNode, self).init(context) + def arm_init(self, context): self.add_output('ArmIntSocket', 'X') self.add_output('ArmIntSocket', 'Y') self.add_output('ArmIntSocket', 'Inverted X') diff --git a/blender/arm/logicnode/input/LN_get_touch_movement.py b/blender/arm/logicnode/input/LN_get_touch_movement.py index 6c110679..8c37c844 100644 --- a/blender/arm/logicnode/input/LN_get_touch_movement.py +++ b/blender/arm/logicnode/input/LN_get_touch_movement.py @@ -7,8 +7,7 @@ class GetTouchMovementNode(ArmLogicTreeNode): arm_section = 'surface' arm_version = 1 - def init(self, context): - super(GetTouchMovementNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'X Multiplier', default_value=-1.0) self.add_input('ArmFloatSocket', 'Y Multiplier', default_value=-1.0) diff --git a/blender/arm/logicnode/input/LN_keyboard.py b/blender/arm/logicnode/input/LN_keyboard.py index b1613b02..7a78e651 100644 --- a/blender/arm/logicnode/input/LN_keyboard.py +++ b/blender/arm/logicnode/input/LN_keyboard.py @@ -70,8 +70,7 @@ class KeyboardNode(ArmLogicTreeNode): ('down', 'down', 'down'),], name='', default='space') - def init(self, context): - super(KeyboardNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmBoolSocket', 'State') diff --git a/blender/arm/logicnode/input/LN_mouse.py b/blender/arm/logicnode/input/LN_mouse.py index 69663544..03624cd7 100644 --- a/blender/arm/logicnode/input/LN_mouse.py +++ b/blender/arm/logicnode/input/LN_mouse.py @@ -21,8 +21,7 @@ class MouseNode(ArmLogicTreeNode): ('right', 'Right', 'Right mouse button')], name='', default='left') - def init(self, context): - super(MouseNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmBoolSocket', 'State') diff --git a/blender/arm/logicnode/input/LN_on_swipe.py b/blender/arm/logicnode/input/LN_on_swipe.py index 61c11913..8bd6226e 100644 --- a/blender/arm/logicnode/input/LN_on_swipe.py +++ b/blender/arm/logicnode/input/LN_on_swipe.py @@ -59,8 +59,7 @@ class OnSwipeNode(ArmLogicTreeNode): super(OnSwipeNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(OnSwipeNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmFloatSocket', 'Time') self.inputs[-1].default_value = 0.15 self.inputs.new('ArmIntSocket', 'Min Length (px)') diff --git a/blender/arm/logicnode/input/LN_on_tap_screen.py b/blender/arm/logicnode/input/LN_on_tap_screen.py index c0450ca0..61c4a0fa 100644 --- a/blender/arm/logicnode/input/LN_on_tap_screen.py +++ b/blender/arm/logicnode/input/LN_on_tap_screen.py @@ -18,8 +18,7 @@ class OnTapScreen(ArmLogicTreeNode): arm_section = 'Input' arm_version = 1 - def init(self, context): - super(OnTapScreen, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Duration') self.inputs[-1].default_value = 0.3 self.add_input('ArmFloatSocket', 'Interval') diff --git a/blender/arm/logicnode/input/LN_sensor_coords.py b/blender/arm/logicnode/input/LN_sensor_coords.py index 439f8eb1..a92f38f0 100644 --- a/blender/arm/logicnode/input/LN_sensor_coords.py +++ b/blender/arm/logicnode/input/LN_sensor_coords.py @@ -7,6 +7,5 @@ class SensorCoordsNode(ArmLogicTreeNode): arm_section = 'sensor' arm_version = 1 - def init(self, context): - super(SensorCoordsNode, self).init(context) + def arm_init(self, context): self.add_output('ArmVectorSocket', 'Coords') diff --git a/blender/arm/logicnode/input/LN_set_cursor_state.py b/blender/arm/logicnode/input/LN_set_cursor_state.py index c1f38fde..0c8c2d6e 100644 --- a/blender/arm/logicnode/input/LN_set_cursor_state.py +++ b/blender/arm/logicnode/input/LN_set_cursor_state.py @@ -22,8 +22,7 @@ class SetCursorStateNode(ArmLogicTreeNode): ], name='', default='hide locked') - def init(self, context): - super(SetCursorStateNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'State') diff --git a/blender/arm/logicnode/input/LN_touch.py b/blender/arm/logicnode/input/LN_touch.py index ffbc32c6..f6ff0593 100644 --- a/blender/arm/logicnode/input/LN_touch.py +++ b/blender/arm/logicnode/input/LN_touch.py @@ -15,8 +15,7 @@ class SurfaceNode(ArmLogicTreeNode): ('moved', 'Moved', 'Moved')], name='', default='down') - def init(self, context): - super(SurfaceNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmBoolSocket', 'State') diff --git a/blender/arm/logicnode/input/LN_virtual_button.py b/blender/arm/logicnode/input/LN_virtual_button.py index 28a52189..3850a26e 100644 --- a/blender/arm/logicnode/input/LN_virtual_button.py +++ b/blender/arm/logicnode/input/LN_virtual_button.py @@ -15,8 +15,7 @@ class VirtualButtonNode(ArmLogicTreeNode): name='', default='down') property1: HaxeStringProperty('property1', name='', default='button') - def init(self, context): - super(VirtualButtonNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') self.add_output('ArmBoolSocket', 'State') diff --git a/blender/arm/logicnode/light/LN_set_light_color.py b/blender/arm/logicnode/light/LN_set_light_color.py index 38b3d6ef..5af7cde7 100644 --- a/blender/arm/logicnode/light/LN_set_light_color.py +++ b/blender/arm/logicnode/light/LN_set_light_color.py @@ -6,8 +6,7 @@ class SetLightColorNode(ArmLogicTreeNode): bl_label = 'Set Light Color' arm_version = 1 - def init(self, context): - super(SetLightColorNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Light') self.add_input('ArmColorSocket', 'Color', default_value=[1.0, 1.0, 1.0, 1.0]) diff --git a/blender/arm/logicnode/light/LN_set_light_strength.py b/blender/arm/logicnode/light/LN_set_light_strength.py index cbf11700..bc9fd67e 100644 --- a/blender/arm/logicnode/light/LN_set_light_strength.py +++ b/blender/arm/logicnode/light/LN_set_light_strength.py @@ -6,8 +6,7 @@ class SetLightStrengthNode(ArmLogicTreeNode): bl_label = 'Set Light Strength' arm_version = 1 - def init(self, context): - super(SetLightStrengthNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Light') self.add_input('ArmFloatSocket', 'Strength', default_value=250) diff --git a/blender/arm/logicnode/logic/LN_alternate_output.py b/blender/arm/logicnode/logic/LN_alternate_output.py index 839c75bd..8f0a81e6 100644 --- a/blender/arm/logicnode/logic/LN_alternate_output.py +++ b/blender/arm/logicnode/logic/LN_alternate_output.py @@ -8,8 +8,7 @@ class AlternateNode(ArmLogicTreeNode): arm_section = 'flow' arm_version = 1 - def init(self, context): - super(AlternateNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', '0') diff --git a/blender/arm/logicnode/logic/LN_branch.py b/blender/arm/logicnode/logic/LN_branch.py index d7b5536d..5693f882 100644 --- a/blender/arm/logicnode/logic/LN_branch.py +++ b/blender/arm/logicnode/logic/LN_branch.py @@ -8,8 +8,7 @@ class BranchNode(ArmLogicTreeNode): bl_label = 'Branch' arm_version = 1 - def init(self, context): - super(BranchNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Bool') diff --git a/blender/arm/logicnode/logic/LN_call_function.py b/blender/arm/logicnode/logic/LN_call_function.py index 20808c71..819407ad 100644 --- a/blender/arm/logicnode/logic/LN_call_function.py +++ b/blender/arm/logicnode/logic/LN_call_function.py @@ -13,8 +13,7 @@ class CallFunctionNode(ArmLogicTreeNode): super(CallFunctionNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(CallFunctionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Trait/Any') self.add_input('ArmStringSocket', 'Function') diff --git a/blender/arm/logicnode/logic/LN_function.py b/blender/arm/logicnode/logic/LN_function.py index 5af1e5e7..2d3fe0dd 100644 --- a/blender/arm/logicnode/logic/LN_function.py +++ b/blender/arm/logicnode/logic/LN_function.py @@ -15,8 +15,7 @@ class FunctionNode(ArmLogicTreeNode): super(FunctionNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(FunctionNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') function_name: StringProperty(name="Name") diff --git a/blender/arm/logicnode/logic/LN_function_output.py b/blender/arm/logicnode/logic/LN_function_output.py index 87343512..073b364f 100644 --- a/blender/arm/logicnode/logic/LN_function_output.py +++ b/blender/arm/logicnode/logic/LN_function_output.py @@ -10,8 +10,7 @@ class FunctionOutputNode(ArmLogicTreeNode): arm_section = 'function' arm_version = 1 - def init(self, context): - super(FunctionOutputNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/logic/LN_gate.py b/blender/arm/logicnode/logic/LN_gate.py index 286c6580..e67b9f23 100644 --- a/blender/arm/logicnode/logic/LN_gate.py +++ b/blender/arm/logicnode/logic/LN_gate.py @@ -38,8 +38,7 @@ class GateNode(ArmLogicTreeNode): super(GateNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(GateNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Input 1') self.add_input('ArmDynamicSocket', 'Input 2') diff --git a/blender/arm/logicnode/logic/LN_invert_boolean.py b/blender/arm/logicnode/logic/LN_invert_boolean.py index 5c5475f1..c981c7cc 100644 --- a/blender/arm/logicnode/logic/LN_invert_boolean.py +++ b/blender/arm/logicnode/logic/LN_invert_boolean.py @@ -6,8 +6,7 @@ class NotNode(ArmLogicTreeNode): bl_label = 'Invert Boolean' arm_version = 1 - def init(self, context): - super(NotNode, self).init(context) + def arm_init(self, context): self.add_input('ArmBoolSocket', 'Bool In') self.add_output('ArmBoolSocket', 'Bool Out') diff --git a/blender/arm/logicnode/logic/LN_invert_output.py b/blender/arm/logicnode/logic/LN_invert_output.py index 04c7d596..7a30dbb8 100644 --- a/blender/arm/logicnode/logic/LN_invert_output.py +++ b/blender/arm/logicnode/logic/LN_invert_output.py @@ -8,8 +8,7 @@ class InverseNode(ArmLogicTreeNode): arm_section = 'flow' arm_version = 1 - def init(self, context): - super(InverseNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/logic/LN_is_false.py b/blender/arm/logicnode/logic/LN_is_false.py index a4ec30df..304c025d 100644 --- a/blender/arm/logicnode/logic/LN_is_false.py +++ b/blender/arm/logicnode/logic/LN_is_false.py @@ -10,8 +10,7 @@ class IsFalseNode(ArmLogicTreeNode): bl_label = 'Is False' arm_version = 1 - def init(self, context): - super(IsFalseNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Bool') diff --git a/blender/arm/logicnode/logic/LN_is_not_null.py b/blender/arm/logicnode/logic/LN_is_not_null.py index 200b4cdf..e18ee5a4 100644 --- a/blender/arm/logicnode/logic/LN_is_not_null.py +++ b/blender/arm/logicnode/logic/LN_is_not_null.py @@ -9,8 +9,7 @@ class IsNotNoneNode(ArmLogicTreeNode): bl_label = 'Is Not Null' arm_version = 1 - def init(self, context): - super(IsNotNoneNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/logic/LN_is_null.py b/blender/arm/logicnode/logic/LN_is_null.py index a08e2c32..da2e120c 100644 --- a/blender/arm/logicnode/logic/LN_is_null.py +++ b/blender/arm/logicnode/logic/LN_is_null.py @@ -10,8 +10,7 @@ class IsNoneNode(ArmLogicTreeNode): bl_label = 'Is Null' arm_version = 1 - def init(self, context): - super(IsNoneNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/logic/LN_is_true.py b/blender/arm/logicnode/logic/LN_is_true.py index 6e88f6b8..17f0b47b 100644 --- a/blender/arm/logicnode/logic/LN_is_true.py +++ b/blender/arm/logicnode/logic/LN_is_true.py @@ -9,8 +9,7 @@ class IsTrueNode(ArmLogicTreeNode): bl_label = 'Is True' arm_version = 1 - def init(self, context): - super(IsTrueNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Bool') diff --git a/blender/arm/logicnode/logic/LN_loop.py b/blender/arm/logicnode/logic/LN_loop.py index d6ef4b0e..212c514d 100644 --- a/blender/arm/logicnode/logic/LN_loop.py +++ b/blender/arm/logicnode/logic/LN_loop.py @@ -20,8 +20,7 @@ class LoopNode(ArmLogicTreeNode): arm_section = 'flow' arm_version = 1 - def init(self, context): - super(LoopNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmIntSocket', 'From') self.add_input('ArmIntSocket', 'To') diff --git a/blender/arm/logicnode/logic/LN_loop_break.py b/blender/arm/logicnode/logic/LN_loop_break.py index 3c0d8a2c..326d15b8 100644 --- a/blender/arm/logicnode/logic/LN_loop_break.py +++ b/blender/arm/logicnode/logic/LN_loop_break.py @@ -12,6 +12,5 @@ class LoopBreakNode(ArmLogicTreeNode): arm_section = 'flow' arm_version = 1 - def init(self, context): - super(LoopBreakNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') diff --git a/blender/arm/logicnode/logic/LN_merge.py b/blender/arm/logicnode/logic/LN_merge.py index 5c3b8a9f..c5e369de 100644 --- a/blender/arm/logicnode/logic/LN_merge.py +++ b/blender/arm/logicnode/logic/LN_merge.py @@ -14,8 +14,7 @@ class MergeNode(ArmLogicTreeNode): super(MergeNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(MergeNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/logic/LN_null.py b/blender/arm/logicnode/logic/LN_null.py index 7ed6a18f..ed0d9601 100644 --- a/blender/arm/logicnode/logic/LN_null.py +++ b/blender/arm/logicnode/logic/LN_null.py @@ -6,6 +6,5 @@ class NoneNode(ArmLogicTreeNode): bl_label = 'Null' arm_version = 1 - def init(self, context): - super(NoneNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Null') diff --git a/blender/arm/logicnode/logic/LN_output_sequence.py b/blender/arm/logicnode/logic/LN_output_sequence.py index 3d973cdd..f6166a69 100644 --- a/blender/arm/logicnode/logic/LN_output_sequence.py +++ b/blender/arm/logicnode/logic/LN_output_sequence.py @@ -11,8 +11,7 @@ class SequenceNode(ArmLogicTreeNode): super(SequenceNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(SequenceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/logic/LN_output_to_boolean.py b/blender/arm/logicnode/logic/LN_output_to_boolean.py index e8b040db..d03c79cf 100644 --- a/blender/arm/logicnode/logic/LN_output_to_boolean.py +++ b/blender/arm/logicnode/logic/LN_output_to_boolean.py @@ -7,8 +7,7 @@ class ToBoolNode(ArmLogicTreeNode): bl_label = 'Output to Boolean' arm_version = 1 - def init(self, context): - super(ToBoolNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmBoolSocket', 'Bool') diff --git a/blender/arm/logicnode/logic/LN_switch_output.py b/blender/arm/logicnode/logic/LN_switch_output.py index 26bd5246..688245e2 100644 --- a/blender/arm/logicnode/logic/LN_switch_output.py +++ b/blender/arm/logicnode/logic/LN_switch_output.py @@ -15,8 +15,7 @@ class SwitchNode(ArmLogicTreeNode): super(SwitchNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(SwitchNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/logic/LN_value_changed.py b/blender/arm/logicnode/logic/LN_value_changed.py index c805d3a1..82af3d5c 100644 --- a/blender/arm/logicnode/logic/LN_value_changed.py +++ b/blender/arm/logicnode/logic/LN_value_changed.py @@ -6,8 +6,7 @@ class ValueChangedNode(ArmLogicTreeNode): bl_label = 'Value Changed' arm_version = 1 - def init(self, context): - super(ValueChangedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/logic/LN_while_true.py b/blender/arm/logicnode/logic/LN_while_true.py index f817c1fd..b2a7b670 100644 --- a/blender/arm/logicnode/logic/LN_while_true.py +++ b/blender/arm/logicnode/logic/LN_while_true.py @@ -15,8 +15,7 @@ class WhileNode(ArmLogicTreeNode): arm_section = 'flow' arm_version = 1 - def init(self, context): - super(WhileNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Condition') diff --git a/blender/arm/logicnode/material/LN_get_object_material.py b/blender/arm/logicnode/material/LN_get_object_material.py index ec560fcf..8e64630d 100644 --- a/blender/arm/logicnode/material/LN_get_object_material.py +++ b/blender/arm/logicnode/material/LN_get_object_material.py @@ -6,8 +6,7 @@ class GetMaterialNode(ArmLogicTreeNode): bl_label = 'Get Object Material' arm_version = 1 - def init(self, context): - super(GetMaterialNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmIntSocket', 'Slot') diff --git a/blender/arm/logicnode/material/LN_material.py b/blender/arm/logicnode/material/LN_material.py index 63cf9c46..082f2a80 100644 --- a/blender/arm/logicnode/material/LN_material.py +++ b/blender/arm/logicnode/material/LN_material.py @@ -20,8 +20,7 @@ class MaterialNode(ArmLogicTreeNode): property0: HaxePointerProperty('property0', name='', type=bpy.types.Material) - def init(self, context): - super(MaterialNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Material', is_var=True) def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/material/LN_set_material_image_param.py b/blender/arm/logicnode/material/LN_set_material_image_param.py index e6188f76..38ae1bf3 100644 --- a/blender/arm/logicnode/material/LN_set_material_image_param.py +++ b/blender/arm/logicnode/material/LN_set_material_image_param.py @@ -7,8 +7,7 @@ class SetMaterialImageParamNode(ArmLogicTreeNode): arm_section = 'params' arm_version = 1 - def init(self, context): - super(SetMaterialImageParamNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Material') self.add_input('ArmStringSocket', 'Node') diff --git a/blender/arm/logicnode/material/LN_set_material_rgb_param.py b/blender/arm/logicnode/material/LN_set_material_rgb_param.py index 1b826834..b8a4b5f6 100644 --- a/blender/arm/logicnode/material/LN_set_material_rgb_param.py +++ b/blender/arm/logicnode/material/LN_set_material_rgb_param.py @@ -7,8 +7,7 @@ class SetMaterialRgbParamNode(ArmLogicTreeNode): arm_section = 'params' arm_version = 1 - def init(self, context): - super(SetMaterialRgbParamNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Material') self.add_input('ArmStringSocket', 'Node') diff --git a/blender/arm/logicnode/material/LN_set_material_value_param.py b/blender/arm/logicnode/material/LN_set_material_value_param.py index afae0aa7..cabc7b19 100644 --- a/blender/arm/logicnode/material/LN_set_material_value_param.py +++ b/blender/arm/logicnode/material/LN_set_material_value_param.py @@ -7,8 +7,7 @@ class SetMaterialValueParamNode(ArmLogicTreeNode): arm_section = 'params' arm_version = 1 - def init(self, context): - super(SetMaterialValueParamNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Material') self.add_input('ArmStringSocket', 'Node') diff --git a/blender/arm/logicnode/material/LN_set_object_material_slot.py b/blender/arm/logicnode/material/LN_set_object_material_slot.py index acfa6a68..ccfab366 100644 --- a/blender/arm/logicnode/material/LN_set_object_material_slot.py +++ b/blender/arm/logicnode/material/LN_set_object_material_slot.py @@ -6,8 +6,7 @@ class SetMaterialSlotNode(ArmLogicTreeNode): bl_label = 'Set Object Material Slot' arm_version = 1 - def init(self, context): - super(SetMaterialSlotNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Material') diff --git a/blender/arm/logicnode/math/LN_clamp.py b/blender/arm/logicnode/math/LN_clamp.py index 8337dd97..257c3802 100644 --- a/blender/arm/logicnode/math/LN_clamp.py +++ b/blender/arm/logicnode/math/LN_clamp.py @@ -9,8 +9,7 @@ class ClampNode(ArmLogicTreeNode): bl_label = 'Clamp' arm_version = 1 - def init(self, context): - super(ClampNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Value') self.add_input('ArmFloatSocket', 'Min') self.add_input('ArmFloatSocket', 'Max') diff --git a/blender/arm/logicnode/math/LN_compare.py b/blender/arm/logicnode/math/LN_compare.py index 027ee9ed..c3b86472 100644 --- a/blender/arm/logicnode/math/LN_compare.py +++ b/blender/arm/logicnode/math/LN_compare.py @@ -29,8 +29,7 @@ class CompareNode(ArmLogicTreeNode): super(CompareNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(CompareNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Value') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/math/LN_deg_to_rad.py b/blender/arm/logicnode/math/LN_deg_to_rad.py index 034e73e9..6ee81e61 100644 --- a/blender/arm/logicnode/math/LN_deg_to_rad.py +++ b/blender/arm/logicnode/math/LN_deg_to_rad.py @@ -7,8 +7,7 @@ class DegToRadNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'angle' - def init(self, context): - super(DegToRadNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Degrees') self.add_output('ArmFloatSocket', 'Radians') diff --git a/blender/arm/logicnode/math/LN_map_range.py b/blender/arm/logicnode/math/LN_map_range.py index 29de5d67..0008ce88 100644 --- a/blender/arm/logicnode/math/LN_map_range.py +++ b/blender/arm/logicnode/math/LN_map_range.py @@ -9,8 +9,7 @@ class MapRangeNode(ArmLogicTreeNode): bl_label = 'Map Range' arm_version = 1 - def init(self, context): - super(MapRangeNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Value', default_value=1.0) self.add_input('ArmFloatSocket', 'From Min') self.add_input('ArmFloatSocket', 'From Max', default_value=1.0) diff --git a/blender/arm/logicnode/math/LN_math.py b/blender/arm/logicnode/math/LN_math.py index ddae6d7f..2271c2dc 100644 --- a/blender/arm/logicnode/math/LN_math.py +++ b/blender/arm/logicnode/math/LN_math.py @@ -98,8 +98,7 @@ class MathNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super(MathNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Value 0', default_value=0.0) self.add_input('ArmFloatSocket', 'Value 1', default_value=0.0) diff --git a/blender/arm/logicnode/math/LN_math_expression.py b/blender/arm/logicnode/math/LN_math_expression.py index 4018b3e1..0795d6a8 100644 --- a/blender/arm/logicnode/math/LN_math_expression.py +++ b/blender/arm/logicnode/math/LN_math_expression.py @@ -161,8 +161,7 @@ class MathExpressionNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super(MathExpressionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', self.get_variable_name(0), default_value=0.0) self.add_input('ArmFloatSocket', self.get_variable_name(1), default_value=0.0) self.add_output('ArmFloatSocket', 'Result') diff --git a/blender/arm/logicnode/math/LN_matrix_math.py b/blender/arm/logicnode/math/LN_matrix_math.py index 903a4e87..6a4d200e 100644 --- a/blender/arm/logicnode/math/LN_matrix_math.py +++ b/blender/arm/logicnode/math/LN_matrix_math.py @@ -12,8 +12,7 @@ class MatrixMathNode(ArmLogicTreeNode): items = [('Multiply', 'Multiply', 'Multiply')], name='', default='Multiply') - def init(self, context): - super(MatrixMathNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Matrix 1') self.add_input('ArmDynamicSocket', 'Matrix 2') diff --git a/blender/arm/logicnode/math/LN_mix.py b/blender/arm/logicnode/math/LN_mix.py index 0d4a98e3..7ae648a4 100644 --- a/blender/arm/logicnode/math/LN_mix.py +++ b/blender/arm/logicnode/math/LN_mix.py @@ -30,8 +30,7 @@ class MixNode(ArmLogicTreeNode): property2: HaxeBoolProperty('property2', name='Clamp', default=False) - def init(self, context): - super(MixNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Factor', default_value=0.0) self.add_input('ArmFloatSocket', 'Value 1', default_value=0.0) self.add_input('ArmFloatSocket', 'Value 2', default_value=1.0) diff --git a/blender/arm/logicnode/math/LN_mix_vector.py b/blender/arm/logicnode/math/LN_mix_vector.py index 9084d75c..4349de86 100644 --- a/blender/arm/logicnode/math/LN_mix_vector.py +++ b/blender/arm/logicnode/math/LN_mix_vector.py @@ -32,8 +32,7 @@ class VectorMixNode(ArmLogicTreeNode): property2: HaxeBoolProperty('property2', name='Clamp', default=False) - def init(self, context): - super(VectorMixNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Factor', default_value=0.0) self.add_input('ArmVectorSocket', 'Vector 1', default_value=[0.0, 0.0, 0.0]) self.add_input('ArmVectorSocket', 'Vector 2', default_value=[1.0, 1.0, 1.0]) diff --git a/blender/arm/logicnode/math/LN_quaternion_math.py b/blender/arm/logicnode/math/LN_quaternion_math.py index 8dfdc590..dfdece72 100644 --- a/blender/arm/logicnode/math/LN_quaternion_math.py +++ b/blender/arm/logicnode/math/LN_quaternion_math.py @@ -155,8 +155,7 @@ class QuaternionMathNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super(QuaternionMathNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Quaternion 0', default_value=[0.0, 0.0, 0.0]) self.add_input('ArmVectorSocket', 'Quaternion 1', default_value=[0.0, 0.0, 0.0]) self.add_output('ArmVectorSocket', 'Result') diff --git a/blender/arm/logicnode/math/LN_rad_to_deg.py b/blender/arm/logicnode/math/LN_rad_to_deg.py index 2335acb2..c144ae98 100644 --- a/blender/arm/logicnode/math/LN_rad_to_deg.py +++ b/blender/arm/logicnode/math/LN_rad_to_deg.py @@ -7,8 +7,7 @@ class RadToDegNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'angle' - def init(self, context): - super(RadToDegNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Radians') self.add_output('ArmFloatSocket', 'Degrees') diff --git a/blender/arm/logicnode/math/LN_screen_to_world_space.py b/blender/arm/logicnode/math/LN_screen_to_world_space.py index 0a6c2375..ef1864cb 100644 --- a/blender/arm/logicnode/math/LN_screen_to_world_space.py +++ b/blender/arm/logicnode/math/LN_screen_to_world_space.py @@ -12,8 +12,7 @@ class ScreenToWorldSpaceNode(ArmLogicTreeNode): property0: HaxeBoolProperty('property0', name='Separator Out', default=False) - def init(self, context): - super(ScreenToWorldSpaceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmIntSocket', 'Screen X') self.add_input('ArmIntSocket', 'Screen Y') diff --git a/blender/arm/logicnode/math/LN_separate_quaternion.py b/blender/arm/logicnode/math/LN_separate_quaternion.py index 10d81ded..d8b6f0cf 100644 --- a/blender/arm/logicnode/math/LN_separate_quaternion.py +++ b/blender/arm/logicnode/math/LN_separate_quaternion.py @@ -7,8 +7,7 @@ class SeparateQuaternionNode(ArmLogicTreeNode): arm_section = 'quaternions' arm_version = 1 - def init(self, context): - super(SeparateQuaternionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Quaternion') self.add_output('ArmFloatSocket', 'X') diff --git a/blender/arm/logicnode/math/LN_separate_rgb.py b/blender/arm/logicnode/math/LN_separate_rgb.py index e76766f1..e2098989 100644 --- a/blender/arm/logicnode/math/LN_separate_rgb.py +++ b/blender/arm/logicnode/math/LN_separate_rgb.py @@ -7,8 +7,7 @@ class SeparateColorNode(ArmLogicTreeNode): arm_section = 'color' arm_version = 1 - def init(self, context): - super(SeparateColorNode, self).init(context) + def arm_init(self, context): self.add_input('ArmColorSocket', 'Color', default_value=[1.0, 1.0, 1.0, 1.0]) self.add_output('ArmFloatSocket', 'R') diff --git a/blender/arm/logicnode/math/LN_separate_xyz.py b/blender/arm/logicnode/math/LN_separate_xyz.py index c2e33ecd..4f7ac735 100644 --- a/blender/arm/logicnode/math/LN_separate_xyz.py +++ b/blender/arm/logicnode/math/LN_separate_xyz.py @@ -7,8 +7,7 @@ class SeparateVectorNode(ArmLogicTreeNode): arm_section = 'vector' arm_version = 1 - def init(self, context): - super(SeparateVectorNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Vector') self.add_output('ArmFloatSocket', 'X') diff --git a/blender/arm/logicnode/math/LN_vector_clamp.py b/blender/arm/logicnode/math/LN_vector_clamp.py index 744880ef..a61e677d 100644 --- a/blender/arm/logicnode/math/LN_vector_clamp.py +++ b/blender/arm/logicnode/math/LN_vector_clamp.py @@ -7,8 +7,7 @@ class VectorClampToSizeNode(ArmLogicTreeNode): arm_section = 'vector' arm_version = 1 - def init(self, context): - super(VectorClampToSizeNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Vector In', default_value=[0.0, 0.0, 0.0]) self.add_input('ArmFloatSocket', 'Min') self.add_input('ArmFloatSocket', 'Max') diff --git a/blender/arm/logicnode/math/LN_vector_math.py b/blender/arm/logicnode/math/LN_vector_math.py index 7654d151..4e9e82a5 100644 --- a/blender/arm/logicnode/math/LN_vector_math.py +++ b/blender/arm/logicnode/math/LN_vector_math.py @@ -123,8 +123,7 @@ class VectorMathNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super(VectorMathNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Value 0', default_value=[0.0, 0.0, 0.0]) self.add_input('ArmVectorSocket', 'Value 1', default_value=[0.0, 0.0, 0.0]) diff --git a/blender/arm/logicnode/math/LN_world_to_screen_space.py b/blender/arm/logicnode/math/LN_world_to_screen_space.py index 6b8f519c..b3f16b6a 100644 --- a/blender/arm/logicnode/math/LN_world_to_screen_space.py +++ b/blender/arm/logicnode/math/LN_world_to_screen_space.py @@ -7,8 +7,7 @@ class WorldToScreenSpaceNode(ArmLogicTreeNode): arm_section = 'matrix' arm_version = 1 - def init(self, context): - super(WorldToScreenSpaceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'World') self.add_output('ArmVectorSocket', 'Screen') diff --git a/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py b/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py index d2999718..5bcb5002 100644 --- a/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py +++ b/blender/arm/logicnode/miscellaneous/LN_boolean_to_vector.py @@ -6,8 +6,7 @@ class VectorFromBooleanNode(ArmLogicTreeNode): bl_label = 'Boolean to Vector' arm_version = 1 - def init(self, context): - super(VectorFromBooleanNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmBoolSocket', 'X') self.inputs.new('ArmBoolSocket', '-X') self.inputs.new('ArmBoolSocket', 'Y') diff --git a/blender/arm/logicnode/miscellaneous/LN_call_group.py b/blender/arm/logicnode/miscellaneous/LN_call_group.py index cb5849bb..87e13ec1 100644 --- a/blender/arm/logicnode/miscellaneous/LN_call_group.py +++ b/blender/arm/logicnode/miscellaneous/LN_call_group.py @@ -17,8 +17,7 @@ class CallGroupNode(ArmLogicTreeNode): property0_: HaxePointerProperty('property0', name='Group', type=bpy.types.NodeTree) - def init(self, context): - super(CallGroupNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/miscellaneous/LN_default_if_null.py b/blender/arm/logicnode/miscellaneous/LN_default_if_null.py index d2bcf730..e1e5f2db 100644 --- a/blender/arm/logicnode/miscellaneous/LN_default_if_null.py +++ b/blender/arm/logicnode/miscellaneous/LN_default_if_null.py @@ -10,8 +10,7 @@ class DefaultIfNullNode(ArmLogicTreeNode): bl_label = 'Default if Null' arm_version = 1 - def init(self, context): - super(DefaultIfNullNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmDynamicSocket', 'Value In') self.inputs.new('ArmDynamicSocket', 'Default') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_application_time.py b/blender/arm/logicnode/miscellaneous/LN_get_application_time.py index 2e4301d6..ae2ba85a 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_application_time.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_application_time.py @@ -6,7 +6,6 @@ class TimeNode(ArmLogicTreeNode): bl_label = 'Get Application Time' arm_version = 1 - def init(self, context): - super(TimeNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'Time') self.add_output('ArmFloatSocket', 'Delta') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py b/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py index 5bd6653e..e6e04394 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_debug_console_settings.py @@ -6,8 +6,7 @@ class GetDebugConsoleSettings(ArmLogicTreeNode): bl_label = 'Get Debug Console Settings' arm_version = 1 - def init(self, context): - super(GetDebugConsoleSettings, self).init(context) + def arm_init(self, context): self.add_output('ArmBoolSocket', 'Visible') self.add_output('ArmFloatSocket', 'Scale') self.add_output('ArmStringSocket', 'Position') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py b/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py index 42399587..411e298c 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_display_resolution.py @@ -10,7 +10,6 @@ class DisplayInfoNode(ArmLogicTreeNode): arm_section = 'screen' arm_version = 1 - def init(self, context): - super(DisplayInfoNode, self).init(context) + def arm_init(self, context): self.add_output('ArmIntSocket', 'Width') self.add_output('ArmIntSocket', 'Height') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_fps.py b/blender/arm/logicnode/miscellaneous/LN_get_fps.py index cd693644..4bc298d9 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_fps.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_fps.py @@ -6,6 +6,5 @@ class GetFPSNode(ArmLogicTreeNode): bl_label = 'Get Frames Per Second' arm_version = 1 - def init(self, context): - super(GetFPSNode, self).init(context) + def arm_init(self, context): self.add_output('ArmIntSocket', 'Count') diff --git a/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py b/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py index 1870da26..d2fe52b6 100644 --- a/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py +++ b/blender/arm/logicnode/miscellaneous/LN_get_window_resolution.py @@ -10,7 +10,6 @@ class WindowInfoNode(ArmLogicTreeNode): arm_section = 'screen' arm_version = 1 - def init(self, context): - super(WindowInfoNode, self).init(context) + def arm_init(self, context): self.add_output('ArmIntSocket', 'Width') self.add_output('ArmIntSocket', 'Height') diff --git a/blender/arm/logicnode/miscellaneous/LN_group_nodes.py b/blender/arm/logicnode/miscellaneous/LN_group_nodes.py index c8d8cdc9..8b08343b 100644 --- a/blender/arm/logicnode/miscellaneous/LN_group_nodes.py +++ b/blender/arm/logicnode/miscellaneous/LN_group_nodes.py @@ -7,6 +7,5 @@ class GroupOutputNode(ArmLogicTreeNode): arm_section = 'group' arm_version = 1 - def init(self, context): - super(GroupOutputNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') diff --git a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py index 56d64c89..4bbd4d12 100644 --- a/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py +++ b/blender/arm/logicnode/miscellaneous/LN_set_debug_console_settings.py @@ -13,8 +13,7 @@ class SetDebugConsoleSettings(ArmLogicTreeNode): ('right', 'Anchor Right', 'Anchor the debug console in the top right')], name='', default='right') - def init(self, context): - super(SetDebugConsoleSettings, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Visible') self.add_input('ArmFloatSocket', 'Scale') diff --git a/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py b/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py index 3cad6073..77bc3f59 100644 --- a/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py +++ b/blender/arm/logicnode/miscellaneous/LN_set_time_scale.py @@ -6,8 +6,7 @@ class SetTimeScaleNode(ArmLogicTreeNode): bl_label = 'Set Time Scale' arm_version = 1 - def init(self, context): - super(SetTimeScaleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'Scale', default_value=1.0) diff --git a/blender/arm/logicnode/miscellaneous/LN_sleep.py b/blender/arm/logicnode/miscellaneous/LN_sleep.py index 778bd260..884720e7 100644 --- a/blender/arm/logicnode/miscellaneous/LN_sleep.py +++ b/blender/arm/logicnode/miscellaneous/LN_sleep.py @@ -7,8 +7,7 @@ class SleepNode(ArmLogicTreeNode): bl_label = 'Sleep' arm_version = 1 - def init(self, context): - super(SleepNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'Time') diff --git a/blender/arm/logicnode/miscellaneous/LN_timer.py b/blender/arm/logicnode/miscellaneous/LN_timer.py index 0d9e8ce2..e19a36b8 100644 --- a/blender/arm/logicnode/miscellaneous/LN_timer.py +++ b/blender/arm/logicnode/miscellaneous/LN_timer.py @@ -6,8 +6,7 @@ class TimerNode(ArmLogicTreeNode): bl_label = 'Timer' arm_version = 1 - def init(self, context): - super(TimerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'Start') self.add_input('ArmNodeSocketAction', 'Pause') self.add_input('ArmNodeSocketAction', 'Stop') diff --git a/blender/arm/logicnode/native/LN_call_haxe_static.py b/blender/arm/logicnode/native/LN_call_haxe_static.py index 3b266d22..fd7e2c91 100644 --- a/blender/arm/logicnode/native/LN_call_haxe_static.py +++ b/blender/arm/logicnode/native/LN_call_haxe_static.py @@ -10,8 +10,7 @@ class CallHaxeStaticNode(ArmLogicTreeNode): arm_section = 'haxe' arm_version = 1 - def init(self, context): - super(CallHaxeStaticNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Function') diff --git a/blender/arm/logicnode/native/LN_detect_mobile_browser.py b/blender/arm/logicnode/native/LN_detect_mobile_browser.py index e2e7afed..4268ab0d 100644 --- a/blender/arm/logicnode/native/LN_detect_mobile_browser.py +++ b/blender/arm/logicnode/native/LN_detect_mobile_browser.py @@ -6,6 +6,5 @@ class DetectMobileBrowserNode(ArmLogicTreeNode): bl_label = 'Detect Mobile Browser' arm_version = 1 - def init(self, context): - super(DetectMobileBrowserNode, self).init(context) + def arm_init(self, context): self.add_output('ArmBoolSocket', 'Mobile') diff --git a/blender/arm/logicnode/native/LN_expression.py b/blender/arm/logicnode/native/LN_expression.py index 092612ed..843869fd 100644 --- a/blender/arm/logicnode/native/LN_expression.py +++ b/blender/arm/logicnode/native/LN_expression.py @@ -11,8 +11,7 @@ class ExpressionNode(ArmLogicTreeNode): property0: HaxeStringProperty('property0', name='', default='') - def init(self, context): - super(ExpressionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/native/LN_get_haxe_property.py b/blender/arm/logicnode/native/LN_get_haxe_property.py index 71d1db4e..2748a873 100644 --- a/blender/arm/logicnode/native/LN_get_haxe_property.py +++ b/blender/arm/logicnode/native/LN_get_haxe_property.py @@ -9,8 +9,7 @@ class GetHaxePropertyNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'haxe' - def init(self, context): - super(GetHaxePropertyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Dynamic') self.add_input('ArmStringSocket', 'Property') diff --git a/blender/arm/logicnode/native/LN_get_system_language.py b/blender/arm/logicnode/native/LN_get_system_language.py index 4c0af5e2..4dcb6cc5 100644 --- a/blender/arm/logicnode/native/LN_get_system_language.py +++ b/blender/arm/logicnode/native/LN_get_system_language.py @@ -7,6 +7,5 @@ class GetSystemLanguage(ArmLogicTreeNode): arm_section = 'Native' arm_version = 1 - def init(self, context): - super(GetSystemLanguage, self).init(context) + def arm_init(self, context): self.add_output('ArmStringSocket', 'Language') diff --git a/blender/arm/logicnode/native/LN_get_system_name.py b/blender/arm/logicnode/native/LN_get_system_name.py index 95f71053..6e08ac3e 100644 --- a/blender/arm/logicnode/native/LN_get_system_name.py +++ b/blender/arm/logicnode/native/LN_get_system_name.py @@ -8,8 +8,7 @@ class GetSystemName(ArmLogicTreeNode): arm_section = 'Native' arm_version = 1 - def init(self, context): - super(GetSystemName, self).init(context) + def arm_init(self, context): self.add_output('ArmStringSocket', 'System Name') self.add_output('ArmBoolSocket', 'Windows') self.add_output('ArmBoolSocket', 'Linux') diff --git a/blender/arm/logicnode/native/LN_loadUrl.py b/blender/arm/logicnode/native/LN_loadUrl.py index ee885e80..fbbed12b 100644 --- a/blender/arm/logicnode/native/LN_loadUrl.py +++ b/blender/arm/logicnode/native/LN_loadUrl.py @@ -6,7 +6,6 @@ class LoadUrlNode(ArmLogicTreeNode): bl_label = 'Load URL' arm_version = 1 - def init(self, context): - super(LoadUrlNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'URL') diff --git a/blender/arm/logicnode/native/LN_print.py b/blender/arm/logicnode/native/LN_print.py index 8c3310a2..8ba303d7 100644 --- a/blender/arm/logicnode/native/LN_print.py +++ b/blender/arm/logicnode/native/LN_print.py @@ -6,8 +6,7 @@ class PrintNode(ArmLogicTreeNode): bl_label = 'Print' arm_version = 1 - def init(self, context): - super(PrintNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/native/LN_read_file.py b/blender/arm/logicnode/native/LN_read_file.py index a42c269d..dae4805b 100644 --- a/blender/arm/logicnode/native/LN_read_file.py +++ b/blender/arm/logicnode/native/LN_read_file.py @@ -9,8 +9,7 @@ class ReadFileNode(ArmLogicTreeNode): arm_section = 'file' arm_version = 1 - def init(self, context): - super(ReadFileNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'File') self.add_input('ArmBoolSocket', 'Use cache', default_value=1) diff --git a/blender/arm/logicnode/native/LN_read_json.py b/blender/arm/logicnode/native/LN_read_json.py index 7bb6b04e..a48081fd 100644 --- a/blender/arm/logicnode/native/LN_read_json.py +++ b/blender/arm/logicnode/native/LN_read_json.py @@ -9,8 +9,7 @@ class ReadJsonNode(ArmLogicTreeNode): arm_section = 'file' arm_version = 1 - def init(self, context): - super(ReadJsonNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'File') self.add_input('ArmBoolSocket', 'Use cache', default_value=1) diff --git a/blender/arm/logicnode/native/LN_read_storage.py b/blender/arm/logicnode/native/LN_read_storage.py index 144c5bef..d8bd8bd8 100644 --- a/blender/arm/logicnode/native/LN_read_storage.py +++ b/blender/arm/logicnode/native/LN_read_storage.py @@ -9,8 +9,7 @@ class ReadStorageNode(ArmLogicTreeNode): arm_section = 'file' arm_version = 1 - def init(self, context): - super(ReadStorageNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Key') self.add_input('ArmStringSocket', 'Default') diff --git a/blender/arm/logicnode/native/LN_script.py b/blender/arm/logicnode/native/LN_script.py index 4d04ddc9..da0fb05d 100644 --- a/blender/arm/logicnode/native/LN_script.py +++ b/blender/arm/logicnode/native/LN_script.py @@ -17,8 +17,7 @@ class ScriptNode(ArmLogicTreeNode): property0_: HaxeStringProperty('property0', name='Text', default='') - def init(self, context): - super(ScriptNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketArray', 'Array') diff --git a/blender/arm/logicnode/native/LN_set_haxe_property.py b/blender/arm/logicnode/native/LN_set_haxe_property.py index 664fbc0a..bba925b3 100644 --- a/blender/arm/logicnode/native/LN_set_haxe_property.py +++ b/blender/arm/logicnode/native/LN_set_haxe_property.py @@ -9,8 +9,7 @@ class SetHaxePropertyNode(ArmLogicTreeNode): arm_section = 'haxe' arm_version = 1 - def init(self, context): - super(SetHaxePropertyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Dynamic') self.add_input('ArmStringSocket', 'Property') diff --git a/blender/arm/logicnode/native/LN_set_vibrate.py b/blender/arm/logicnode/native/LN_set_vibrate.py index bc340e96..17ba464c 100644 --- a/blender/arm/logicnode/native/LN_set_vibrate.py +++ b/blender/arm/logicnode/native/LN_set_vibrate.py @@ -8,8 +8,7 @@ class SetVibrateNode(ArmLogicTreeNode): arm_section = 'Native' arm_version = 1 - def init(self, context): - super(SetVibrateNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmIntSocket', 'Milliseconds') self.inputs[-1].default_value = 100 diff --git a/blender/arm/logicnode/native/LN_shutdown.py b/blender/arm/logicnode/native/LN_shutdown.py index 48b8587f..6292eafa 100644 --- a/blender/arm/logicnode/native/LN_shutdown.py +++ b/blender/arm/logicnode/native/LN_shutdown.py @@ -6,8 +6,7 @@ class ShutdownNode(ArmLogicTreeNode): bl_label = 'Shutdown' arm_version = 1 - def init(self, context): - super(ShutdownNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/native/LN_write_file.py b/blender/arm/logicnode/native/LN_write_file.py index 683cec21..2f5c4996 100644 --- a/blender/arm/logicnode/native/LN_write_file.py +++ b/blender/arm/logicnode/native/LN_write_file.py @@ -9,8 +9,7 @@ class WriteFileNode(ArmLogicTreeNode): arm_section = 'file' arm_version = 1 - def init(self, context): - super(WriteFileNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'File') self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/native/LN_write_json.py b/blender/arm/logicnode/native/LN_write_json.py index 1694e353..3feff3fa 100644 --- a/blender/arm/logicnode/native/LN_write_json.py +++ b/blender/arm/logicnode/native/LN_write_json.py @@ -9,8 +9,7 @@ class WriteJsonNode(ArmLogicTreeNode): arm_section = 'file' arm_version = 1 - def init(self, context): - super(WriteJsonNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'File') self.add_input('ArmDynamicSocket', 'Dynamic') diff --git a/blender/arm/logicnode/native/LN_write_storage.py b/blender/arm/logicnode/native/LN_write_storage.py index bc9a58b0..727cbca9 100644 --- a/blender/arm/logicnode/native/LN_write_storage.py +++ b/blender/arm/logicnode/native/LN_write_storage.py @@ -9,8 +9,7 @@ class WriteStorageNode(ArmLogicTreeNode): arm_section = 'file' arm_version = 1 - def init(self, context): - super(WriteStorageNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Key') self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/navmesh/LN_go_to_location.py b/blender/arm/logicnode/navmesh/LN_go_to_location.py index be97f2eb..7285c2cf 100644 --- a/blender/arm/logicnode/navmesh/LN_go_to_location.py +++ b/blender/arm/logicnode/navmesh/LN_go_to_location.py @@ -6,8 +6,7 @@ class GoToLocationNode(ArmLogicTreeNode): bl_label = 'Go to Location' arm_version = 1 - def init(self, context): - super(GoToLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Location') diff --git a/blender/arm/logicnode/navmesh/LN_navigable_location.py b/blender/arm/logicnode/navmesh/LN_navigable_location.py index f6850bbc..3e8b8f8b 100644 --- a/blender/arm/logicnode/navmesh/LN_navigable_location.py +++ b/blender/arm/logicnode/navmesh/LN_navigable_location.py @@ -6,6 +6,5 @@ class NavigableLocationNode(ArmLogicTreeNode): bl_label = 'Navigable Location' arm_version = 1 - def init(self, context): - super(NavigableLocationNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Location') diff --git a/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py b/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py index 063174c7..2ae40119 100644 --- a/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py +++ b/blender/arm/logicnode/navmesh/LN_pick_navmesh_location.py @@ -6,8 +6,7 @@ class PickLocationNode(ArmLogicTreeNode): bl_label = 'Pick NavMesh Location' arm_version = 1 - def init(self, context): - super(PickLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'NavMesh') self.add_input('ArmVectorSocket', 'Screen Coords') diff --git a/blender/arm/logicnode/navmesh/LN_stop_agent.py b/blender/arm/logicnode/navmesh/LN_stop_agent.py index d7740fcf..ff49fc9f 100644 --- a/blender/arm/logicnode/navmesh/LN_stop_agent.py +++ b/blender/arm/logicnode/navmesh/LN_stop_agent.py @@ -6,8 +6,7 @@ class StopAgentNode(ArmLogicTreeNode): bl_label = 'Stop Agent' arm_version = 1 - def init(self, context): - super(StopAgentNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/object/LN_get_distance.py b/blender/arm/logicnode/object/LN_get_distance.py index 13b6a5be..5885e890 100644 --- a/blender/arm/logicnode/object/LN_get_distance.py +++ b/blender/arm/logicnode/object/LN_get_distance.py @@ -9,8 +9,7 @@ class GetDistanceNode(ArmLogicTreeNode): bl_label = 'Get Distance' arm_version = 1 - def init(self, context): - super(GetDistanceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/object/LN_get_object_by_name.py b/blender/arm/logicnode/object/LN_get_object_by_name.py index 92c7220d..a19bdf06 100644 --- a/blender/arm/logicnode/object/LN_get_object_by_name.py +++ b/blender/arm/logicnode/object/LN_get_object_by_name.py @@ -5,13 +5,12 @@ from arm.logicnode.arm_nodes import * class GetObjectNode(ArmLogicTreeNode): """Searches for a object that uses the given name in the current active scene and returns it.""" - + bl_idname = 'LNGetObjectNode' bl_label = 'Get Object by Name' arm_version = 1 - def init(self, context): - super(GetObjectNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Name') self.add_output('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/object/LN_get_object_child.py b/blender/arm/logicnode/object/LN_get_object_child.py index 8ff69a55..76409006 100644 --- a/blender/arm/logicnode/object/LN_get_object_child.py +++ b/blender/arm/logicnode/object/LN_get_object_child.py @@ -16,8 +16,7 @@ class GetChildNode(ArmLogicTreeNode): ], name='', default='By Name') - def init(self, context): - super(GetChildNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Parent') self.add_input('ArmStringSocket', 'Child Name') diff --git a/blender/arm/logicnode/object/LN_get_object_children.py b/blender/arm/logicnode/object/LN_get_object_children.py index 2ccbcecb..a23bf33f 100644 --- a/blender/arm/logicnode/object/LN_get_object_children.py +++ b/blender/arm/logicnode/object/LN_get_object_children.py @@ -7,8 +7,7 @@ class GetChildrenNode(ArmLogicTreeNode): arm_section = 'relations' arm_version = 1 - def init(self, context): - super(GetChildrenNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Parent') self.add_output('ArmNodeSocketArray', 'Children') diff --git a/blender/arm/logicnode/object/LN_get_object_mesh.py b/blender/arm/logicnode/object/LN_get_object_mesh.py index 83d45e35..9339134e 100644 --- a/blender/arm/logicnode/object/LN_get_object_mesh.py +++ b/blender/arm/logicnode/object/LN_get_object_mesh.py @@ -7,8 +7,7 @@ class GetMeshNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): - super(GetMeshNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmDynamicSocket', 'Mesh') diff --git a/blender/arm/logicnode/object/LN_get_object_name.py b/blender/arm/logicnode/object/LN_get_object_name.py index e6938510..bb242d32 100644 --- a/blender/arm/logicnode/object/LN_get_object_name.py +++ b/blender/arm/logicnode/object/LN_get_object_name.py @@ -7,8 +7,7 @@ class GetNameNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): - super(GetNameNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmStringSocket', 'Name') diff --git a/blender/arm/logicnode/object/LN_get_object_offscreen.py b/blender/arm/logicnode/object/LN_get_object_offscreen.py index 1eb38bd8..6bd85f8b 100644 --- a/blender/arm/logicnode/object/LN_get_object_offscreen.py +++ b/blender/arm/logicnode/object/LN_get_object_offscreen.py @@ -7,8 +7,7 @@ class GetObjectOffscreenNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): - super(GetObjectOffscreenNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmNodeSocketObject', 'Object') self.outputs.new('ArmBoolSocket', 'Is Object Offscreen') diff --git a/blender/arm/logicnode/object/LN_get_object_parent.py b/blender/arm/logicnode/object/LN_get_object_parent.py index d856d008..5ca239a6 100644 --- a/blender/arm/logicnode/object/LN_get_object_parent.py +++ b/blender/arm/logicnode/object/LN_get_object_parent.py @@ -9,8 +9,7 @@ class GetParentNode(ArmLogicTreeNode): arm_section = 'relations' arm_version = 1 - def init(self, context): - super(GetParentNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Child') self.add_output('ArmNodeSocketObject', 'Parent') diff --git a/blender/arm/logicnode/object/LN_get_object_property.py b/blender/arm/logicnode/object/LN_get_object_property.py index ecd62857..3332677b 100644 --- a/blender/arm/logicnode/object/LN_get_object_property.py +++ b/blender/arm/logicnode/object/LN_get_object_property.py @@ -9,8 +9,7 @@ class GetPropertyNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'props' - def init(self, context): - super(GetPropertyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Property') diff --git a/blender/arm/logicnode/object/LN_get_object_visible.py b/blender/arm/logicnode/object/LN_get_object_visible.py index 0f3e1b1c..e01cbf57 100644 --- a/blender/arm/logicnode/object/LN_get_object_visible.py +++ b/blender/arm/logicnode/object/LN_get_object_visible.py @@ -10,8 +10,7 @@ class GetVisibleNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): - super(GetVisibleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmBoolSocket', 'Is Object Visible') diff --git a/blender/arm/logicnode/object/LN_mesh.py b/blender/arm/logicnode/object/LN_mesh.py index cefcca05..3f05dda2 100644 --- a/blender/arm/logicnode/object/LN_mesh.py +++ b/blender/arm/logicnode/object/LN_mesh.py @@ -11,8 +11,7 @@ class MeshNode(ArmLogicTreeNode): property0_get: HaxePointerProperty('property0_get', name='', type=bpy.types.Mesh) - def init(self, context): - super(MeshNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Mesh', is_var=True) def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/object/LN_object.py b/blender/arm/logicnode/object/LN_object.py index 3992bb40..8b9b0636 100644 --- a/blender/arm/logicnode/object/LN_object.py +++ b/blender/arm/logicnode/object/LN_object.py @@ -6,8 +6,7 @@ class ObjectNode(ArmLogicTreeNode): bl_label = 'Object' arm_version = 1 - def init(self, context): - super(ObjectNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object In') self.add_output('ArmNodeSocketObject', 'Object Out', is_var=True) diff --git a/blender/arm/logicnode/object/LN_remove_object.py b/blender/arm/logicnode/object/LN_remove_object.py index 7783da82..78d0f956 100644 --- a/blender/arm/logicnode/object/LN_remove_object.py +++ b/blender/arm/logicnode/object/LN_remove_object.py @@ -6,8 +6,7 @@ class RemoveObjectNode(ArmLogicTreeNode): bl_label = 'Remove Object' arm_version = 1 - def init(self, context): - super(RemoveObjectNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/object/LN_remove_object_parent.py b/blender/arm/logicnode/object/LN_remove_object_parent.py index cbfdb84a..80439051 100644 --- a/blender/arm/logicnode/object/LN_remove_object_parent.py +++ b/blender/arm/logicnode/object/LN_remove_object_parent.py @@ -7,8 +7,7 @@ class ClearParentNode(ArmLogicTreeNode): arm_section = 'relations' arm_version = 1 - def init(self, context): - super(ClearParentNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmBoolSocket', 'Keep Transform', default_value=True) diff --git a/blender/arm/logicnode/object/LN_self_object.py b/blender/arm/logicnode/object/LN_self_object.py index aa4021ca..0dcbd0d0 100644 --- a/blender/arm/logicnode/object/LN_self_object.py +++ b/blender/arm/logicnode/object/LN_self_object.py @@ -6,6 +6,5 @@ class SelfObjectNode(ArmLogicTreeNode): bl_label = 'Self Object' arm_version = 1 - def init(self, context): - super(SelfObjectNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/object/LN_set_object_mesh.py b/blender/arm/logicnode/object/LN_set_object_mesh.py index 601f36ae..114e0078 100644 --- a/blender/arm/logicnode/object/LN_set_object_mesh.py +++ b/blender/arm/logicnode/object/LN_set_object_mesh.py @@ -7,8 +7,7 @@ class SetMeshNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): - super(SetMeshNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Mesh') diff --git a/blender/arm/logicnode/object/LN_set_object_name.py b/blender/arm/logicnode/object/LN_set_object_name.py index 05f20794..236e25b6 100644 --- a/blender/arm/logicnode/object/LN_set_object_name.py +++ b/blender/arm/logicnode/object/LN_set_object_name.py @@ -7,8 +7,7 @@ class SetNameNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): - super(SetNameNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Name') diff --git a/blender/arm/logicnode/object/LN_set_object_parent.py b/blender/arm/logicnode/object/LN_set_object_parent.py index 30b50d1a..c5e425ee 100644 --- a/blender/arm/logicnode/object/LN_set_object_parent.py +++ b/blender/arm/logicnode/object/LN_set_object_parent.py @@ -9,8 +9,7 @@ class SetParentNode(ArmLogicTreeNode): arm_section = 'relations' arm_version = 1 - def init(self, context): - super(SetParentNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmNodeSocketObject', 'Parent', default_value='Parent') diff --git a/blender/arm/logicnode/object/LN_set_object_property.py b/blender/arm/logicnode/object/LN_set_object_property.py index b41494fa..326beb2f 100644 --- a/blender/arm/logicnode/object/LN_set_object_property.py +++ b/blender/arm/logicnode/object/LN_set_object_property.py @@ -14,8 +14,7 @@ class SetPropertyNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): - super(SetPropertyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Property') diff --git a/blender/arm/logicnode/object/LN_set_object_visible.py b/blender/arm/logicnode/object/LN_set_object_visible.py index 53e354a6..09107e9e 100644 --- a/blender/arm/logicnode/object/LN_set_object_visible.py +++ b/blender/arm/logicnode/object/LN_set_object_visible.py @@ -17,8 +17,7 @@ class SetVisibleNode(ArmLogicTreeNode): ], name='', default='object') - def init(self, context): - super(SetVisibleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmBoolSocket', 'Visible') diff --git a/blender/arm/logicnode/object/LN_spawn_object.py b/blender/arm/logicnode/object/LN_spawn_object.py index 49097d86..de4ff22f 100644 --- a/blender/arm/logicnode/object/LN_spawn_object.py +++ b/blender/arm/logicnode/object/LN_spawn_object.py @@ -2,13 +2,12 @@ from arm.logicnode.arm_nodes import * class SpawnObjectNode(ArmLogicTreeNode): """Spawns the given object if present in the current active scene. The spawned object has the same name of its instance, but they are treated as different objects.""" - + bl_idname = 'LNSpawnObjectNode' bl_label = 'Spawn Object' arm_version = 1 - def init(self, context): - super(SpawnObjectNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/object/LN_spawn_object_by_name.py b/blender/arm/logicnode/object/LN_spawn_object_by_name.py index bd629b21..3fed2d76 100644 --- a/blender/arm/logicnode/object/LN_spawn_object_by_name.py +++ b/blender/arm/logicnode/object/LN_spawn_object_by_name.py @@ -11,8 +11,7 @@ class SpawnObjectByNameNode(ArmLogicTreeNode): type=bpy.types.Scene, name='Scene', description='The scene from which to take the object') - def init(self, context): - super(SpawnObjectByNameNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Name') self.add_input('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/physics/LN_Add_rigid_body.py b/blender/arm/logicnode/physics/LN_Add_rigid_body.py index 7376c096..97fa8e80 100644 --- a/blender/arm/logicnode/physics/LN_Add_rigid_body.py +++ b/blender/arm/logicnode/physics/LN_Add_rigid_body.py @@ -78,8 +78,7 @@ class AddRigidBodyNode(ArmLogicTreeNode): ('Mesh', 'Mesh', 'Mesh')], name='Shape', default='Box') - def init(self, context): - super(AddRigidBodyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/physics/LN_add_physics_constraint.py b/blender/arm/logicnode/physics/LN_add_physics_constraint.py index 89c2d1e0..192fd804 100644 --- a/blender/arm/logicnode/physics/LN_add_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_add_physics_constraint.py @@ -137,8 +137,7 @@ class AddPhysicsConstraintNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super(AddPhysicsConstraintNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Pivot Object') self.add_input('ArmNodeSocketObject', 'RB 1') diff --git a/blender/arm/logicnode/physics/LN_apply_force.py b/blender/arm/logicnode/physics/LN_apply_force.py index bfe29b07..20aba1b1 100644 --- a/blender/arm/logicnode/physics/LN_apply_force.py +++ b/blender/arm/logicnode/physics/LN_apply_force.py @@ -16,8 +16,7 @@ class ApplyForceNode(ArmLogicTreeNode): arm_section = 'force' arm_version = 1 - def init(self, context): - super(ApplyForceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmVectorSocket', 'Force') diff --git a/blender/arm/logicnode/physics/LN_apply_force_at_location.py b/blender/arm/logicnode/physics/LN_apply_force_at_location.py index 7a9de48e..145627f4 100644 --- a/blender/arm/logicnode/physics/LN_apply_force_at_location.py +++ b/blender/arm/logicnode/physics/LN_apply_force_at_location.py @@ -19,8 +19,7 @@ class ApplyForceAtLocationNode(ArmLogicTreeNode): arm_section = 'force' arm_version = 1 - def init(self, context): - super(ApplyForceAtLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmVectorSocket', 'Force') diff --git a/blender/arm/logicnode/physics/LN_apply_impulse.py b/blender/arm/logicnode/physics/LN_apply_impulse.py index ad41b870..68c2006d 100644 --- a/blender/arm/logicnode/physics/LN_apply_impulse.py +++ b/blender/arm/logicnode/physics/LN_apply_impulse.py @@ -16,8 +16,7 @@ class ApplyImpulseNode(ArmLogicTreeNode): arm_section = 'force' arm_version = 1 - def init(self, context): - super(ApplyImpulseNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmVectorSocket', 'Impulse') diff --git a/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py b/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py index 54a9c0ef..24d55a6d 100644 --- a/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py +++ b/blender/arm/logicnode/physics/LN_apply_impulse_at_location.py @@ -19,8 +19,7 @@ class ApplyImpulseAtLocationNode(ArmLogicTreeNode): arm_section = 'force' arm_version = 1 - def init(self, context): - super(ApplyImpulseAtLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmVectorSocket', 'Impulse') diff --git a/blender/arm/logicnode/physics/LN_apply_torque.py b/blender/arm/logicnode/physics/LN_apply_torque.py index 7e00d966..70d2633e 100644 --- a/blender/arm/logicnode/physics/LN_apply_torque.py +++ b/blender/arm/logicnode/physics/LN_apply_torque.py @@ -7,8 +7,7 @@ class ApplyTorqueNode(ArmLogicTreeNode): arm_section = 'force' arm_version = 1 - def init(self, context): - super(ApplyTorqueNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmVectorSocket', 'Torque') diff --git a/blender/arm/logicnode/physics/LN_apply_torque_impulse.py b/blender/arm/logicnode/physics/LN_apply_torque_impulse.py index 91662926..2bf208c2 100644 --- a/blender/arm/logicnode/physics/LN_apply_torque_impulse.py +++ b/blender/arm/logicnode/physics/LN_apply_torque_impulse.py @@ -7,8 +7,7 @@ class ApplyTorqueImpulseNode(ArmLogicTreeNode): arm_section = 'force' arm_version = 1 - def init(self, context): - super(ApplyTorqueImpulseNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmVectorSocket', 'Torque') diff --git a/blender/arm/logicnode/physics/LN_get_rb_contacts.py b/blender/arm/logicnode/physics/LN_get_rb_contacts.py index fd1cf788..9f63fae5 100644 --- a/blender/arm/logicnode/physics/LN_get_rb_contacts.py +++ b/blender/arm/logicnode/physics/LN_get_rb_contacts.py @@ -11,8 +11,7 @@ class GetContactsNode(ArmLogicTreeNode): arm_section = 'contact' arm_version = 1 - def init(self, context): - super(GetContactsNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'RB') self.add_output('ArmNodeSocketArray', 'Contacts') diff --git a/blender/arm/logicnode/physics/LN_get_rb_first_contact.py b/blender/arm/logicnode/physics/LN_get_rb_first_contact.py index 9781c184..ea8ea7af 100644 --- a/blender/arm/logicnode/physics/LN_get_rb_first_contact.py +++ b/blender/arm/logicnode/physics/LN_get_rb_first_contact.py @@ -10,8 +10,7 @@ class GetFirstContactNode(ArmLogicTreeNode): arm_section = 'contact' arm_version = 1 - def init(self, context): - super(GetFirstContactNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'RB') self.add_output('ArmNodeSocketObject', 'First Contact') diff --git a/blender/arm/logicnode/physics/LN_get_rb_velocity.py b/blender/arm/logicnode/physics/LN_get_rb_velocity.py index 33269ccb..18dcadeb 100644 --- a/blender/arm/logicnode/physics/LN_get_rb_velocity.py +++ b/blender/arm/logicnode/physics/LN_get_rb_velocity.py @@ -6,8 +6,7 @@ class GetVelocityNode(ArmLogicTreeNode): bl_label = 'Get RB Velocity' arm_version = 1 - def init(self, context): - super(GetVelocityNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmBoolSocket', 'Linear On Local Axis') self.add_input('ArmBoolSocket', 'Angular On Local Axis') diff --git a/blender/arm/logicnode/physics/LN_get_world_gravity.py b/blender/arm/logicnode/physics/LN_get_world_gravity.py index fe810eec..0fb4aec8 100644 --- a/blender/arm/logicnode/physics/LN_get_world_gravity.py +++ b/blender/arm/logicnode/physics/LN_get_world_gravity.py @@ -9,6 +9,5 @@ class GetGravityNode(ArmLogicTreeNode): bl_label = 'Get World Gravity' arm_version = 1 - def init(self, context): - super(GetGravityNode, self).init(context) + def arm_init(self, context): self.add_output('ArmVectorSocket', 'World Gravity') diff --git a/blender/arm/logicnode/physics/LN_has_contact.py b/blender/arm/logicnode/physics/LN_has_contact.py index 4bd2151f..627180e3 100644 --- a/blender/arm/logicnode/physics/LN_has_contact.py +++ b/blender/arm/logicnode/physics/LN_has_contact.py @@ -7,8 +7,7 @@ class HasContactNode(ArmLogicTreeNode): arm_section = 'contact' arm_version = 1 - def init(self, context): - super(HasContactNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'RB 1') self.add_input('ArmNodeSocketObject', 'RB 2') diff --git a/blender/arm/logicnode/physics/LN_has_contact_array.py b/blender/arm/logicnode/physics/LN_has_contact_array.py index e64d342e..a7a6b759 100644 --- a/blender/arm/logicnode/physics/LN_has_contact_array.py +++ b/blender/arm/logicnode/physics/LN_has_contact_array.py @@ -7,8 +7,7 @@ class HasContactArrayNode(ArmLogicTreeNode): arm_section = 'contact' arm_version = 1 - def init(self, context): - super(HasContactArrayNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmNodeSocketArray', 'RBs') diff --git a/blender/arm/logicnode/physics/LN_on_contact.py b/blender/arm/logicnode/physics/LN_on_contact.py index a96feb01..8ca26aab 100644 --- a/blender/arm/logicnode/physics/LN_on_contact.py +++ b/blender/arm/logicnode/physics/LN_on_contact.py @@ -23,8 +23,7 @@ class OnContactNode(ArmLogicTreeNode): ('end', 'End', 'The contact between the rigid bodies ends')], name='', default='begin') - def init(self, context): - super(OnContactNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'RB 1') self.add_input('ArmNodeSocketObject', 'RB 2') diff --git a/blender/arm/logicnode/physics/LN_on_contact_array.py b/blender/arm/logicnode/physics/LN_on_contact_array.py index 9a35acf1..c39a6ad2 100644 --- a/blender/arm/logicnode/physics/LN_on_contact_array.py +++ b/blender/arm/logicnode/physics/LN_on_contact_array.py @@ -14,8 +14,7 @@ class OnContactArrayNode(ArmLogicTreeNode): ('end', 'End', 'The contact between the rigid bodies ends')], name='', default='begin') - def init(self, context): - super(OnContactArrayNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmNodeSocketArray', 'RBs') diff --git a/blender/arm/logicnode/physics/LN_on_volume_trigger.py b/blender/arm/logicnode/physics/LN_on_volume_trigger.py index 614a7e8f..0c4cf2d5 100644 --- a/blender/arm/logicnode/physics/LN_on_volume_trigger.py +++ b/blender/arm/logicnode/physics/LN_on_volume_trigger.py @@ -17,8 +17,7 @@ class OnVolumeTriggerNode(ArmLogicTreeNode): ('end', 'End', 'The contact between the rigid bodies ends')], name='', default='begin') - def init(self, context): - super(OnVolumeTriggerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object 1') self.add_input('ArmNodeSocketObject', 'Object 2') diff --git a/blender/arm/logicnode/physics/LN_physics_constraint.py b/blender/arm/logicnode/physics/LN_physics_constraint.py index d4d1c539..f8aafce9 100644 --- a/blender/arm/logicnode/physics/LN_physics_constraint.py +++ b/blender/arm/logicnode/physics/LN_physics_constraint.py @@ -51,8 +51,7 @@ class PhysicsConstraintNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super(PhysicsConstraintNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Lower limit') self.add_input('ArmFloatSocket', 'Upper limit') self.add_output('ArmDynamicSocket', 'Constraint') diff --git a/blender/arm/logicnode/physics/LN_pick_rb.py b/blender/arm/logicnode/physics/LN_pick_rb.py index 65e34f54..25d926b0 100644 --- a/blender/arm/logicnode/physics/LN_pick_rb.py +++ b/blender/arm/logicnode/physics/LN_pick_rb.py @@ -3,14 +3,14 @@ from arm.logicnode.arm_nodes import * class PickObjectNode(ArmLogicTreeNode): """Picks the rigid body in the given location using the screen coordinates (2D). - + @seeNode Mask - - @input Screen Coords: the location at which to pick, in screen + + @input Screen Coords: the location at which to pick, in screen coordinates @input Mask: a bit mask value to specify which objects are considered - + @output RB: the object that was hit @output Hit: the hit position in world coordinates """ @@ -19,8 +19,7 @@ class PickObjectNode(ArmLogicTreeNode): arm_section = 'ray' arm_version = 1 - def init(self, context): - super(PickObjectNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Screen Coords') self.add_input('ArmIntSocket', 'Mask', default_value=1) diff --git a/blender/arm/logicnode/physics/LN_ray_cast.py b/blender/arm/logicnode/physics/LN_ray_cast.py index 79995333..1fa4401a 100644 --- a/blender/arm/logicnode/physics/LN_ray_cast.py +++ b/blender/arm/logicnode/physics/LN_ray_cast.py @@ -22,8 +22,7 @@ class RayCastNode(ArmLogicTreeNode): arm_section = 'ray' arm_version = 1 - def init(self, context): - super(RayCastNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'From') self.add_input('ArmVectorSocket', 'To') self.add_input('ArmIntSocket', 'Mask', default_value=1) diff --git a/blender/arm/logicnode/physics/LN_remove_rb.py b/blender/arm/logicnode/physics/LN_remove_rb.py index 158493ae..7c05c68e 100644 --- a/blender/arm/logicnode/physics/LN_remove_rb.py +++ b/blender/arm/logicnode/physics/LN_remove_rb.py @@ -6,8 +6,7 @@ class RemovePhysicsNode (ArmLogicTreeNode): bl_label = 'Remove RB' arm_version = 1 - def init(self, context): - super(RemovePhysicsNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmNodeSocketAction', 'In') self.inputs.new('ArmNodeSocketObject', 'RB') diff --git a/blender/arm/logicnode/physics/LN_set_rb_activation_state.py b/blender/arm/logicnode/physics/LN_set_rb_activation_state.py index 120ead99..63eaec4c 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_activation_state.py +++ b/blender/arm/logicnode/physics/LN_set_rb_activation_state.py @@ -16,8 +16,7 @@ class SetActivationStateNode(ArmLogicTreeNode): ], name='', default='inactive') - def init(self, context): - super(SetActivationStateNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmNodeSocketAction', 'In') self.inputs.new('ArmNodeSocketObject', 'RB') diff --git a/blender/arm/logicnode/physics/LN_set_rb_friction.py b/blender/arm/logicnode/physics/LN_set_rb_friction.py index c2267732..7efdcd79 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_friction.py +++ b/blender/arm/logicnode/physics/LN_set_rb_friction.py @@ -7,8 +7,7 @@ class SetFrictionNode (ArmLogicTreeNode): bl_icon = 'NONE' arm_version = 1 - def init(self, context): - super(SetFrictionNode, self).init(context) + def arm_init(self, context): self.inputs.new('ArmNodeSocketAction', 'In') self.inputs.new('ArmNodeSocketObject', 'RB') self.inputs.new('ArmFloatSocket', 'Friction') diff --git a/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py b/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py index 73f0405d..27a576a1 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py +++ b/blender/arm/logicnode/physics/LN_set_rb_gravity_enabled.py @@ -6,8 +6,7 @@ class SetGravityEnabledNode(ArmLogicTreeNode): bl_label = 'Set RB Gravity Enabled' arm_version = 1 - def init(self, context): - super(SetGravityEnabledNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmBoolSocket', 'Enabled') diff --git a/blender/arm/logicnode/physics/LN_set_rb_velocity.py b/blender/arm/logicnode/physics/LN_set_rb_velocity.py index 48e95bbc..21980ae8 100644 --- a/blender/arm/logicnode/physics/LN_set_rb_velocity.py +++ b/blender/arm/logicnode/physics/LN_set_rb_velocity.py @@ -6,8 +6,7 @@ class SetVelocityNode(ArmLogicTreeNode): bl_label = 'Set RB Velocity' arm_version = 1 - def init(self, context): - super(SetVelocityNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'RB') self.add_input('ArmVectorSocket', 'Linear') diff --git a/blender/arm/logicnode/physics/LN_set_world_gravity.py b/blender/arm/logicnode/physics/LN_set_world_gravity.py index e8646994..f8923b29 100644 --- a/blender/arm/logicnode/physics/LN_set_world_gravity.py +++ b/blender/arm/logicnode/physics/LN_set_world_gravity.py @@ -9,8 +9,7 @@ class SetGravityNode(ArmLogicTreeNode): bl_label = 'Set World Gravity' arm_version = 1 - def init(self, context): - super(SetGravityNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmVectorSocket', 'Gravity') diff --git a/blender/arm/logicnode/physics/LN_volume_trigger.py b/blender/arm/logicnode/physics/LN_volume_trigger.py index fab5aa3c..af438c32 100644 --- a/blender/arm/logicnode/physics/LN_volume_trigger.py +++ b/blender/arm/logicnode/physics/LN_volume_trigger.py @@ -19,8 +19,7 @@ class VolumeTriggerNode(ArmLogicTreeNode): ('end', 'End', 'The contact between the rigid bodies ends')], name='', default='begin') - def init(self, context): - super(VolumeTriggerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object 1') self.add_input('ArmNodeSocketObject', 'Object 2') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py index 5cf34dda..f5f61d73 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_global_node.py @@ -7,8 +7,7 @@ class ColorgradingGetGlobalNode(ArmLogicTreeNode): arm_section = 'colorgrading' arm_version = 1 - def init(self, context): - super(ColorgradingGetGlobalNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'Whitebalance') self.add_output('ArmVectorSocket', 'Tint') self.add_output('ArmVectorSocket', 'Saturation') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py index 583fe71b..c4f16f9f 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_highlight_node.py @@ -7,8 +7,7 @@ class ColorgradingGetHighlightNode(ArmLogicTreeNode): arm_section = 'colorgrading' arm_version = 1 - def init(self, context): - super(ColorgradingGetHighlightNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'HightlightMin') self.add_output('ArmVectorSocket', 'Saturation') self.add_output('ArmVectorSocket', 'Contrast') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py index cd8d860d..29bab2c2 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_midtone_node.py @@ -7,8 +7,7 @@ class ColorgradingGetMidtoneNode(ArmLogicTreeNode): arm_section = 'colorgrading' arm_version = 1 - def init(self, context): - super(ColorgradingGetMidtoneNode, self).init(context) + def arm_init(self, context): self.add_output('ArmVectorSocket', 'Saturation') self.add_output('ArmVectorSocket', 'Contrast') self.add_output('ArmVectorSocket', 'Gamma') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py index 16c96cb6..06130071 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_get_shadow_node.py @@ -7,8 +7,7 @@ class ColorgradingGetShadowNode(ArmLogicTreeNode): arm_section = 'colorgrading' arm_version = 1 - def init(self, context): - super(ColorgradingGetShadowNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'ShadowMax') self.add_output('ArmVectorSocket', 'Saturation') self.add_output('ArmVectorSocket', 'Contrast') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py index c9258bb6..c4746472 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py @@ -62,8 +62,7 @@ class ColorgradingSetGlobalNode(ArmLogicTreeNode): def draw_nodes_colorwheel(self, context): pass - def init(self, context): - super(ColorgradingSetGlobalNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') self.draw_nodes_uniform(context) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py index bc775851..f8a801cb 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py @@ -60,8 +60,7 @@ class ColorgradingSetHighlightNode(ArmLogicTreeNode): def draw_nodes_colorwheel(self, context): pass - def init(self, context): - super(ColorgradingSetHighlightNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') self.draw_nodes_uniform(context) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py index 14dcdbdf..8d8379cb 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py @@ -59,8 +59,7 @@ class ColorgradingSetMidtoneNode(ArmLogicTreeNode): def draw_nodes_colorwheel(self, context): pass - def init(self, context): - super(ColorgradingSetMidtoneNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') self.draw_nodes_uniform(context) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py index a3abd236..84fa8956 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py @@ -60,8 +60,7 @@ class ColorgradingSetShadowNode(ArmLogicTreeNode): def draw_nodes_colorwheel(self, context): pass - def init(self, context): - super(ColorgradingSetShadowNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') self.draw_nodes_uniform(context) diff --git a/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py b/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py index 744e7721..4dd36c42 100644 --- a/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_bloom_settings.py @@ -6,8 +6,7 @@ class BloomGetNode(ArmLogicTreeNode): bl_label = 'Get Bloom Settings' arm_version = 1 - def init(self, context): - super(BloomGetNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'Threshold') self.add_output('ArmFloatSocket', 'Strength') self.add_output('ArmFloatSocket', 'Radius') diff --git a/blender/arm/logicnode/postprocess/LN_get_ca_settings.py b/blender/arm/logicnode/postprocess/LN_get_ca_settings.py index 51fb624d..f4064fb4 100644 --- a/blender/arm/logicnode/postprocess/LN_get_ca_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_ca_settings.py @@ -6,7 +6,6 @@ class ChromaticAberrationGetNode(ArmLogicTreeNode): bl_label = 'Get CA Settings' arm_version = 1 - def init(self, context): - super(ChromaticAberrationGetNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'Strength') self.add_output('ArmFloatSocket', 'Samples') diff --git a/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py b/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py index 71906eae..786cee06 100644 --- a/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py +++ b/blender/arm/logicnode/postprocess/LN_get_camera_post_process.py @@ -6,8 +6,7 @@ class CameraGetNode(ArmLogicTreeNode): bl_label = 'Get Camera Post Process' arm_version = 1 - def init(self, context): - super(CameraGetNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'F-Stop') self.add_output('ArmFloatSocket', 'Shutter Time') self.add_output('ArmFloatSocket', 'ISO') diff --git a/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py b/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py index fd93f516..8ffa9a3d 100644 --- a/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_lenstexture_settings.py @@ -6,8 +6,7 @@ class LenstextureGetNode(ArmLogicTreeNode): bl_label = 'Get Lenstexture Settings' arm_version = 1 - def init(self, context): - super(LenstextureGetNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'Center Min Clip') self.add_output('ArmFloatSocket', 'Center Max Clip') self.add_output('ArmFloatSocket', 'Luminance Min') diff --git a/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py b/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py index 7208d123..d263ae60 100644 --- a/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_ssao_settings.py @@ -6,8 +6,7 @@ class SSAOGetNode(ArmLogicTreeNode): bl_label = 'Get SSAO Settings' arm_version = 1 - def init(self, context): - super(SSAOGetNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'Radius') self.add_output('ArmFloatSocket', 'Strength') self.add_output('ArmFloatSocket', 'Max Steps') diff --git a/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py b/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py index 69ac4405..684685c9 100644 --- a/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py +++ b/blender/arm/logicnode/postprocess/LN_get_ssr_settings.py @@ -6,8 +6,7 @@ class SSRGetNode(ArmLogicTreeNode): bl_label = 'Get SSR Settings' arm_version = 1 - def init(self, context): - super(SSRGetNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'SSR Step') self.add_output('ArmFloatSocket', 'SSR Step Min') self.add_output('ArmFloatSocket', 'SSR Search') diff --git a/blender/arm/logicnode/postprocess/LN_lenstexture_set.py b/blender/arm/logicnode/postprocess/LN_lenstexture_set.py index 4ee7380f..53698ccd 100644 --- a/blender/arm/logicnode/postprocess/LN_lenstexture_set.py +++ b/blender/arm/logicnode/postprocess/LN_lenstexture_set.py @@ -6,8 +6,7 @@ class LenstextureSetNode(ArmLogicTreeNode): bl_label = 'Set Lenstexture' arm_version = 1 - def init(self, context): - super(LenstextureSetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'Center Min Clip', default_value=0.1) self.add_input('ArmFloatSocket', 'Center Max Clip', default_value=0.5) diff --git a/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py b/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py index 90c8d5a3..7c463480 100644 --- a/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_bloom_settings.py @@ -6,8 +6,7 @@ class BloomSetNode(ArmLogicTreeNode): bl_label = 'Set Bloom Settings' arm_version = 1 - def init(self, context): - super(BloomSetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'Threshold', default_value=1.00) self.add_input('ArmFloatSocket', 'Strength', default_value=3.50) diff --git a/blender/arm/logicnode/postprocess/LN_set_ca_settings.py b/blender/arm/logicnode/postprocess/LN_set_ca_settings.py index be459419..5031cd0a 100644 --- a/blender/arm/logicnode/postprocess/LN_set_ca_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_ca_settings.py @@ -6,8 +6,7 @@ class ChromaticAberrationSetNode(ArmLogicTreeNode): bl_label = 'Set CA Settings' arm_version = 1 - def init(self, context): - super(ChromaticAberrationSetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'Strength', default_value=2.0) self.add_input('ArmIntSocket', 'Samples', default_value=32) diff --git a/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py b/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py index e589b6c9..e6a59bc4 100644 --- a/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py +++ b/blender/arm/logicnode/postprocess/LN_set_camera_post_process.py @@ -6,8 +6,7 @@ class CameraSetNode(ArmLogicTreeNode): bl_label = 'Set Camera Post Process' arm_version = 1 - def init(self, context): - super(CameraSetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'F-stop', default_value=2.0) self.add_input('ArmFloatSocket', 'Shutter Time', default_value=1.0) diff --git a/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py b/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py index 386e980b..e401b955 100644 --- a/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_ssao_settings.py @@ -6,8 +6,7 @@ class SSAOSetNode(ArmLogicTreeNode): bl_label = 'Set SSAO Settings' arm_version = 1 - def init(self, context): - super(SSAOSetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'Radius', default_value=1.0) self.add_input('ArmFloatSocket', 'Strength', default_value=5.0) diff --git a/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py b/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py index fd6bb111..9e3da739 100644 --- a/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py +++ b/blender/arm/logicnode/postprocess/LN_set_ssr_settings.py @@ -6,8 +6,7 @@ class SSRSetNode(ArmLogicTreeNode): bl_label = 'Set SSR Settings' arm_version = 1 - def init(self, context): - super(SSRSetNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmFloatSocket', 'SSR Step', default_value=0.04) self.add_input('ArmFloatSocket', 'SSR Step Min', default_value=0.05) diff --git a/blender/arm/logicnode/random/LN_random_boolean.py b/blender/arm/logicnode/random/LN_random_boolean.py index 039a2c91..1a2f46b3 100644 --- a/blender/arm/logicnode/random/LN_random_boolean.py +++ b/blender/arm/logicnode/random/LN_random_boolean.py @@ -7,6 +7,5 @@ class RandomBooleanNode(ArmLogicTreeNode): bl_label = 'Random Boolean' arm_version = 1 - def init(self, context): - super(RandomBooleanNode, self).init(context) + def arm_init(self, context): self.add_output('ArmBoolSocket', 'Bool') diff --git a/blender/arm/logicnode/random/LN_random_choice.py b/blender/arm/logicnode/random/LN_random_choice.py index ee273513..7ba4749a 100644 --- a/blender/arm/logicnode/random/LN_random_choice.py +++ b/blender/arm/logicnode/random/LN_random_choice.py @@ -7,8 +7,7 @@ class RandomChoiceNode(ArmLogicTreeNode): bl_label = 'Random Choice' arm_version = 1 - def init(self, context): - super().init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketArray', 'Array') self.add_output('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/random/LN_random_color.py b/blender/arm/logicnode/random/LN_random_color.py index 38c36442..9d142b15 100644 --- a/blender/arm/logicnode/random/LN_random_color.py +++ b/blender/arm/logicnode/random/LN_random_color.py @@ -7,6 +7,5 @@ class RandomColorNode(ArmLogicTreeNode): bl_label = 'Random Color' arm_version = 1 - def init(self, context): - super(RandomColorNode, self).init(context) + def arm_init(self, context): self.add_output('ArmColorSocket', 'Color') diff --git a/blender/arm/logicnode/random/LN_random_float.py b/blender/arm/logicnode/random/LN_random_float.py index 22dca241..7bb08dde 100644 --- a/blender/arm/logicnode/random/LN_random_float.py +++ b/blender/arm/logicnode/random/LN_random_float.py @@ -7,8 +7,7 @@ class RandomFloatNode(ArmLogicTreeNode): bl_label = 'Random Float' arm_version = 1 - def init(self, context): - super(RandomFloatNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Min') self.add_input('ArmFloatSocket', 'Max', default_value=1.0) # self.add_input('ArmIntSocket', 'Seed') diff --git a/blender/arm/logicnode/random/LN_random_integer.py b/blender/arm/logicnode/random/LN_random_integer.py index 0b69d5a7..166a2f0a 100644 --- a/blender/arm/logicnode/random/LN_random_integer.py +++ b/blender/arm/logicnode/random/LN_random_integer.py @@ -7,8 +7,7 @@ class RandomIntegerNode(ArmLogicTreeNode): bl_label = 'Random Integer' arm_version = 1 - def init(self, context): - super(RandomIntegerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmIntSocket', 'Min') self.add_input('ArmIntSocket', 'Max', default_value=2) self.add_output('ArmIntSocket', 'Int') diff --git a/blender/arm/logicnode/random/LN_random_output.py b/blender/arm/logicnode/random/LN_random_output.py index fc41b35d..72f249f3 100644 --- a/blender/arm/logicnode/random/LN_random_output.py +++ b/blender/arm/logicnode/random/LN_random_output.py @@ -11,8 +11,7 @@ class RandomOutputNode(ArmLogicTreeNode): def __init__(self): array_nodes[str(id(self))] = self - def init(self, context): - super().init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') diff --git a/blender/arm/logicnode/random/LN_random_vector.py b/blender/arm/logicnode/random/LN_random_vector.py index 11161f8e..b49beabe 100644 --- a/blender/arm/logicnode/random/LN_random_vector.py +++ b/blender/arm/logicnode/random/LN_random_vector.py @@ -7,8 +7,7 @@ class RandomVectorNode(ArmLogicTreeNode): bl_label = 'Random Vector' arm_version = 1 - def init(self, context): - super(RandomVectorNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Min', default_value=[-1.0, -1.0, -1.0]) self.add_input('ArmVectorSocket', 'Max', default_value=[1.0, 1.0, 1.0]) self.add_output('ArmVectorSocket', 'Vector') diff --git a/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py b/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py index 0578c2d8..81511a03 100644 --- a/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_msaa_quality.py @@ -15,8 +15,7 @@ class RpMSAANode(ArmLogicTreeNode): ], name='', default='1') - def init(self, context): - super(RpMSAANode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py b/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py index a2d01c1b..faa883bb 100644 --- a/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_post_process_quality.py @@ -15,8 +15,7 @@ class RpConfigNode(ArmLogicTreeNode): ], name='', default='SSGI') - def init(self, context): - super(RpConfigNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmBoolSocket', 'Enable') diff --git a/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py b/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py index 7de5ccfe..8afbcd75 100644 --- a/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py +++ b/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py @@ -33,8 +33,7 @@ class SetShaderUniformNode(ArmLogicTreeNode): description="The type of the uniform", update=on_update_uniform_type) - def init(self, context): - super().init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Uniform Name') self.add_input('ArmFloatSocket', 'Float') diff --git a/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py b/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py index 0d26e950..be16096e 100644 --- a/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_shadows_quality.py @@ -13,8 +13,7 @@ class RpShadowQualityNode(ArmLogicTreeNode): ], name='', default='Medium') - def init(self, context): - super(RpShadowQualityNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py b/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py index 375b76e2..7608749a 100644 --- a/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py +++ b/blender/arm/logicnode/renderpath/LN_set_ssaa_quality.py @@ -14,8 +14,7 @@ class RpSuperSampleNode(ArmLogicTreeNode): ], name='', default='1') - def init(self, context): - super(RpSuperSampleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/scene/LN_collection.py b/blender/arm/logicnode/scene/LN_collection.py index ce4e952c..95d9c5ad 100644 --- a/blender/arm/logicnode/scene/LN_collection.py +++ b/blender/arm/logicnode/scene/LN_collection.py @@ -14,8 +14,7 @@ class GroupNode(ArmLogicTreeNode): property0: HaxePointerProperty('property0', name='', type=bpy.types.Collection) - def init(self, context): - super(GroupNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/scene/LN_create_collection.py b/blender/arm/logicnode/scene/LN_create_collection.py index 5e6157c3..94e98a01 100644 --- a/blender/arm/logicnode/scene/LN_create_collection.py +++ b/blender/arm/logicnode/scene/LN_create_collection.py @@ -7,8 +7,7 @@ class CreateCollectionNode(ArmLogicTreeNode): arm_section = 'collection' arm_version = 1 - def init(self, context): - super(CreateCollectionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Collection') diff --git a/blender/arm/logicnode/scene/LN_get_collection.py b/blender/arm/logicnode/scene/LN_get_collection.py index 2048650e..74a0f05d 100644 --- a/blender/arm/logicnode/scene/LN_get_collection.py +++ b/blender/arm/logicnode/scene/LN_get_collection.py @@ -10,8 +10,7 @@ class GetGroupNode(ArmLogicTreeNode): arm_section = 'collection' arm_version = 1 - def init(self, context): - super(GetGroupNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Name') self.add_output('ArmNodeSocketArray', 'Objects') diff --git a/blender/arm/logicnode/scene/LN_get_scene_active.py b/blender/arm/logicnode/scene/LN_get_scene_active.py index 841a3fe1..f99c72c0 100644 --- a/blender/arm/logicnode/scene/LN_get_scene_active.py +++ b/blender/arm/logicnode/scene/LN_get_scene_active.py @@ -6,6 +6,5 @@ class ActiveSceneNode(ArmLogicTreeNode): bl_label = 'Get Scene Active' arm_version = 1 - def init(self, context): - super(ActiveSceneNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Scene') diff --git a/blender/arm/logicnode/scene/LN_get_scene_root.py b/blender/arm/logicnode/scene/LN_get_scene_root.py index 658cbfa2..2dc4e428 100644 --- a/blender/arm/logicnode/scene/LN_get_scene_root.py +++ b/blender/arm/logicnode/scene/LN_get_scene_root.py @@ -6,6 +6,5 @@ class SceneRootNode(ArmLogicTreeNode): bl_label = 'Get Scene Root' arm_version = 1 - def init(self, context): - super(SceneRootNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/scene/LN_global_object.py b/blender/arm/logicnode/scene/LN_global_object.py index 015da8ca..ca001743 100644 --- a/blender/arm/logicnode/scene/LN_global_object.py +++ b/blender/arm/logicnode/scene/LN_global_object.py @@ -7,6 +7,5 @@ class GlobalObjectNode(ArmLogicTreeNode): bl_label = 'Global Object' arm_version = 1 - def init(self, context): - super(GlobalObjectNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketObject', 'Object') diff --git a/blender/arm/logicnode/scene/LN_remove_collection.py b/blender/arm/logicnode/scene/LN_remove_collection.py index 3e6d49c5..813c13d6 100644 --- a/blender/arm/logicnode/scene/LN_remove_collection.py +++ b/blender/arm/logicnode/scene/LN_remove_collection.py @@ -7,8 +7,7 @@ class RemoveGroupNode(ArmLogicTreeNode): arm_section = 'collection' arm_version = 1 - def init(self, context): - super(RemoveGroupNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmStringSocket', 'Collection') diff --git a/blender/arm/logicnode/scene/LN_remove_scene_active.py b/blender/arm/logicnode/scene/LN_remove_scene_active.py index 815b941a..4fd2ac66 100644 --- a/blender/arm/logicnode/scene/LN_remove_scene_active.py +++ b/blender/arm/logicnode/scene/LN_remove_scene_active.py @@ -6,8 +6,7 @@ class RemoveActiveSceneNode(ArmLogicTreeNode): bl_label = 'Remove Scene Active' arm_version = 1 - def init(self, context): - super(RemoveActiveSceneNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/scene/LN_scene.py b/blender/arm/logicnode/scene/LN_scene.py index d2ed0b60..c4849838 100644 --- a/blender/arm/logicnode/scene/LN_scene.py +++ b/blender/arm/logicnode/scene/LN_scene.py @@ -11,8 +11,7 @@ class SceneNode(ArmLogicTreeNode): property0_get: HaxePointerProperty('property0_get', name='', type=bpy.types.Scene) - def init(self, context): - super(SceneNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Scene') def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/scene/LN_set_scene_active.py b/blender/arm/logicnode/scene/LN_set_scene_active.py index e839765c..95138c85 100644 --- a/blender/arm/logicnode/scene/LN_set_scene_active.py +++ b/blender/arm/logicnode/scene/LN_set_scene_active.py @@ -6,8 +6,7 @@ class SetSceneNode(ArmLogicTreeNode): bl_label = 'Set Scene Active' arm_version = 1 - def init(self, context): - super(SetSceneNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Scene') diff --git a/blender/arm/logicnode/scene/LN_spawn_collection.py b/blender/arm/logicnode/scene/LN_spawn_collection.py index 72c6db7c..c03ed012 100644 --- a/blender/arm/logicnode/scene/LN_spawn_collection.py +++ b/blender/arm/logicnode/scene/LN_spawn_collection.py @@ -30,8 +30,7 @@ class SpawnCollectionNode(ArmLogicTreeNode): property0: HaxePointerProperty('property0', name='Collection', type=bpy.types.Collection) - def init(self, context): - super(SpawnCollectionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/scene/LN_spawn_scene.py b/blender/arm/logicnode/scene/LN_spawn_scene.py index 5a2b50dd..e3df2adb 100644 --- a/blender/arm/logicnode/scene/LN_spawn_scene.py +++ b/blender/arm/logicnode/scene/LN_spawn_scene.py @@ -6,8 +6,7 @@ class SpawnSceneNode(ArmLogicTreeNode): bl_label = 'Spawn Scene' arm_version = 1 - def init(self, context): - super(SpawnSceneNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Scene') self.add_input('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/sound/LN_pause_speaker.py b/blender/arm/logicnode/sound/LN_pause_speaker.py index b211a62c..14fb5852 100644 --- a/blender/arm/logicnode/sound/LN_pause_speaker.py +++ b/blender/arm/logicnode/sound/LN_pause_speaker.py @@ -11,8 +11,7 @@ class PauseSpeakerNode(ArmLogicTreeNode): bl_label = 'Pause Speaker' arm_version = 1 - def init(self, context): - super(PauseSpeakerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Speaker') diff --git a/blender/arm/logicnode/sound/LN_play_sound.py b/blender/arm/logicnode/sound/LN_play_sound.py index ac72729d..47e622d4 100644 --- a/blender/arm/logicnode/sound/LN_play_sound.py +++ b/blender/arm/logicnode/sound/LN_play_sound.py @@ -60,8 +60,7 @@ class PlaySoundNode(ArmLogicTreeNode): default=False ) - def init(self, context): - super(PlaySoundNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'Play') self.add_input('ArmNodeSocketAction', 'Pause') self.add_input('ArmNodeSocketAction', 'Stop') diff --git a/blender/arm/logicnode/sound/LN_play_speaker.py b/blender/arm/logicnode/sound/LN_play_speaker.py index b91446b9..d4fdeb84 100644 --- a/blender/arm/logicnode/sound/LN_play_speaker.py +++ b/blender/arm/logicnode/sound/LN_play_speaker.py @@ -11,8 +11,7 @@ class PlaySpeakerNode(ArmLogicTreeNode): bl_label = 'Play Speaker' arm_version = 1 - def init(self, context): - super(PlaySpeakerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Speaker') diff --git a/blender/arm/logicnode/sound/LN_stop_speaker.py b/blender/arm/logicnode/sound/LN_stop_speaker.py index 9b5ba8bc..4940133d 100644 --- a/blender/arm/logicnode/sound/LN_stop_speaker.py +++ b/blender/arm/logicnode/sound/LN_stop_speaker.py @@ -11,8 +11,7 @@ class StopSpeakerNode(ArmLogicTreeNode): bl_label = 'Stop Speaker' arm_version = 1 - def init(self, context): - super(StopSpeakerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Speaker') diff --git a/blender/arm/logicnode/string/LN_concatenate_string.py b/blender/arm/logicnode/string/LN_concatenate_string.py index 0c8c3e13..3467ddee 100644 --- a/blender/arm/logicnode/string/LN_concatenate_string.py +++ b/blender/arm/logicnode/string/LN_concatenate_string.py @@ -10,8 +10,7 @@ class ConcatenateStringNode(ArmLogicTreeNode): super(ConcatenateStringNode, self).__init__() array_nodes[str(id(self))] = self - def init(self, context): - super(ConcatenateStringNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'Input 0') self.add_output('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/string/LN_parse_float.py b/blender/arm/logicnode/string/LN_parse_float.py index f52fc698..5d14bc34 100644 --- a/blender/arm/logicnode/string/LN_parse_float.py +++ b/blender/arm/logicnode/string/LN_parse_float.py @@ -7,8 +7,7 @@ class ParseFloatNode(ArmLogicTreeNode): arm_section = 'parse' arm_version = 1 - def init(self, context): - super(ParseFloatNode, self).init(context) + def arm_init(self, context): self.add_output('ArmFloatSocket', 'Float') self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/string/LN_split_string.py b/blender/arm/logicnode/string/LN_split_string.py index 79941b81..3b7478aa 100644 --- a/blender/arm/logicnode/string/LN_split_string.py +++ b/blender/arm/logicnode/string/LN_split_string.py @@ -6,8 +6,7 @@ class SplitStringNode(ArmLogicTreeNode): bl_label = 'Split String' arm_version = 1 - def init(self, context): - super(SplitStringNode, self).init(context) + def arm_init(self, context): self.add_output('ArmNodeSocketArray', 'Array') self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/string/LN_string.py b/blender/arm/logicnode/string/LN_string.py index 6b4679c3..d7f4d6c1 100644 --- a/blender/arm/logicnode/string/LN_string.py +++ b/blender/arm/logicnode/string/LN_string.py @@ -6,8 +6,7 @@ class StringNode(ArmLogicTreeNode): bl_label = 'String' arm_version = 1 - def init(self, context): - super(StringNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'String In') self.add_output('ArmStringSocket', 'String Out', is_var=True) diff --git a/blender/arm/logicnode/string/LN_string_case.py b/blender/arm/logicnode/string/LN_string_case.py index 195bb6c1..22619e41 100644 --- a/blender/arm/logicnode/string/LN_string_case.py +++ b/blender/arm/logicnode/string/LN_string_case.py @@ -12,8 +12,7 @@ class CaseStringNode(ArmLogicTreeNode): ], name='', default='Upper Case') - def init(self, context): - super(CaseStringNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'String In') self.add_output('ArmStringSocket', 'String Out') diff --git a/blender/arm/logicnode/string/LN_string_contains.py b/blender/arm/logicnode/string/LN_string_contains.py index aa657ec5..f9811baf 100644 --- a/blender/arm/logicnode/string/LN_string_contains.py +++ b/blender/arm/logicnode/string/LN_string_contains.py @@ -13,8 +13,7 @@ class ContainsStringNode(ArmLogicTreeNode): ], name='', default='Contains') - def init(self, context): - super(ContainsStringNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'String') self.add_input('ArmStringSocket', 'Find') diff --git a/blender/arm/logicnode/string/LN_string_length.py b/blender/arm/logicnode/string/LN_string_length.py index 9037a1ed..5edf39cb 100644 --- a/blender/arm/logicnode/string/LN_string_length.py +++ b/blender/arm/logicnode/string/LN_string_length.py @@ -6,8 +6,7 @@ class LengthStringNode(ArmLogicTreeNode): bl_label = 'String Length' arm_version = 1 - def init(self, context): - super(LengthStringNode, self).init(context) + def arm_init(self, context): self.add_output('ArmIntSocket', 'Length') self.add_input('ArmStringSocket', 'String') diff --git a/blender/arm/logicnode/string/LN_sub_string.py b/blender/arm/logicnode/string/LN_sub_string.py index b3b0a7c0..647d0e64 100644 --- a/blender/arm/logicnode/string/LN_sub_string.py +++ b/blender/arm/logicnode/string/LN_sub_string.py @@ -6,8 +6,7 @@ class SubStringNode(ArmLogicTreeNode): bl_label = 'Sub String' arm_version = 1 - def init(self, context): - super(SubStringNode, self).init(context) + def arm_init(self, context): self.add_input('ArmStringSocket', 'String In') self.add_input('ArmIntSocket', 'Start') self.add_input('ArmIntSocket', 'End') diff --git a/blender/arm/logicnode/trait/LN_add_trait_to_object.py b/blender/arm/logicnode/trait/LN_add_trait_to_object.py index c2fe8847..aac4a5f3 100644 --- a/blender/arm/logicnode/trait/LN_add_trait_to_object.py +++ b/blender/arm/logicnode/trait/LN_add_trait_to_object.py @@ -6,8 +6,7 @@ class AddTraitNode(ArmLogicTreeNode): bl_label = 'Add Trait to Object' arm_version = 1 - def init(self, context): - super(AddTraitNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Trait') diff --git a/blender/arm/logicnode/trait/LN_get_object_trait.py b/blender/arm/logicnode/trait/LN_get_object_trait.py index 7014a2f8..b0890ab2 100644 --- a/blender/arm/logicnode/trait/LN_get_object_trait.py +++ b/blender/arm/logicnode/trait/LN_get_object_trait.py @@ -7,8 +7,7 @@ class GetTraitNode(ArmLogicTreeNode): bl_label = 'Get Object Trait' arm_version = 1 - def init(self, context): - super(GetTraitNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmStringSocket', 'Name') diff --git a/blender/arm/logicnode/trait/LN_get_object_traits.py b/blender/arm/logicnode/trait/LN_get_object_traits.py index ab80f3ce..7fd1dfae 100644 --- a/blender/arm/logicnode/trait/LN_get_object_traits.py +++ b/blender/arm/logicnode/trait/LN_get_object_traits.py @@ -6,8 +6,7 @@ class GetObjectTraitsNode(ArmLogicTreeNode): bl_label = 'Get Object Traits' arm_version = 1 - def init(self, context): - super(GetObjectTraitsNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmNodeSocketArray', 'Traits') diff --git a/blender/arm/logicnode/trait/LN_get_trait_name.py b/blender/arm/logicnode/trait/LN_get_trait_name.py index c8156da5..9a34fd70 100644 --- a/blender/arm/logicnode/trait/LN_get_trait_name.py +++ b/blender/arm/logicnode/trait/LN_get_trait_name.py @@ -6,8 +6,7 @@ class GetTraitNameNode(ArmLogicTreeNode): bl_label = 'Get Trait Name' arm_version = 1 - def init(self, context): - super(GetTraitNameNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmStringSocket', 'Name') diff --git a/blender/arm/logicnode/trait/LN_get_trait_paused.py b/blender/arm/logicnode/trait/LN_get_trait_paused.py index 286df85d..12f1ac0d 100644 --- a/blender/arm/logicnode/trait/LN_get_trait_paused.py +++ b/blender/arm/logicnode/trait/LN_get_trait_paused.py @@ -6,8 +6,7 @@ class GetTraitPausedNode(ArmLogicTreeNode): bl_label = 'Get Trait Paused' arm_version = 1 - def init(self, context): - super(GetTraitPausedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Trait') self.add_output('ArmBoolSocket', 'Is Paused') diff --git a/blender/arm/logicnode/trait/LN_remove_trait.py b/blender/arm/logicnode/trait/LN_remove_trait.py index 0d40e82a..7e81f12c 100644 --- a/blender/arm/logicnode/trait/LN_remove_trait.py +++ b/blender/arm/logicnode/trait/LN_remove_trait.py @@ -6,8 +6,7 @@ class RemoveTraitNode(ArmLogicTreeNode): bl_label = 'Remove Trait' arm_version = 1 - def init(self, context): - super(RemoveTraitNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Trait') diff --git a/blender/arm/logicnode/trait/LN_self_trait.py b/blender/arm/logicnode/trait/LN_self_trait.py index 5e3c85b7..41b09676 100644 --- a/blender/arm/logicnode/trait/LN_self_trait.py +++ b/blender/arm/logicnode/trait/LN_self_trait.py @@ -6,6 +6,5 @@ class SelfTraitNode(ArmLogicTreeNode): bl_label = 'Self Trait' arm_version = 1 - def init(self, context): - super(SelfTraitNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Trait') diff --git a/blender/arm/logicnode/trait/LN_set_trait_paused.py b/blender/arm/logicnode/trait/LN_set_trait_paused.py index 6c4b595c..739692dd 100644 --- a/blender/arm/logicnode/trait/LN_set_trait_paused.py +++ b/blender/arm/logicnode/trait/LN_set_trait_paused.py @@ -6,8 +6,7 @@ class SetTraitPausedNode(ArmLogicTreeNode): bl_label = 'Set Trait Paused' arm_version = 1 - def init(self, context): - super(SetTraitPausedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Trait') self.add_input('ArmBoolSocket', 'Paused') diff --git a/blender/arm/logicnode/trait/LN_trait.py b/blender/arm/logicnode/trait/LN_trait.py index 4ed2a6dd..bc1b85ef 100644 --- a/blender/arm/logicnode/trait/LN_trait.py +++ b/blender/arm/logicnode/trait/LN_trait.py @@ -10,8 +10,7 @@ class TraitNode(ArmLogicTreeNode): property0: HaxeStringProperty('property0', name='', default='') - def init(self, context): - super(TraitNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Trait', is_var=True) def draw_buttons(self, context, layout): diff --git a/blender/arm/logicnode/transform/LN_append_transform.py b/blender/arm/logicnode/transform/LN_append_transform.py index 81a087c0..3a85088e 100644 --- a/blender/arm/logicnode/transform/LN_append_transform.py +++ b/blender/arm/logicnode/transform/LN_append_transform.py @@ -6,8 +6,7 @@ class AppendTransformNode(ArmLogicTreeNode): bl_label = 'Append Transform' arm_version = 1 - def init(self, context): - super(AppendTransformNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/transform/LN_get_object_location.py b/blender/arm/logicnode/transform/LN_get_object_location.py index 06b15234..f2e3fb58 100644 --- a/blender/arm/logicnode/transform/LN_get_object_location.py +++ b/blender/arm/logicnode/transform/LN_get_object_location.py @@ -7,8 +7,7 @@ class GetLocationNode(ArmLogicTreeNode): arm_section = 'location' arm_version = 1 - def init(self, context): - super(GetLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmVectorSocket', 'Location') diff --git a/blender/arm/logicnode/transform/LN_get_object_rotation.py b/blender/arm/logicnode/transform/LN_get_object_rotation.py index 821a47d8..af3ba965 100644 --- a/blender/arm/logicnode/transform/LN_get_object_rotation.py +++ b/blender/arm/logicnode/transform/LN_get_object_rotation.py @@ -7,8 +7,7 @@ class GetRotationNode(ArmLogicTreeNode): arm_section = 'rotation' arm_version = 1 - def init(self, context): - super(GetRotationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmVectorSocket', 'Euler Angles') diff --git a/blender/arm/logicnode/transform/LN_get_object_scale.py b/blender/arm/logicnode/transform/LN_get_object_scale.py index f6f1ff56..67d5d5df 100644 --- a/blender/arm/logicnode/transform/LN_get_object_scale.py +++ b/blender/arm/logicnode/transform/LN_get_object_scale.py @@ -7,8 +7,7 @@ class GetScaleNode(ArmLogicTreeNode): arm_section = 'scale' arm_version = 1 - def init(self, context): - super(GetScaleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmVectorSocket', 'Scale') diff --git a/blender/arm/logicnode/transform/LN_get_object_transform.py b/blender/arm/logicnode/transform/LN_get_object_transform.py index a10163ae..347dc81b 100644 --- a/blender/arm/logicnode/transform/LN_get_object_transform.py +++ b/blender/arm/logicnode/transform/LN_get_object_transform.py @@ -8,8 +8,7 @@ class GetTransformNode(ArmLogicTreeNode): bl_label = 'Get Object Transform' arm_version = 1 - def init(self, context): - super(GetTransformNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/transform/LN_get_world_orientation.py b/blender/arm/logicnode/transform/LN_get_world_orientation.py index 28c074c6..9e9b7de4 100644 --- a/blender/arm/logicnode/transform/LN_get_world_orientation.py +++ b/blender/arm/logicnode/transform/LN_get_world_orientation.py @@ -14,8 +14,7 @@ class GetWorldNode(ArmLogicTreeNode): ('Up', 'Up', 'The object up (Z) direction')], name='', default='Look') - def init(self, context): - super(GetWorldNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_output('ArmVectorSocket', 'Vector') diff --git a/blender/arm/logicnode/transform/LN_look_at.py b/blender/arm/logicnode/transform/LN_look_at.py index a38b20f2..f2bc1bde 100644 --- a/blender/arm/logicnode/transform/LN_look_at.py +++ b/blender/arm/logicnode/transform/LN_look_at.py @@ -17,8 +17,7 @@ class LookAtNode(ArmLogicTreeNode): ('-Z', '-Z', '-Z')], name='With', default='Z') - def init(self, context): - super(LookAtNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'From Location') self.add_input('ArmVectorSocket', 'To Location') diff --git a/blender/arm/logicnode/transform/LN_rotate_object.py b/blender/arm/logicnode/transform/LN_rotate_object.py index 773c245f..0e22ede6 100644 --- a/blender/arm/logicnode/transform/LN_rotate_object.py +++ b/blender/arm/logicnode/transform/LN_rotate_object.py @@ -7,8 +7,7 @@ class RotateObjectNode(ArmLogicTreeNode): arm_section = 'rotation' arm_version = 1 - def init(self, context): - super().init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Euler Angles') diff --git a/blender/arm/logicnode/transform/LN_separate_transform.py b/blender/arm/logicnode/transform/LN_separate_transform.py index 28762a17..66cb1e7f 100644 --- a/blender/arm/logicnode/transform/LN_separate_transform.py +++ b/blender/arm/logicnode/transform/LN_separate_transform.py @@ -6,8 +6,7 @@ class SeparateTransformNode(ArmLogicTreeNode): bl_label = 'Separate Transform' arm_version = 1 - def init(self, context): - super(SeparateTransformNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Transform') self.add_output('ArmVectorSocket', 'Location') diff --git a/blender/arm/logicnode/transform/LN_set_object_location.py b/blender/arm/logicnode/transform/LN_set_object_location.py index 36a665b5..84473c80 100644 --- a/blender/arm/logicnode/transform/LN_set_object_location.py +++ b/blender/arm/logicnode/transform/LN_set_object_location.py @@ -7,8 +7,7 @@ class SetLocationNode(ArmLogicTreeNode): arm_section = 'location' arm_version = 1 - def init(self, context): - super(SetLocationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Location') diff --git a/blender/arm/logicnode/transform/LN_set_object_rotation.py b/blender/arm/logicnode/transform/LN_set_object_rotation.py index ac563ff5..6b7efbd9 100644 --- a/blender/arm/logicnode/transform/LN_set_object_rotation.py +++ b/blender/arm/logicnode/transform/LN_set_object_rotation.py @@ -7,8 +7,7 @@ class SetRotationNode(ArmLogicTreeNode): arm_section = 'rotation' arm_version = 1 - def init(self, context): - super(SetRotationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Euler Angles / Vector XYZ') diff --git a/blender/arm/logicnode/transform/LN_set_object_scale.py b/blender/arm/logicnode/transform/LN_set_object_scale.py index d797cba3..7f7221d9 100644 --- a/blender/arm/logicnode/transform/LN_set_object_scale.py +++ b/blender/arm/logicnode/transform/LN_set_object_scale.py @@ -7,8 +7,7 @@ class SetScaleNode(ArmLogicTreeNode): arm_section = 'scale' arm_version = 1 - def init(self, context): - super(SetScaleNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Scale', default_value=[1.0, 1.0, 1.0]) diff --git a/blender/arm/logicnode/transform/LN_set_object_transform.py b/blender/arm/logicnode/transform/LN_set_object_transform.py index 99b08ac7..1a139551 100644 --- a/blender/arm/logicnode/transform/LN_set_object_transform.py +++ b/blender/arm/logicnode/transform/LN_set_object_transform.py @@ -6,8 +6,7 @@ class SetTransformNode(ArmLogicTreeNode): bl_label = 'Set Object Transform' arm_version = 1 - def init(self, context): - super(SetTransformNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/transform/LN_transform.py b/blender/arm/logicnode/transform/LN_transform.py index 95c1fea4..7e7edd42 100644 --- a/blender/arm/logicnode/transform/LN_transform.py +++ b/blender/arm/logicnode/transform/LN_transform.py @@ -6,8 +6,7 @@ class TransformNode(ArmLogicTreeNode): bl_label = 'Transform' arm_version = 1 - def init(self, context): - super(TransformNode, self).init(context) + def arm_init(self, context): self.add_input('ArmVectorSocket', 'Location') self.add_input('ArmVectorSocket', 'Rotation') self.add_input('ArmVectorSocket', 'Scale', default_value=[1.0, 1.0, 1.0]) diff --git a/blender/arm/logicnode/transform/LN_transform_math.py b/blender/arm/logicnode/transform/LN_transform_math.py index 70a7b5dc..bc5a90a2 100644 --- a/blender/arm/logicnode/transform/LN_transform_math.py +++ b/blender/arm/logicnode/transform/LN_transform_math.py @@ -6,8 +6,7 @@ class TransformMathNode(ArmLogicTreeNode): bl_label = 'Transform Math' arm_version = 1 - def init(self, context): - super(TransformMathNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Transform 1') self.add_input('ArmDynamicSocket', 'Transform 2') diff --git a/blender/arm/logicnode/transform/LN_transform_to_vector.py b/blender/arm/logicnode/transform/LN_transform_to_vector.py index 9b01681d..222f8abb 100644 --- a/blender/arm/logicnode/transform/LN_transform_to_vector.py +++ b/blender/arm/logicnode/transform/LN_transform_to_vector.py @@ -6,8 +6,7 @@ class VectorFromTransformNode(ArmLogicTreeNode): bl_label = 'Transform to Vector' arm_version = 1 - def init(self, context): - super(VectorFromTransformNode, self).init(context) + def arm_init(self, context): self.add_input('ArmDynamicSocket', 'Transform') self.add_output('ArmVectorSocket', 'Vector') diff --git a/blender/arm/logicnode/transform/LN_translate_object.py b/blender/arm/logicnode/transform/LN_translate_object.py index 9076e9ad..d5964666 100644 --- a/blender/arm/logicnode/transform/LN_translate_object.py +++ b/blender/arm/logicnode/transform/LN_translate_object.py @@ -7,8 +7,7 @@ class TranslateObjectNode(ArmLogicTreeNode): arm_section = 'location' arm_version = 1 - def init(self, context): - super(TranslateObjectNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Vector') diff --git a/blender/arm/logicnode/transform/LN_translate_on_local_axis.py b/blender/arm/logicnode/transform/LN_translate_on_local_axis.py index 35456dad..08192fe6 100644 --- a/blender/arm/logicnode/transform/LN_translate_on_local_axis.py +++ b/blender/arm/logicnode/transform/LN_translate_on_local_axis.py @@ -8,8 +8,7 @@ class TranslateOnLocalAxisNode(ArmLogicTreeNode): arm_section = 'location' arm_version = 1 - def init(self, context): - super(TranslateOnLocalAxisNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmFloatSocket', 'Speed') diff --git a/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py b/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py index 2b064684..e9f0ef6c 100644 --- a/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py +++ b/blender/arm/logicnode/transform/LN_vector_to_object_orientation.py @@ -1,7 +1,7 @@ from arm.logicnode.arm_nodes import * class VectorToObjectOrientationNode(ArmLogicTreeNode): - """Converts the given world vector to a vector oriented by the given object. + """Converts the given world vector to a vector oriented by the given object. The object scale is taken in count. @seeNode World Vector To Object Space @@ -13,8 +13,7 @@ class VectorToObjectOrientationNode(ArmLogicTreeNode): arm_section = 'location' arm_version = 1 - def init(self, context): - super(VectorToObjectOrientationNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'World') diff --git a/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py b/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py index 0895659e..c0e0d20a 100644 --- a/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py +++ b/blender/arm/logicnode/transform/LN_world_vector_to_local_space.py @@ -1,7 +1,7 @@ from arm.logicnode.arm_nodes import * class WorldVectorToLocalSpaceNode(ArmLogicTreeNode): - """Converts the given world vector to a object space vector. + """Converts the given world vector to a object space vector. The object scale is taken in count. @seeNode Vector To Object Orientation @@ -13,8 +13,7 @@ class WorldVectorToLocalSpaceNode(ArmLogicTreeNode): arm_section = 'location' arm_version = 1 - def init(self, context): - super(WorldVectorToLocalSpaceNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'World') diff --git a/blender/arm/logicnode/variable/LN_boolean.py b/blender/arm/logicnode/variable/LN_boolean.py index 810cdfc9..f1769d8f 100644 --- a/blender/arm/logicnode/variable/LN_boolean.py +++ b/blender/arm/logicnode/variable/LN_boolean.py @@ -7,8 +7,7 @@ class BooleanNode(ArmLogicTreeNode): bl_label = 'Boolean' arm_version = 1 - def init(self, context): - super(BooleanNode, self).init(context) + def arm_init(self, context): self.add_input('ArmBoolSocket', 'Bool In') self.add_output('ArmBoolSocket', 'Bool Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_color.py b/blender/arm/logicnode/variable/LN_color.py index 3f7f805e..92ff7140 100644 --- a/blender/arm/logicnode/variable/LN_color.py +++ b/blender/arm/logicnode/variable/LN_color.py @@ -6,8 +6,7 @@ class ColorNode(ArmLogicTreeNode): bl_label = 'Color' arm_version = 1 - def init(self, context): - super(ColorNode, self).init(context) + def arm_init(self, context): self.add_input('ArmColorSocket', 'Color In', default_value=[1.0, 1.0, 1.0, 1.0]) self.add_output('ArmColorSocket', 'Color Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_dynamic.py b/blender/arm/logicnode/variable/LN_dynamic.py index 11e1e73e..e1465c99 100644 --- a/blender/arm/logicnode/variable/LN_dynamic.py +++ b/blender/arm/logicnode/variable/LN_dynamic.py @@ -6,6 +6,5 @@ class DynamicNode(ArmLogicTreeNode): bl_label = 'Dynamic' arm_version = 1 - def init(self, context): - super(DynamicNode, self).init(context) + def arm_init(self, context): self.add_output('ArmDynamicSocket', 'Dynamic', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_float.py b/blender/arm/logicnode/variable/LN_float.py index b660e53f..abd2caae 100644 --- a/blender/arm/logicnode/variable/LN_float.py +++ b/blender/arm/logicnode/variable/LN_float.py @@ -9,7 +9,6 @@ class FloatNode(ArmLogicTreeNode): bl_label = 'Float' arm_version = 1 - def init(self, context): - super(FloatNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'Float In') self.add_output('ArmFloatSocket', 'Float Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_integer.py b/blender/arm/logicnode/variable/LN_integer.py index fb16b2d5..89dd5d54 100644 --- a/blender/arm/logicnode/variable/LN_integer.py +++ b/blender/arm/logicnode/variable/LN_integer.py @@ -6,7 +6,6 @@ class IntegerNode(ArmLogicTreeNode): bl_label = 'Integer' arm_version = 1 - def init(self, context): - super(IntegerNode, self).init(context) + def arm_init(self, context): self.add_input('ArmIntSocket', 'Int In') self.add_output('ArmIntSocket', 'Int Out', is_var=True) diff --git a/blender/arm/logicnode/variable/LN_mask.py b/blender/arm/logicnode/variable/LN_mask.py index 68ec954f..4be96e2a 100644 --- a/blender/arm/logicnode/variable/LN_mask.py +++ b/blender/arm/logicnode/variable/LN_mask.py @@ -6,8 +6,7 @@ class MaskNode(ArmLogicTreeNode): bl_label = 'Mask' arm_version = 1 - def init(self, context): - super(MaskNode, self).init(context) + def arm_init(self, context): for i in range(1, 21): label = 'Group {:02d}'.format(i) self.inputs.new('ArmBoolSocket', label) diff --git a/blender/arm/logicnode/variable/LN_quaternion.py b/blender/arm/logicnode/variable/LN_quaternion.py index 15eb6ca2..7316dbab 100644 --- a/blender/arm/logicnode/variable/LN_quaternion.py +++ b/blender/arm/logicnode/variable/LN_quaternion.py @@ -7,8 +7,7 @@ class QuaternionNode(ArmLogicTreeNode): arm_section = 'quaternions' arm_version = 1 - def init(self, context): - super(QuaternionNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'X') self.add_input('ArmFloatSocket', 'Y') self.add_input('ArmFloatSocket', 'Z') diff --git a/blender/arm/logicnode/variable/LN_set_variable.py b/blender/arm/logicnode/variable/LN_set_variable.py index ae729ee7..411aca6a 100644 --- a/blender/arm/logicnode/variable/LN_set_variable.py +++ b/blender/arm/logicnode/variable/LN_set_variable.py @@ -13,8 +13,7 @@ class SetVariableNode(ArmLogicTreeNode): arm_section = 'set' arm_version = 1 - def init(self, context): - super(SetVariableNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmDynamicSocket', 'Variable', is_var=True) self.add_input('ArmDynamicSocket', 'Value') diff --git a/blender/arm/logicnode/variable/LN_vector.py b/blender/arm/logicnode/variable/LN_vector.py index d93cd2c6..19cf02e7 100644 --- a/blender/arm/logicnode/variable/LN_vector.py +++ b/blender/arm/logicnode/variable/LN_vector.py @@ -6,8 +6,7 @@ class VectorNode(ArmLogicTreeNode): bl_label = 'Vector' arm_version = 1 - def init(self, context): - super(VectorNode, self).init(context) + def arm_init(self, context): self.add_input('ArmFloatSocket', 'X') self.add_input('ArmFloatSocket', 'Y') self.add_input('ArmFloatSocket', 'Z') diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index cc6b9a4d..3299e085 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -159,7 +159,7 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: # Properties for prop_name in arm.node_utils.get_haxe_property_names(node): - prop = arm.node_utils.haxe_format_prop(node, prop_name) + prop = arm.node_utils.haxe_format_prop_value(node, prop_name) f.write('\t\t' + name + '.' + prop_name + ' = ' + prop + ';\n') # Create inputs @@ -262,7 +262,6 @@ def get_root_nodes(node_group): def build_default_node(inp: bpy.types.NodeSocket): """Creates a new node to give a not connected input socket a value""" - is_custom_socket = isinstance(inp, arm.logicnode.arm_sockets.ArmCustomSocket) if is_custom_socket: diff --git a/blender/arm/node_utils.py b/blender/arm/node_utils.py index 2a9621fe..747360d5 100755 --- a/blender/arm/node_utils.py +++ b/blender/arm/node_utils.py @@ -151,7 +151,7 @@ def haxe_format_socket_val(socket_val: Any, array_outer_brackets=True) -> str: return str(socket_val) -def haxe_format_prop(node: bpy.types.Node, prop_name: str) -> str: +def haxe_format_prop_value(node: bpy.types.Node, prop_name: str) -> str: """Formats a property value to be valid Haxe syntax.""" prop_value = getattr(node, prop_name) if isinstance(prop_value, str): diff --git a/blender/arm/write_data.py b/blender/arm/write_data.py index 4d2aadda..8e2e01ad 100755 --- a/blender/arm/write_data.py +++ b/blender/arm/write_data.py @@ -174,6 +174,9 @@ project.addSources('Sources'); import_traits.append('armory.trait.internal.Bridge') if live_patch: assets.add_khafile_def('arm_patch') + # Include all logic node classes so that they can later + # get instantiated + khafile.write("""project.addParameter("--macro include('armory.logicnode')");\n""") import_traits = list(set(import_traits)) for i in range(0, len(import_traits)): From 4f13ebc439918b66406f74c1f4ed42d7b4dc02bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 20 Jul 2021 23:33:47 +0200 Subject: [PATCH 21/45] Live patch: fix updates of object sockets --- Sources/armory/logicnode/ObjectNode.hx | 2 +- blender/arm/live_patch.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/armory/logicnode/ObjectNode.hx b/Sources/armory/logicnode/ObjectNode.hx index 1506fdd2..bd3e8494 100644 --- a/Sources/armory/logicnode/ObjectNode.hx +++ b/Sources/armory/logicnode/ObjectNode.hx @@ -21,7 +21,7 @@ class ObjectNode extends LogicNode { override function set(value: Dynamic) { if (inputs.length > 0) inputs[0].set(value); else { - objectName = value.name; + objectName = value != null ? value.name : ""; this.value = value; } } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 7bc8073d..a6527e23 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -209,6 +209,8 @@ def send_event(event_id: str, opt_data: Any = None): 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 == 'OBJECT': + value = f'iron.Scene.active.getChild("{value}")' if value != '' else 'null' else: value = arm.node_utils.haxe_format_socket_val(value) From 5276711094d3943480c2125d639e1b2171f9f480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Tue, 20 Jul 2021 23:34:06 +0200 Subject: [PATCH 22/45] Live patch: add more ignored operators --- blender/arm/live_patch.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index a6527e23..9079cfde 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -300,9 +300,11 @@ IGNORE_OPERATORS = ( 'VIEW3D_OT_select_box', 'OUTLINER_OT_item_activate', 'OBJECT_OT_editmode_toggle', + 'NODE_OT_delete', 'NODE_OT_duplicate_move', 'NODE_OT_link', 'NODE_OT_select', 'NODE_OT_translate_attach_remove_on_cancel', - 'NODE_OT_translate_attach' + 'NODE_OT_translate_attach', + 'UI_OT_button_string_clear' ) From 256d27e289d6596b1c1ba647102bb6df9c199a23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Wed, 21 Jul 2021 22:58:21 +0200 Subject: [PATCH 23/45] Fix vector/color handling for logic node live patching --- Sources/armory/trait/internal/Bridge.hx | 1 + blender/arm/live_patch.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Sources/armory/trait/internal/Bridge.hx b/Sources/armory/trait/internal/Bridge.hx index 1ce35562..632fad8f 100644 --- a/Sources/armory/trait/internal/Bridge.hx +++ b/Sources/armory/trait/internal/Bridge.hx @@ -11,6 +11,7 @@ class Bridge { public static var Input = iron.system.Input; public static var Object = iron.object.Object; public static var Data = iron.data.Data; + public static var Vec4 = iron.math.Vec4; public static function log(s: String) { trace(s); }; } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 9079cfde..99314c54 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -206,9 +206,9 @@ def send_event(event_id: str, opt_data: Any = None): inp_type = socket.arm_socket_type if inp_type in ('VECTOR', 'RGB'): - value = '{' + f'"x": {value[0]}, "y": {value[1]}, "z": {value[2]}' + '}' + value = f'new iron.Vec4({arm.node_utils.haxe_format_socket_val(value, array_outer_brackets=False)}, 1.0)' elif inp_type == 'RGBA': - value = '{' + f'"x": {value[0]}, "y": {value[1]}, "z": {value[2]}, "w": {value[3]}' + '}' + value = f'new iron.Vec4({arm.node_utils.haxe_format_socket_val(value, array_outer_brackets=False)})' elif inp_type == 'OBJECT': value = f'iron.Scene.active.getChild("{value}")' if value != '' else 'null' else: From aa214022211757caa94fd53951c47f2454e5042b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 13:36:16 +0200 Subject: [PATCH 24/45] Live patch: handle deletion of node links --- Sources/armory/logicnode/LogicNode.hx | 162 +++++++++++++++++---- Sources/armory/logicnode/QuaternionNode.hx | 14 +- Sources/armory/logicnode/SetParentNode.hx | 6 +- Sources/armory/logicnode/VectorNode.hx | 6 +- Sources/armory/trait/internal/LivePatch.hx | 77 +++++++--- blender/arm/live_patch.py | 47 ++++++ blender/arm/logicnode/arm_nodes.py | 41 +++++- blender/arm/make_logic.py | 39 +++-- 8 files changed, 312 insertions(+), 80 deletions(-) diff --git a/Sources/armory/logicnode/LogicNode.hx b/Sources/armory/logicnode/LogicNode.hx index 38dac54b..18b3602d 100644 --- a/Sources/armory/logicnode/LogicNode.hx +++ b/Sources/armory/logicnode/LogicNode.hx @@ -4,8 +4,8 @@ package armory.logicnode; class LogicNode { var tree: LogicTree; - var inputs: Array = []; - var outputs: Array> = []; + var inputs: Array = []; + var outputs: Array> = []; #if (arm_debug || arm_patch) public var name = ""; @@ -22,14 +22,115 @@ class LogicNode { this.tree = tree; } - public function addInput(node: LogicNode, from: Int) { - inputs.push(new LogicNodeInput(node, from)); + /** + Resize the inputs array to a given size to minimize dynamic + reallocation and over-allocation later. + **/ + inline function preallocInputs(amount: Int) { + this.inputs.resize(amount); } - public function addOutputs(nodes: Array) { - outputs.push(nodes); + /** + Resize the outputs array to a given size to minimize dynamic + reallocation and over-allocation later. + **/ + inline function preallocOutputs(amount: Int) { + this.outputs.resize(amount); + for (i in 0...outputs.length) { + outputs[i] = []; + } } + /** + Add a link between to nodes to the tree. + **/ + public static function addLink(fromNode: LogicNode, toNode: LogicNode, fromIndex: Int, toIndex: Int): LogicNodeLink { + var link = new LogicNodeLink(fromNode, toNode, fromIndex, toIndex); + + if (toNode.inputs.length <= toIndex) { + toNode.inputs.resize(toIndex + 1); + } + toNode.inputs[toIndex] = link; + + var fromNodeOuts = fromNode.outputs; + var outLen = fromNodeOuts.length; + if (outLen <= fromIndex) { + fromNodeOuts.resize(fromIndex + 1); + + // Initialize with empty arrays + for (i in 0...(fromIndex - (outLen - 1))) { + fromNodeOuts[i] = []; + } + } + fromNodeOuts[fromIndex].push(link); + + return link; + } + + #if arm_patch + /** + Removes a link from the tree. + **/ + static function removeLink(link: LogicNodeLink) { + link.fromNode.outputs[link.fromIndex].remove(link); + + // Reuse the same link and connect a default input node to it. + // That's why this function is only available in arm_patch mode, we need + // access to the link's type and value. + link.fromNode = LogicNode.createSocketDefaultNode(link.toNode.tree, link.toType, link.toValue); + link.fromIndex = 0; + } + + /** + Removes all inputs and their links from this node. + Warning: this function changes the amount of node inputs to 0! + **/ + function clearInputs() { + for (link in inputs) { + link.fromNode.outputs[link.fromIndex].remove(link); + } + inputs.resize(0); + } + + /** + Removes all outputs and their links from this node. + Warning: this function changes the amount of node inputs to 0! + **/ + function clearOutputs() { + for (links in outputs) { + for (link in links) { + var defaultNode = LogicNode.createSocketDefaultNode(tree, link.toType, link.toValue); + link.fromNode = defaultNode; + link.fromIndex = 0; + defaultNode.outputs[0] = [link]; + } + } + outputs.resize(0); + } + + /** + Creates a default node for a socket so that get() and set() can be + used without null checks. + Loosely equivalent to `make_logic.build_default_node()` in Python. + **/ + static inline function createSocketDefaultNode(tree: LogicTree, socketType: String, value: Dynamic): LogicNode { + // Make sure to not add these nodes to the LogicTree.nodes array as they + // won't be garbage collected then if unlinked later. + return switch (socketType) { + case "VECTOR": new armory.logicnode.VectorNode(tree, value[0], value[1], value[2]); + case "RGBA": new armory.logicnode.ColorNode(tree, value[0], value[1], value[2], value[3]); + case "RGB": new armory.logicnode.ColorNode(tree, value[0], value[1], value[2]); + case "VALUE": new armory.logicnode.FloatNode(tree, value); + case "INT": new armory.logicnode.IntegerNode(tree, value); + case "BOOLEAN": new armory.logicnode.BooleanNode(tree, value); + case "STRING": new armory.logicnode.StringNode(tree, value); + case "NONE": new armory.logicnode.NullNode(tree); + case "OBJECT": new armory.logicnode.ObjectNode(tree, value); + default: new armory.logicnode.DynamicNode(tree, value); + } + } + #end + /** Called when this node is activated. @param from impulse index @@ -42,42 +143,45 @@ class LogicNode { **/ function runOutput(i: Int) { if (i >= outputs.length) return; - for (o in outputs[i]) { - // Check which input activated the node - for (j in 0...o.inputs.length) { - if (o.inputs[j].node == this) { - o.run(j); - break; - } - } + for (outLink in outputs[i]) { + outLink.toNode.run(outLink.toIndex); } } - @:allow(armory.logicnode.LogicNodeInput) + @:allow(armory.logicnode.LogicNodeLink) function get(from: Int): Dynamic { return this; } - @:allow(armory.logicnode.LogicNodeInput) + @:allow(armory.logicnode.LogicNodeLink) function set(value: Dynamic) {} } -class LogicNodeInput { +@:allow(armory.logicnode.LogicNode) +@:allow(armory.logicnode.LogicTree) +class LogicNodeLink { - @:allow(armory.logicnode.LogicNode) - var node: LogicNode; - var from: Int; // Socket index + var fromNode: LogicNode; + var toNode: LogicNode; + var fromIndex: Int; + var toIndex: Int; - public function new(node: LogicNode, from: Int) { - this.node = node; - this.from = from; + #if arm_patch + var fromType: String; + var toType: String; + var toValue: Dynamic; + #end + + inline function new(fromNode: LogicNode, toNode: LogicNode, fromIndex: Int, toIndex: Int) { + this.fromNode = fromNode; + this.toNode = toNode; + this.fromIndex = fromIndex; + this.toIndex = toIndex; } - @:allow(armory.logicnode.LogicNode) - function get(): Dynamic { - return node.get(from); + inline function get(): Dynamic { + return fromNode.get(fromIndex); } - @:allow(armory.logicnode.LogicNode) - function set(value: Dynamic) { - node.set(value); + inline function set(value: Dynamic) { + fromNode.set(value); } } diff --git a/Sources/armory/logicnode/QuaternionNode.hx b/Sources/armory/logicnode/QuaternionNode.hx index 95880f4f..bf83f4de 100644 --- a/Sources/armory/logicnode/QuaternionNode.hx +++ b/Sources/armory/logicnode/QuaternionNode.hx @@ -11,10 +11,10 @@ class QuaternionNode extends LogicNode { super(tree); if (x != null) { - addInput(new FloatNode(tree, x), 0); - addInput(new FloatNode(tree, y), 0); - addInput(new FloatNode(tree, z), 0); - addInput(new FloatNode(tree, w), 0); + LogicNode.addLink(new FloatNode(tree, x), this, 0, 0); + LogicNode.addLink(new FloatNode(tree, y), this, 0, 1); + LogicNode.addLink(new FloatNode(tree, z), this, 0, 2); + LogicNode.addLink(new FloatNode(tree, w), this, 0, 3); } } @@ -27,15 +27,15 @@ class QuaternionNode extends LogicNode { switch (from){ case 0: return value; - case 1: - var value1 = new Vec4(); + case 1: + var value1 = new Vec4(); value1.x = value.x; value1.y = value.y; value1.z = value.z; value1.w = 0; // use 0 to avoid this vector being translated. return value1; case 2: - return value.w; + return value.w; default: return null; } diff --git a/Sources/armory/logicnode/SetParentNode.hx b/Sources/armory/logicnode/SetParentNode.hx index 8d37720d..457facad 100644 --- a/Sources/armory/logicnode/SetParentNode.hx +++ b/Sources/armory/logicnode/SetParentNode.hx @@ -14,8 +14,8 @@ class SetParentNode extends LogicNode { var parent: Object; var isUnparent = false; - if (Std.is(inputs[2].node, ObjectNode)) { - var parentNode = cast(inputs[2].node, ObjectNode); + if (Std.is(inputs[2].fromNode, ObjectNode)) { + var parentNode = cast(inputs[2].fromNode, ObjectNode); isUnparent = parentNode.objectName == ""; } if (isUnparent) parent = iron.Scene.active.root; @@ -24,7 +24,7 @@ class SetParentNode extends LogicNode { if (object == null || parent == null || object.parent == parent) return; object.parent.removeChild(object, isUnparent); // keepTransform - + #if arm_physics var rigidBody = object.getTrait(RigidBody); if (rigidBody != null) rigidBody.setActivationState(0); diff --git a/Sources/armory/logicnode/VectorNode.hx b/Sources/armory/logicnode/VectorNode.hx index 2c186907..09cb0204 100644 --- a/Sources/armory/logicnode/VectorNode.hx +++ b/Sources/armory/logicnode/VectorNode.hx @@ -10,9 +10,9 @@ class VectorNode extends LogicNode { super(tree); if (x != null) { - addInput(new FloatNode(tree, x), 0); - addInput(new FloatNode(tree, y), 0); - addInput(new FloatNode(tree, z), 0); + LogicNode.addLink(new FloatNode(tree, x), this, 0, 0); + LogicNode.addLink(new FloatNode(tree, y), this, 0, 1); + LogicNode.addLink(new FloatNode(tree, z), this, 0, 2); } } diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index 550acb5b..fe486bc4 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -6,7 +6,7 @@ import armory.logicnode.LogicTree; #if arm_patch @:expose("LivePatch") #end @:access(armory.logicnode.LogicNode) -@:access(armory.logicnode.LogicNodeInput) +@:access(armory.logicnode.LogicNodeLink) class LivePatch extends iron.Trait { #if !arm_patch @@ -40,11 +40,54 @@ class LivePatch extends iron.Trait { var toNode = tree.nodes[toNodeName]; if (fromNode == null || toNode == null) return; - // Don't add a connection twice - if (!fromNode.outputs[fromIndex].contains(toNode)) { - fromNode.outputs[fromIndex].push(toNode); + LogicNode.addLink(fromNode, toNode, fromIndex, toIndex); + } + + public static function patchSetNodeLinks(treeName: String, nodeName: String, inputDatas: Array, outputDatas: Array>) { + var tree = LogicTree.nodeTrees[treeName]; + if (tree == null) return; + + var node = tree.nodes[nodeName]; + if (node == null) return; + + node.clearInputs(); + node.clearOutputs(); + + for (inputData in inputDatas) { + var fromNode: LogicNode; + var fromIndex: Int; + + if (inputData.isLinked) { + fromNode = tree.nodes[inputData.fromNode]; + if (fromNode == null) continue; + fromIndex = inputData.fromIndex; + } + else { + fromNode = LogicNode.createSocketDefaultNode(node.tree, inputData.socketType, inputData.socketValue); + fromIndex = 0; + } + + LogicNode.addLink(fromNode, node, fromIndex, inputData.toIndex); + } + + for (outputData in outputDatas) { + for (linkData in outputData) { + var toNode: LogicNode; + var toIndex: Int; + + if (linkData.isLinked) { + toNode = tree.nodes[linkData.toNode]; + if (toNode == null) continue; + toIndex = linkData.toIndex; + } + else { + toNode = LogicNode.createSocketDefaultNode(node.tree, linkData.socketType, linkData.socketValue); + toIndex = 0; + } + + LogicNode.addLink(node, toNode, linkData.fromIndex, toIndex); + } } - toNode.inputs[toIndex] = new LogicNodeInput(fromNode, fromIndex); } public static function patchUpdateNodeProp(treeName: String, nodeName: String, propName: String, value: Dynamic) { @@ -123,11 +166,12 @@ class LivePatch extends iron.Trait { var i = 0; for (inputData in inputDatas) { - newNode.addInput(createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), i++); + LogicNode.addLink(LogicNode.createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), newNode, 0, i++); } + i = 0; for (outputData in outputDatas) { - newNode.addOutputs([createSocketDefaultNode(newNode.tree, outputData[0], outputData[1])]); + LogicNode.addLink(newNode, LogicNode.createSocketDefaultNode(newNode.tree, outputData[0], outputData[1]), i++, 0); } } @@ -151,27 +195,14 @@ class LivePatch extends iron.Trait { var i = 0; for (inputData in inputDatas) { - newNode.addInput(createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), i++); + LogicNode.addLink(LogicNode.createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), newNode, 0, i++); } + i = 0; for (outputData in outputDatas) { - newNode.addOutputs([createSocketDefaultNode(newNode.tree, outputData[0], outputData[1])]); + LogicNode.addLink(newNode, LogicNode.createSocketDefaultNode(newNode.tree, outputData[0], outputData[1]), i++, 0); } } - static inline function createSocketDefaultNode(tree: LogicTree, socketType: String, value: Dynamic): LogicNode { - return switch (socketType) { - case "VECTOR": new armory.logicnode.VectorNode(tree, value[0], value[1], value[2]); - case "RGBA": new armory.logicnode.ColorNode(tree, value[0], value[1], value[2], value[3]); - case "RGB": new armory.logicnode.ColorNode(tree, value[0], value[1], value[2]); - case "VALUE": new armory.logicnode.FloatNode(tree, value); - case "INT": new armory.logicnode.IntegerNode(tree, value); - case "BOOLEAN": new armory.logicnode.BooleanNode(tree, value); - case "STRING": new armory.logicnode.StringNode(tree, value); - case "NONE": new armory.logicnode.NullNode(tree); - case "OBJECT": new armory.logicnode.ObjectNode(tree, value); - default: new armory.logicnode.DynamicNode(tree, value); - } - } #end } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 99314c54..ba60b13f 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -269,6 +269,53 @@ def send_event(event_id: str, opt_data: Any = None): js = f'LivePatch.patchNodeCopy("{tree_name}", "{node_name}", "{newnode_name}", {props_list}, {inp_data}, {out_data});' write_patch(js) + elif event_id == 'ln_update_sockets': + node: ArmLogicTreeNode = opt_data + + tree_name = arm.node_utils.get_export_tree_name(node.get_tree()) + node_name = arm.node_utils.get_export_node_name(node)[1:] + + inp_data = '[' + for idx, inp in enumerate(node.inputs): + inp_data += '{' + # is_linked can be true even if there are no links if the + # user starts dragging a connection away before releasing + # the mouse + if inp.is_linked and len(inp.links) > 0: + inp_data += 'isLinked: true,' + inp_data += f'fromNode: "{arm.node_utils.get_export_node_name(inp.links[0].from_node)[1:]}",' + inp_data += f'fromIndex: {arm.node_utils.get_socket_index(inp.links[0].from_node.outputs, inp.links[0].from_socket)},' + else: + inp_data += 'isLinked: false,' + inp_data += f'socketType: "{inp.arm_socket_type}",' + inp_data += f'socketValue: {arm.node_utils.haxe_format_socket_val(inp.get_default_value())},' + + inp_data += f'toIndex: {idx}' + inp_data += '},' + inp_data += ']' + + out_data = '[' + for idx, out in enumerate(node.outputs): + out_data += '[' + for link in out.links: + out_data += '{' + if out.is_linked: + out_data += 'isLinked: true,' + out_data += f'toNode: "{arm.node_utils.get_export_node_name(link.to_node)[1:]}",' + out_data += f'toIndex: {arm.node_utils.get_socket_index(link.to_node.inputs, link.to_socket)},' + else: + out_data += 'isLinked: false,' + out_data += f'socketType: "{out.arm_socket_type}",' + out_data += f'socketValue: {arm.node_utils.haxe_format_socket_val(out.get_default_value())},' + + out_data += f'fromIndex: {idx}' + out_data += '},' + out_data += '],' + out_data += ']' + + js = f'LivePatch.patchSetNodeLinks("{tree_name}", "{node_name}", {inp_data}, {out_data});' + write_patch(js) + def on_operator(operator_id: str): """As long as bpy.msgbus doesn't listen to changes made by diff --git a/blender/arm/logicnode/arm_nodes.py b/blender/arm/logicnode/arm_nodes.py index d7548c5c..5fd365a6 100644 --- a/blender/arm/logicnode/arm_nodes.py +++ b/blender/arm/logicnode/arm_nodes.py @@ -24,6 +24,10 @@ category_items: ODict[str, List['ArmNodeCategory']] = OrderedDict() array_nodes = dict() +# See ArmLogicTreeNode.update() +# format: [tree pointer => (num inputs, num input links, num outputs, num output links)] +last_node_state: dict[int, tuple[int, int, int, int]] = {} + class ArmLogicTreeNode(bpy.types.Node): arm_category = PKG_AS_CATEGORY @@ -62,6 +66,40 @@ class ArmLogicTreeNode(bpy.types.Node): def get_tree(self): return self.id_data + def update(self): + """Called if the node was updated in some way, for example + if socket connections change. This callback is not called if + socket values were changed. + """ + def num_connected(sockets): + return sum([socket.is_linked for socket in sockets]) + + # If a link between sockets is removed, there is currently no + # _reliable_ way in the Blender API to check which connection + # was removed (*). + # + # So instead we just check _if_ the number of links or sockets + # has changed (the update function is called before and after + # each link removal). Because we listen for those updates in + # general, we automatically also listen to link creation events, + # which is more stable than using the dedicated callback for + # that (`insert_link()`), because adding links can remove other + # links and we would need to react to that as well. + # + # (*) https://devtalk.blender.org/t/how-to-detect-which-link-was-deleted-by-user-in-node-editor + + self_id = self.as_pointer() + + current_state = (len(self.inputs), num_connected(self.inputs), len(self.outputs), num_connected(self.outputs)) + if self_id not in last_node_state: + # Lazily initialize the last_node_state dict to also store + # state for nodes that already exist in the tree + last_node_state[self_id] = current_state + + if last_node_state[self_id] != current_state: + arm.live_patch.send_event('ln_update_sockets', self) + last_node_state[self_id] = current_state + def free(self): """Called before the node is deleted.""" arm.live_patch.send_event('ln_delete', self) @@ -84,7 +122,8 @@ class ArmLogicTreeNode(bpy.types.Node): def insert_link(self, link: bpy.types.NodeLink): """Called on *both* nodes when a link between two nodes is created.""" - arm.live_patch.send_event('ln_insert_link', (self, link)) + # arm.live_patch.send_event('ln_insert_link', (self, link)) + pass def get_replacement_node(self, node_tree: bpy.types.NodeTree): # needs to be overridden by individual node classes with arm_version>1 diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index 3299e085..0e594f17 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -68,6 +68,7 @@ def build_node_tree(node_group: 'arm.nodes_logic.ArmLogicTree'): with open(file, 'w', encoding="utf-8") as f: f.write('package ' + pack_path + '.node;\n\n') + f.write('@:access(armory.logicnode.LogicNode)') f.write('@:keep class ' + group_name + ' extends armory.logicnode.LogicTree {\n\n') f.write('\tvar functionNodes:Map;\n\n') f.write('\tvar functionOutputNodes:Map;\n\n') @@ -162,8 +163,12 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: prop = arm.node_utils.haxe_format_prop_value(node, prop_name) f.write('\t\t' + name + '.' + prop_name + ' = ' + prop + ';\n') + # Avoid unnecessary input/output array resizes + f.write(f'\t\t{name}.preallocInputs({len(node.inputs)});\n') + f.write(f'\t\t{name}.preallocOutputs({len(node.outputs)});\n') + # Create inputs - for inp in node.inputs: + for idx, inp in enumerate(node.inputs): # True if the input is connected to a unlinked reroute # somewhere down the reroute line unconnected = False @@ -191,34 +196,40 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: for i in range(0, len(n.outputs)): if n.outputs[i] == socket: inp_from = i + from_type = socket.arm_socket_type break # Not linked -> create node with default values else: inp_name = build_default_node(inp) inp_from = 0 + from_type = inp.arm_socket_type # The input is linked to a reroute, but the reroute is unlinked if unconnected: inp_name = build_default_node(inp) inp_from = 0 + from_type = inp.arm_socket_type # Add input - f.write('\t\t' + name + '.addInput(' + inp_name + ', ' + str(inp_from) + ');\n') + f.write(f'\t\t{"var __link = " if wrd.arm_live_patch else ""}armory.logicnode.LogicNode.addLink({inp_name}, {name}, {inp_from}, {idx});\n') + if wrd.arm_live_patch: + to_type = inp.arm_socket_type + f.write(f'\t\t__link.fromType = "{from_type}";') + f.write(f'\t\t__link.toType = "{to_type}";') + f.write(f'\t\t__link.toValue = {arm.node_utils.haxe_format_socket_val(inp.get_default_value())};') # Create outputs - for out in node.outputs: - if out.is_linked: - out_name = '' - for node in collect_nodes_from_output(out, f): - out_name += '[' if len(out_name) == 0 else ', ' - out_name += node - out_name += ']' - # Not linked - create node with default values - else: - out_name = '[' + build_default_node(out) + ']' - # Add outputs - f.write('\t\t' + name + '.addOutputs(' + out_name + ');\n') + for idx, out in enumerate(node.outputs): + # Linked outputs are already handled after iterating over inputs + # above, so only unconnected outputs are handled here + if not out.is_linked: + f.write(f'\t\t{"var __link = " if wrd.arm_live_patch else ""}armory.logicnode.LogicNode.addLink({name}, {build_default_node(out)}, {idx}, 0);\n') + if wrd.arm_live_patch: + out_type = out.arm_socket_type + f.write(f'\t\t__link.fromType = "{out_type}";') + f.write(f'\t\t__link.toType = "{out_type}";') + f.write(f'\t\t__link.toValue = {arm.node_utils.haxe_format_socket_val(out.get_default_value())};') return name From 7eced3b4f57a9ee40fb01deaab6bb52f89da2b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 13:36:55 +0200 Subject: [PATCH 25/45] Live patch: don't try to re-export if live patch is not active --- blender/arm/live_patch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index ba60b13f..d48f2f3e 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -52,7 +52,7 @@ def stop(): def patch_export(): """Re-export the current scene and update the game accordingly.""" - if state.proc_build is not None: + if not __running or state.proc_build is not None: return arm.assets.invalidate_enabled = False From 2b6a7a4f78172ca3502437e1d90aeb468ea5cc4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 13:37:13 +0200 Subject: [PATCH 26/45] Live patch: add another ignored operator --- blender/arm/live_patch.py | 1 + 1 file changed, 1 insertion(+) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index d48f2f3e..4bb0be09 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -349,6 +349,7 @@ IGNORE_OPERATORS = ( 'OBJECT_OT_editmode_toggle', 'NODE_OT_delete', 'NODE_OT_duplicate_move', + 'NODE_OT_hide_toggle', 'NODE_OT_link', 'NODE_OT_select', 'NODE_OT_translate_attach_remove_on_cancel', From 82c7302dd92826473171e92355c347e7493e93c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 13:40:39 +0200 Subject: [PATCH 27/45] Live patch: simplify node deletion code --- Sources/armory/trait/internal/LivePatch.hx | 33 ++-------------------- blender/arm/live_patch.py | 5 +--- 2 files changed, 4 insertions(+), 34 deletions(-) diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index fe486bc4..b9beccbe 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -110,42 +110,15 @@ class LivePatch extends iron.Trait { @:privateAccess node.inputs[socketIndex].set(value); } - public static function patchNodeDelete(treeName: String, nodeName: String, outputDatas: Array>) { + public static function patchNodeDelete(treeName: String, nodeName: String) { var tree = LogicTree.nodeTrees[treeName]; if (tree == null) return; var node = tree.nodes[nodeName]; if (node == null) return; - // Remove this node from the outputs of connected nodes - for (input in node.inputs) { - var inNodeOutputs = input.node.outputs; - - // Default nodes don't have outputs when exported from Blender - if (input.from < inNodeOutputs.length) { - for (outNode in inNodeOutputs[input.from]) { - if (outNode == node) { - inNodeOutputs[input.from].remove(outNode); - } - } - } - - } - - // Replace connected inputs of other nodes with default nodes - for (outputNodes in node.outputs) { - for (outNode in outputNodes) { - for (outNodeInput in outNode.inputs) { - if (outNodeInput.node == node) { - var outputIndex = outNodeInput.from; - var socketType = outputDatas[outputIndex][0]; - var socketValue = outputDatas[outputIndex][1]; - outNodeInput.node = createSocketDefaultNode(node.tree, socketType, socketValue); - } - } - } - } - + node.clearOutputs(); + node.clearInputs(); tree.nodes.remove(nodeName); } diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 4bb0be09..4d2f0398 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -242,10 +242,7 @@ def send_event(event_id: str, opt_data: Any = None): tree_name = arm.node_utils.get_export_tree_name(node.get_tree()) node_name = arm.node_utils.get_export_node_name(node)[1:] - out_data = [(out.arm_socket_type, out.get_default_value()) for out in node.outputs] - out_data = arm.node_utils.haxe_format_socket_val(out_data) - - js = f'LivePatch.patchNodeDelete("{tree_name}", "{node_name}", {out_data});' + js = f'LivePatch.patchNodeDelete("{tree_name}", "{node_name}");' write_patch(js) elif event_id == 'ln_copy': From af520b518ee1bb54a22c66445a1762f793448947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 13:54:48 +0200 Subject: [PATCH 28/45] Fix compatibility for frames and reroutes --- blender/arm/logicnode/replacement.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/blender/arm/logicnode/replacement.py b/blender/arm/logicnode/replacement.py index c01556a6..ac4f8632 100644 --- a/blender/arm/logicnode/replacement.py +++ b/blender/arm/logicnode/replacement.py @@ -294,6 +294,9 @@ def node_compat_sdk2108(): if not node.__class__.is_registered_node_type(): continue + if node.type in ('FRAME', 'REROUTE'): + continue + newnode = tree.nodes.new(node.__class__.bl_idname) newnode.parent = node.parent From 0456d5f080370808a7c5cd08398f368888a9d2c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 18:21:06 +0200 Subject: [PATCH 29/45] Remove legacy code stub --- blender/arm/make.py | 3 +-- blender/arm/write_data.py | 5 +---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/blender/arm/make.py b/blender/arm/make.py index 8dc9afd2..ae63286d 100755 --- a/blender/arm/make.py +++ b/blender/arm/make.py @@ -219,8 +219,7 @@ def export_data(fp, sdk_path): # Write khafile.js enable_dce = state.is_publish and wrd.arm_dce - import_logic = not state.is_publish and arm.utils.logic_editor_space() != None - write_data.write_khafilejs(state.is_play, export_physics, export_navigation, export_ui, state.is_publish, enable_dce, ArmoryExporter.import_traits, import_logic) + write_data.write_khafilejs(state.is_play, export_physics, export_navigation, export_ui, state.is_publish, enable_dce, ArmoryExporter.import_traits) # Write Main.hx - depends on write_khafilejs for writing number of assets scene_name = arm.utils.get_project_scene_name() diff --git a/blender/arm/write_data.py b/blender/arm/write_data.py index 8e2e01ad..f43c624d 100755 --- a/blender/arm/write_data.py +++ b/blender/arm/write_data.py @@ -54,7 +54,7 @@ def remove_readonly(func, path, excinfo): def write_khafilejs(is_play, export_physics: bool, export_navigation: bool, export_ui: bool, is_publish: bool, - enable_dce: bool, import_traits: List[str], import_logicnodes) -> None: + enable_dce: bool, import_traits: List[str]) -> None: wrd = bpy.data.worlds['Arm'] sdk_path = arm.utils.get_sdk_path() @@ -160,9 +160,6 @@ project.addSources('Sources'); # if export_navigation: # khafile.write("""project.addParameter("--macro include('armory.trait.navigation')");\n""") - # if import_logicnodes: # Live patching for logic nodes - # khafile.write("""project.addParameter("--macro include('armory.logicnode')");\n""") - if not wrd.arm_compiler_inline: khafile.write("project.addParameter('--no-inline');\n") From ff5fd9c7eda4ef7b80a872f734d6880a38cc19c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 19:49:19 +0200 Subject: [PATCH 30/45] Fix generator usage --- blender/arm/live_patch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 4d2f0398..c6c3a466 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -224,7 +224,7 @@ def send_event(event_id: str, opt_data: Any = None): node_name = arm.node_utils.get_export_node_name(node)[1:] node_type = 'armory.logicnode.' + node.bl_idname[2:] - prop_names = (p for p in arm.node_utils.get_haxe_property_names(node)) + prop_names = tuple(arm.node_utils.get_haxe_property_names(node)) prop_values = (getattr(node, prop_name) for prop_name in prop_names) prop_datas = arm.node_utils.haxe_format_socket_val(list(zip(prop_names, prop_values))) From 0a582797567e5183d4ae9ba2ec9f2aa88f36c00c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 19:49:35 +0200 Subject: [PATCH 31/45] Live patch: add more ignored operators --- blender/arm/live_patch.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index c6c3a466..0c4fe046 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -340,16 +340,28 @@ def on_operator(operator_id: str): # Don't re-export the scene for the following operators IGNORE_OPERATORS = ( - 'VIEW3D_OT_select', - 'VIEW3D_OT_select_box', - 'OUTLINER_OT_item_activate', - 'OBJECT_OT_editmode_toggle', + 'ARM_OT_node_add_input', + 'ARM_OT_node_add_input_output', + 'ARM_OT_node_add_input_value', + 'ARM_OT_node_add_output', + 'ARM_OT_node_call_func', + 'ARM_OT_node_remove_input', + 'ARM_OT_node_remove_input_output', + 'ARM_OT_node_remove_input_value', + 'ARM_OT_node_remove_output', + 'ARM_OT_node_search', + 'NODE_OT_delete', 'NODE_OT_duplicate_move', 'NODE_OT_hide_toggle', 'NODE_OT_link', 'NODE_OT_select', - 'NODE_OT_translate_attach_remove_on_cancel', 'NODE_OT_translate_attach', + 'NODE_OT_translate_attach_remove_on_cancel', + + 'OBJECT_OT_editmode_toggle', + 'OUTLINER_OT_item_activate', 'UI_OT_button_string_clear' + 'VIEW3D_OT_select', + 'VIEW3D_OT_select_box', ) From 568f4f3a6deab58a4e3d7d3ff63467a6ab4db554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 19:51:01 +0200 Subject: [PATCH 32/45] Remove unnecessary privateAccess metadata --- Sources/armory/trait/internal/LivePatch.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index b9beccbe..d4548957 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -107,7 +107,7 @@ class LivePatch extends iron.Trait { var node = tree.nodes[nodeName]; if (node == null) return; - @:privateAccess node.inputs[socketIndex].set(value); + node.inputs[socketIndex].set(value); } public static function patchNodeDelete(treeName: String, nodeName: String) { From dbb0764ca7f1a7cd84a375f8edebdfe8db7e39c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 20:16:54 +0200 Subject: [PATCH 33/45] Fix typo --- blender/arm/live_patch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 0c4fe046..18f2dcdc 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -361,7 +361,7 @@ IGNORE_OPERATORS = ( 'OBJECT_OT_editmode_toggle', 'OUTLINER_OT_item_activate', - 'UI_OT_button_string_clear' + 'UI_OT_button_string_clear', 'VIEW3D_OT_select', 'VIEW3D_OT_select_box', ) From 6050bceaf16fc8fb75b03d0cffe0bdc9f04a1ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 20:17:29 +0200 Subject: [PATCH 34/45] Fix nodes with "..._get" property names --- blender/arm/live_patch.py | 13 +++++++++---- blender/arm/make_logic.py | 6 +++--- blender/arm/node_utils.py | 7 +++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 18f2dcdc..717600c3 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -188,6 +188,11 @@ def send_event(event_id: str, opt_data: Any = None): value = arm.node_utils.haxe_format_prop_value(node, prop_name) + if prop_name.endswith('_get'): + # Hack because some nodes use a different Python property + # name than they use in Haxe + prop_name = prop_name[:-4] + js = f'LivePatch.patchUpdateNodeProp("{tree_name}", "{node_name}", "{prop_name}", {value});' write_patch(js) @@ -224,9 +229,9 @@ def send_event(event_id: str, opt_data: Any = None): node_name = arm.node_utils.get_export_node_name(node)[1:] node_type = 'armory.logicnode.' + node.bl_idname[2:] - prop_names = tuple(arm.node_utils.get_haxe_property_names(node)) - prop_values = (getattr(node, prop_name) for prop_name in prop_names) - prop_datas = arm.node_utils.haxe_format_socket_val(list(zip(prop_names, prop_values))) + prop_py_names, prop_hx_names = zip(*arm.node_utils.get_haxe_property_names(node)) + prop_values = (getattr(node, prop_name) for prop_name in prop_py_names) + prop_datas = arm.node_utils.haxe_format_socket_val(list(zip(prop_hx_names, prop_values))) inp_data = [(inp.arm_socket_type, inp.get_default_value()) for inp in node.inputs] inp_data = arm.node_utils.haxe_format_socket_val(inp_data) @@ -256,7 +261,7 @@ def send_event(event_id: str, opt_data: Any = None): newnode_name = arm.node_utils.get_export_node_name(newnode)[1:] node_name = arm.node_utils.get_export_node_name(node)[1:] - props_list = '[' + ','.join(f'"{p}"' for p in arm.node_utils.get_haxe_property_names(node)) + ']' + props_list = '[' + ','.join(f'"{p}"' for _, p in arm.node_utils.get_haxe_property_names(node)) + ']' inp_data = [(inp.arm_socket_type, inp.get_default_value()) for inp in newnode.inputs] inp_data = arm.node_utils.haxe_format_socket_val(inp_data) diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index 0e594f17..ad5a28ec 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -159,9 +159,9 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: f.write(f'\t\tthis.nodes["{name[1:]}"] = {name};\n') # Properties - for prop_name in arm.node_utils.get_haxe_property_names(node): - prop = arm.node_utils.haxe_format_prop_value(node, prop_name) - f.write('\t\t' + name + '.' + prop_name + ' = ' + prop + ';\n') + for prop_py_name, prop_hx_name in arm.node_utils.get_haxe_property_names(node): + prop = arm.node_utils.haxe_format_prop_value(node, prop_py_name) + f.write('\t\t' + name + '.' + prop_hx_name + ' = ' + prop + ';\n') # Avoid unnecessary input/output array resizes f.write(f'\t\t{name}.preallocInputs({len(node.inputs)});\n') diff --git a/blender/arm/node_utils.py b/blender/arm/node_utils.py index 747360d5..ef465b32 100755 --- a/blender/arm/node_utils.py +++ b/blender/arm/node_utils.py @@ -110,7 +110,7 @@ def get_export_node_name(node: bpy.types.Node) -> str: return '_' + arm.utils.safesrc(node.name) -def get_haxe_property_names(node: bpy.types.Node) -> Generator[str, None, None]: +def get_haxe_property_names(node: bpy.types.Node) -> Generator[tuple[str, str], None, None]: """Generator that yields the names of all node properties that have a counterpart in the node's Haxe class. """ @@ -121,7 +121,10 @@ def get_haxe_property_names(node: bpy.types.Node) -> Generator[str, None, None]: prop_name = f'property{i}' prop_found = hasattr(node, prop_name) if prop_found: - yield prop_name + # Haxe properties are called property0 - property9 even if + # their Python equivalent can end with '_get', so yield + # both names + yield prop_name, f'property{i}' def haxe_format_socket_val(socket_val: Any, array_outer_brackets=True) -> str: From 6d2b825dd54f62eb32a9c4a6b0f6da497c7d3f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 20:24:04 +0200 Subject: [PATCH 35/45] Fix LN replacement and take arm_watch and arm_logic_id properties into account --- blender/arm/logicnode/replacement.py | 26 +++++++++++++------------- blender/arm/nodes_logic.py | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/blender/arm/logicnode/replacement.py b/blender/arm/logicnode/replacement.py index ac4f8632..05ab2426 100644 --- a/blender/arm/logicnode/replacement.py +++ b/blender/arm/logicnode/replacement.py @@ -129,15 +129,11 @@ def replace(tree: bpy.types.NodeTree, node: 'ArmLogicTreeNode'): if isinstance(response, arm_nodes.ArmLogicTreeNode): newnode = response # some misc. properties - newnode.parent = node.parent - newnode.location = node.location - newnode.select = node.select + copy_basic_node_props(from_node=node, to_node=newnode) elif isinstance(response, list): # a list of nodes: for newnode in response: - newnode.parent = node.parent - newnode.location = node.location - newnode.select = node.select + copy_basic_node_props(from_node=node, to_node=newnode) elif isinstance(response, NodeReplacement): replacement = response @@ -152,9 +148,7 @@ def replace(tree: bpy.types.NodeTree, node: 'ArmLogicTreeNode'): raise LookupError("The provided NodeReplacement doesn't seem to correspond to the node needing replacement") # some misc. properties - newnode.parent = node.parent - newnode.location = node.location - newnode.select = node.select + copy_basic_node_props(from_node=node, to_node=newnode) # now, use the `replacement` to hook up the new node correctly # start by applying defaults @@ -276,6 +270,15 @@ def replace_all(): bpy.ops.arm.show_node_update_errors() +def copy_basic_node_props(from_node: bpy.types.Node, to_node: bpy.types.Node): + to_node.parent = from_node.parent + to_node.location = from_node.location + to_node.select = from_node.select + + to_node.arm_logic_id = from_node.arm_logic_id + to_node.arm_watch = from_node.arm_watch + + def node_compat_sdk2108(): """SDK 21.08 broke compatibility with older nodes as nodes now use custom sockets even for Blender's default data types and custom @@ -298,10 +301,7 @@ def node_compat_sdk2108(): continue newnode = tree.nodes.new(node.__class__.bl_idname) - - newnode.parent = node.parent - newnode.location = node.location - newnode.select = node.select + copy_basic_node_props(from_node=node, to_node=newnode) # Also copy the node's version number to _not_ prevent actual node # replacement after this step diff --git a/blender/arm/nodes_logic.py b/blender/arm/nodes_logic.py index ff1c20ce..12f605fb 100755 --- a/blender/arm/nodes_logic.py +++ b/blender/arm/nodes_logic.py @@ -354,7 +354,7 @@ class ReplaceNodesOperator(bpy.types.Operator): bl_description = "Replace deprecated nodes" def execute(self, context): - arm.logicnode.replacement.replace_all(force_replacement=True) + arm.logicnode.replacement.replace_all() return {'FINISHED'} @classmethod From 8e1aa2fb0d290af49809adc98ee3b17ecf267f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 23:06:53 +0200 Subject: [PATCH 36/45] Live patch: fix creation of nodes without properties --- blender/arm/live_patch.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 717600c3..5b375227 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -229,7 +229,8 @@ def send_event(event_id: str, opt_data: Any = None): node_name = arm.node_utils.get_export_node_name(node)[1:] node_type = 'armory.logicnode.' + node.bl_idname[2:] - prop_py_names, prop_hx_names = zip(*arm.node_utils.get_haxe_property_names(node)) + prop_names = list(arm.node_utils.get_haxe_property_names(node)) + prop_py_names, prop_hx_names = zip(*prop_names) if len(prop_names) > 0 else ([], []) prop_values = (getattr(node, prop_name) for prop_name in prop_py_names) prop_datas = arm.node_utils.haxe_format_socket_val(list(zip(prop_hx_names, prop_values))) From cf1dd0ac712f15d8347690cf015208675e253d8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 24 Jul 2021 23:07:22 +0200 Subject: [PATCH 37/45] Live patch: fix creation of node outputs --- Sources/armory/logicnode/LogicNode.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/armory/logicnode/LogicNode.hx b/Sources/armory/logicnode/LogicNode.hx index 18b3602d..6c48fde3 100644 --- a/Sources/armory/logicnode/LogicNode.hx +++ b/Sources/armory/logicnode/LogicNode.hx @@ -58,7 +58,7 @@ class LogicNode { fromNodeOuts.resize(fromIndex + 1); // Initialize with empty arrays - for (i in 0...(fromIndex - (outLen - 1))) { + for (i in outLen...fromIndex + 1) { fromNodeOuts[i] = []; } } From c52d25e471767aa37371f3abc406c1a241a57319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 25 Jul 2021 00:15:32 +0200 Subject: [PATCH 38/45] arm_props.py: cleanup and fix docstrings --- blender/arm/logicnode/arm_props.py | 44 +++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/blender/arm/logicnode/arm_props.py b/blender/arm/logicnode/arm_props.py index c2777689..1a32cb28 100644 --- a/blender/arm/logicnode/arm_props.py +++ b/blender/arm/logicnode/arm_props.py @@ -15,9 +15,6 @@ from typing import Any, Callable, Sequence, Union import bpy from bpy.props import * -# Property parameter name `set` shadows built-in type `set` -__set = set - def __haxe_prop(prop_type: Callable, prop_name: str, *args, **kwargs) -> Any: """Declares a logic node property as a property that will be @@ -55,8 +52,8 @@ def HaxeBoolProperty( get=None, set=None ) -> 'bpy.types.BoolProperty': - """Declares a new BoolProperty that has a counterpart with the given - prop_name (Python and Haxe names must be identical for now). + """Declares a new BoolProperty that has a Haxe counterpart with the + given prop_name (Python and Haxe names must be identical for now). """ return __haxe_prop(BoolProperty, **locals()) @@ -76,8 +73,9 @@ def HaxeBoolVectorProperty( get=None, set=None ) -> list['bpy.types.BoolProperty']: - """Declares a new BoolVectorProperty that has a counterpart with the - given prop_name (Python and Haxe names must be identical for now). + """Declares a new BoolVectorProperty that has a Haxe counterpart + with the given prop_name (Python and Haxe names must be identical + for now). """ return __haxe_prop(BoolVectorProperty, **locals()) @@ -92,8 +90,9 @@ def HaxeCollectionProperty( override: set = set(), tags: set = set() ) -> 'bpy.types.CollectionProperty': - """Declares a new CollectionProperty that has a counterpart with the - given prop_name (Python and Haxe names must be identical for now). + """Declares a new CollectionProperty that has a Haxe counterpart + with the given prop_name (Python and Haxe names must be identical + for now). """ return __haxe_prop(CollectionProperty, **locals()) @@ -112,8 +111,8 @@ def HaxeEnumProperty( get=None, set=None ) -> 'bpy.types.EnumProperty': - """Declares a new EnumProperty that has a counterpart with the given - prop_name (Python and Haxe names must be identical for now). + """Declares a new EnumProperty that has a Haxe counterpart with the + given prop_name (Python and Haxe names must be identical for now). """ return __haxe_prop(EnumProperty, **locals()) @@ -139,7 +138,7 @@ def HaxeFloatProperty( get=None, set=None ) -> 'bpy.types.FloatProperty': - """Declares a new FloatProperty that has a counterpart with the + """Declares a new FloatProperty that has a Haxe counterpart with the given prop_name (Python and Haxe names must be identical for now). """ return __haxe_prop(FloatProperty, **locals()) @@ -167,8 +166,9 @@ def HaxeFloatVectorProperty( get=None, set=None ) -> list['bpy.types.FloatProperty']: - """Declares a new FloatVectorProperty that has a counterpart with the - given prop_name (Python and Haxe names must be identical for now). + """Declares a new FloatVectorProperty that has a Haxe counterpart + with the given prop_name (Python and Haxe names must be identical + for now). """ return __haxe_prop(FloatVectorProperty, **locals()) @@ -192,8 +192,8 @@ def HaxeIntProperty( get=None, set=None ) -> 'bpy.types.IntProperty': - """Declares a new IntProperty that has a counterpart with the given - prop_name (Python and Haxe names must be identical for now). + """Declares a new IntProperty that has a Haxe counterpart with the + given prop_name (Python and Haxe names must be identical for now). """ return __haxe_prop(IntProperty, **locals()) @@ -218,8 +218,8 @@ def HaxeIntVectorProperty( get=None, set=None ) -> list['bpy.types.IntProperty']: - """Declares a new IntVectorProperty that has a counterpart with the given - prop_name (Python and Haxe names must be identical for now). + """Declares a new IntVectorProperty that has a Haxe counterpart with + the given prop_name (Python and Haxe names must be identical for now). """ return __haxe_prop(IntVectorProperty, **locals()) @@ -236,8 +236,8 @@ def HaxePointerProperty( poll=None, update=None ) -> 'bpy.types.PointerProperty': - """Declares a new PointerProperty that has a counterpart with the - given prop_name (Python and Haxe names must be identical for now). + """Declares a new PointerProperty that has a Haxe counterpart with + the given prop_name (Python and Haxe names must be identical for now). """ return __haxe_prop(PointerProperty, **locals()) @@ -261,7 +261,7 @@ def HaxeStringProperty( get=None, set=None ) -> 'bpy.types.StringProperty': - """Declares a new StringProperty that has a counterpart with the - given prop_name (Python and Haxe names must be identical for now). + """Declares a new StringProperty that has a Haxe counterpart with + the given prop_name (Python and Haxe names must be identical for now). """ return __haxe_prop(StringProperty, **locals()) From ffee6dc521138fa25f8e896dc6765527dc56f1b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 25 Jul 2021 17:02:29 +0200 Subject: [PATCH 39/45] Fix error caused by resolving merge conflict --- blender/arm/handlers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/blender/arm/handlers.py b/blender/arm/handlers.py index 24786a07..f3d03f42 100644 --- a/blender/arm/handlers.py +++ b/blender/arm/handlers.py @@ -10,6 +10,7 @@ import arm.api import arm.live_patch as live_patch import arm.logicnode.arm_nodes as arm_nodes import arm.nodes_logic +import arm.make as make import arm.make_state as state import arm.props as props import arm.utils @@ -103,7 +104,7 @@ def always() -> float: space.node_tree.arm_cached = False return 0.5 - + def poll_threads() -> float: """Polls the thread callback queue and if a thread has finished, it is joined with the main thread and the corresponding callback is @@ -120,7 +121,7 @@ def poll_threads() -> float: # Quickly check if another thread has finished return 0.01 - + appended_py_paths = [] context_screen = None From 8a758bbe267c13ecc686dcb05fda4505026a644c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 25 Jul 2021 17:07:51 +0200 Subject: [PATCH 40/45] Only stop live patch session if live patch was active --- blender/arm/live_patch.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 5b375227..9c4ce769 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -44,10 +44,11 @@ def start(): def stop(): """Stop the live patch session.""" global __running - __running = False + if __running: + __running = False - log.debug("Live patch session stopped") - bpy.msgbus.clear_by_owner(msgbus_owner) + log.debug("Live patch session stopped") + bpy.msgbus.clear_by_owner(msgbus_owner) def patch_export(): From 6a3045477f6de3df1a13feff4a5b996916ebfd7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 25 Jul 2021 18:36:36 +0200 Subject: [PATCH 41/45] Fix physics node if arm_physics is false + cleanup --- .../logicnode/AddPhysicsConstraintNode.hx | 115 +++++++----------- Sources/armory/logicnode/AddRigidBodyNode.hx | 42 +++---- .../armory/logicnode/PhysicsConstraintNode.hx | 8 +- 3 files changed, 72 insertions(+), 93 deletions(-) diff --git a/Sources/armory/logicnode/AddPhysicsConstraintNode.hx b/Sources/armory/logicnode/AddPhysicsConstraintNode.hx index 4f04e2b0..3013f775 100644 --- a/Sources/armory/logicnode/AddPhysicsConstraintNode.hx +++ b/Sources/armory/logicnode/AddPhysicsConstraintNode.hx @@ -1,13 +1,11 @@ package armory.logicnode; -import armory.trait.physics.PhysicsConstraint; -#if arm_physics -import armory.trait.physics.bullet.PhysicsConstraint.ConstraintType; -import armory.trait.physics.bullet.PhysicsConstraint.ConstraintAxis; -#end import iron.object.Object; -import armory.trait.physics.RigidBody; -import armory.logicnode.PhysicsConstraintNode; + +#if arm_physics +import armory.trait.physics.PhysicsConstraint; +import armory.trait.physics.bullet.PhysicsConstraint.ConstraintType; +#end class AddPhysicsConstraintNode extends LogicNode { @@ -21,115 +19,96 @@ class AddPhysicsConstraintNode extends LogicNode { } override function run(from: Int) { - var pivotObject:Object = inputs[1].get(); + var pivotObject: Object = inputs[1].get(); rb1 = inputs[2].get(); rb2 = inputs[3].get(); - var disableCollisions: Bool = inputs[4].get(); - var breakable: Bool = inputs[5].get(); - var breakingThreshold: Float = inputs[6].get(); - var type: ConstraintType = 0; if (pivotObject == null || rb1 == null || rb2 == null) return; #if arm_physics + var disableCollisions: Bool = inputs[4].get(); + var breakable: Bool = inputs[5].get(); + var breakingThreshold: Float = inputs[6].get(); + var type: ConstraintType = 0; + var con: PhysicsConstraint = pivotObject.getTrait(PhysicsConstraint); - if(con == null) - { - switch(property0) - { - case 'Fixed': - type = Fixed; - case 'Point': - type = Point; - case 'Hinge': - type = Hinge; - case 'Slider': - type = Slider; - case 'Piston': - type = Piston; - case 'Generic Spring': - type = Generic; + if (con == null) { + switch (property0) { + case "Fixed": type = Fixed; + case "Point": type = Point; + case "Hinge": type = Hinge; + case "Slider": type = Slider; + case "Piston": type = Piston; + case "Generic Spring": type = Generic; } - if(! breakable) breakingThreshold = 0.0; + if (!breakable) breakingThreshold = 0.0; + + if (type != Generic) { - if(type != Generic) { - con = new PhysicsConstraint(rb1, rb2, type, disableCollisions, breakingThreshold); - switch (type) - { + switch (type) { case Hinge: - var setLimit:Bool = inputs[7].get(); - var low:Float = inputs[8].get(); - var up:Float = inputs[9].get(); + var setLimit: Bool = inputs[7].get(); + var low: Float = inputs[8].get(); + var up: Float = inputs[9].get(); con.setHingeConstraintLimits(setLimit, low, up); case Slider: - var setLimit:Bool = inputs[7].get(); - var low:Float = inputs[8].get(); - var up:Float = inputs[9].get(); + var setLimit: Bool = inputs[7].get(); + var low: Float = inputs[8].get(); + var up: Float = inputs[9].get(); con.setSliderConstraintLimits(setLimit, low, up); case Piston: - var setLinLimit:Bool = inputs[7].get(); - var linLow:Float = inputs[8].get(); - var linUp:Float = inputs[9].get(); - var setAngLimit:Bool = inputs[10].get(); - var angLow:Float = inputs[11].get(); - var angUp:Float = inputs[12].get(); + var setLinLimit: Bool = inputs[7].get(); + var linLow: Float = inputs[8].get(); + var linUp: Float = inputs[9].get(); + var setAngLimit: Bool = inputs[10].get(); + var angLow: Float = inputs[11].get(); + var angUp: Float = inputs[12].get(); con.setPistonConstraintLimits(setLinLimit, linLow, linUp, setAngLimit, angLow, angUp); - default: + default: } } - else - { + else { var spring: Bool = false; var prop: PhysicsConstraintNode; - for(inp in 7...inputs.length) - { + + for (inp in 7...inputs.length) { prop = inputs[inp].get(); - if(prop == null) continue; - if(prop.isSpring) - { + if (prop == null) continue; + if (prop.isSpring) { spring = true; break; } } - if(spring) { + if (spring) { con = new PhysicsConstraint(rb1, rb2, GenericSpring, disableCollisions, breakingThreshold); - } + } else { con = new PhysicsConstraint(rb1, rb2, Generic, disableCollisions, breakingThreshold); } - for(inp in 7...inputs.length) - { + for (inp in 7...inputs.length) { prop = inputs[inp].get(); - if(prop == null) continue; - (inp + ': '); + if (prop == null) continue; - if(prop.isSpring) - { + if (prop.isSpring) { con.setSpringParams(prop.isSpring, prop.value1, prop.value2, prop.axis, prop.isAngular); } - else - { + else { con.setGenericConstraintLimits(true, prop.value1, prop.value2, prop.axis, prop.isAngular); } } - - } - pivotObject.addTrait(con); - } #end - runOutput(0); } } diff --git a/Sources/armory/logicnode/AddRigidBodyNode.hx b/Sources/armory/logicnode/AddRigidBodyNode.hx index d896c2e0..601eb97d 100644 --- a/Sources/armory/logicnode/AddRigidBodyNode.hx +++ b/Sources/armory/logicnode/AddRigidBodyNode.hx @@ -1,15 +1,17 @@ package armory.logicnode; +import iron.object.Object; + #if arm_physics +import armory.trait.physics.RigidBody; import armory.trait.physics.bullet.RigidBody.Shape; #end -import iron.object.Object; -import armory.trait.physics.RigidBody; + class AddRigidBodyNode extends LogicNode { - public var property0: String;//Shape - public var property1: Bool;//Advanced + public var property0: String; //Shape + public var property1: Bool; //Advanced public var object: Object; public function new(tree: LogicTree) { @@ -18,6 +20,10 @@ class AddRigidBodyNode extends LogicNode { override function run(from: Int) { object = inputs[1].get(); + if (object == null) return; + +#if arm_physics + var mass: Float = inputs[2].get(); var active: Bool = inputs[3].get(); var animated: Bool = inputs[4].get(); @@ -50,33 +56,23 @@ class AddRigidBodyNode extends LogicNode { mask = inputs[17].get(); } - if (object == null) return; - -#if arm_physics var rb: RigidBody = object.getTrait(RigidBody); if ((group < 0) || (group > 32)) group = 1; //Limiting max groups to 32 if ((mask < 0) || (mask > 32)) mask = 1; //Limiting max masks to 32 if (rb == null) { - switch (property0){ - case "Box": - shape = Box; - case "Sphere": - shape = Sphere; - case "Capsule": - shape = Capsule; - case "Cone": - shape = Cone; - case "Cylinder": - shape = Cylinder; - case "Convex Hull": - shape = ConvexHull; - case "Mesh": - shape = Mesh; + switch (property0) { + case "Box": shape = Box; + case "Sphere": shape = Sphere; + case "Capsule": shape = Capsule; + case "Cone": shape = Cone; + case "Cylinder": shape = Cylinder; + case "Convex Hull": shape = ConvexHull; + case "Mesh": shape = Mesh; } rb = new RigidBody(shape, mass, friction, bounciness, group, mask); rb.animated = animated; - rb.staticObj = ! active; + rb.staticObj = !active; rb.isTriggerObject(trigger); if (property1) { diff --git a/Sources/armory/logicnode/PhysicsConstraintNode.hx b/Sources/armory/logicnode/PhysicsConstraintNode.hx index e6bd0bf4..a06eaa51 100644 --- a/Sources/armory/logicnode/PhysicsConstraintNode.hx +++ b/Sources/armory/logicnode/PhysicsConstraintNode.hx @@ -9,29 +9,33 @@ class PhysicsConstraintNode extends LogicNode { public var property0: String; //Linear or Angular public var property1: String; //Axis public var property2: Bool; //Is a spring + +#if arm_physics public var value1: Float; //Lower limit or Spring Stiffness public var value2: Float; //Upper limit or Spring Damping public var isAngular: Bool; public var axis: ConstraintAxis; public var isSpring: Bool; +#end public function new(tree: LogicTree) { super(tree); } override function get(from: Int): PhysicsConstraintNode { +#if arm_physics value1 = inputs[0].get(); value2 = inputs[1].get(); isAngular = property0 != "Linear"; isSpring = property2; - switch (property1){ + switch (property1) { case "X": axis = X; case "Y": axis = Y; case "Z": axis = Z; } - +#end return this; } } From 62ff11747b82bac78956c9ff270fa035df5cc5b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 25 Jul 2021 19:50:51 +0200 Subject: [PATCH 42/45] Update nodes for live patch support (merge conflict cleanup) --- .../animation/LN_get_bone_fk_ik_only.py | 7 +++---- .../animation/LN_get_bone_transform.py | 7 +++---- .../animation/LN_set_bone_fk_ik_only.py | 7 +++---- .../logicnode/input/LN_get_gamepad_started.py | 7 +++---- .../logicnode/input/LN_get_input_map_key.py | 11 +++++------ .../input/LN_get_keyboard_started.py | 5 ++--- .../logicnode/input/LN_get_mouse_started.py | 5 ++--- .../arm/logicnode/input/LN_on_input_map.py | 9 ++++----- .../input/LN_remove_input_map_key.py | 9 ++++----- .../logicnode/input/LN_set_input_map_key.py | 19 +++++++++---------- blender/arm/logicnode/logic/LN_merge.py | 5 +++-- .../arm/logicnode/logic/LN_once_per_frame.py | 3 +-- blender/arm/logicnode/logic/LN_select.py | 17 ++++++++--------- .../arm/logicnode/physics/LN_get_rb_data.py | 2 +- .../LN_colorgrading_set_global_node.py | 2 +- .../LN_colorgrading_set_highlight_node.py | 2 +- .../LN_colorgrading_set_midtone_node.py | 2 +- .../LN_colorgrading_set_shadow_node.py | 2 +- .../transform/LN_get_object_location.py | 4 ++-- .../transform/LN_set_object_location.py | 4 ++-- 20 files changed, 59 insertions(+), 70 deletions(-) diff --git a/blender/arm/logicnode/animation/LN_get_bone_fk_ik_only.py b/blender/arm/logicnode/animation/LN_get_bone_fk_ik_only.py index 165b946d..21afb1ee 100644 --- a/blender/arm/logicnode/animation/LN_get_bone_fk_ik_only.py +++ b/blender/arm/logicnode/animation/LN_get_bone_fk_ik_only.py @@ -7,8 +7,7 @@ class GetBoneFkIkOnlyNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'armature' - def init(self, context): - super(GetBoneFkIkOnlyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Bone') - self.add_output('NodeSocketBool', 'FK or IK only') \ No newline at end of file + self.add_input('ArmStringSocket', 'Bone') + self.add_output('ArmBoolSocket', 'FK or IK only') diff --git a/blender/arm/logicnode/animation/LN_get_bone_transform.py b/blender/arm/logicnode/animation/LN_get_bone_transform.py index 0d21ea23..1ce69e7a 100644 --- a/blender/arm/logicnode/animation/LN_get_bone_transform.py +++ b/blender/arm/logicnode/animation/LN_get_bone_transform.py @@ -7,8 +7,7 @@ class GetBoneTransformNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'armature' - def init(self, context): - super(GetBoneTransformNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Bone') - self.add_output('NodeSocketShader', 'Transform') \ No newline at end of file + self.add_input('ArmStringSocket', 'Bone') + self.add_output('ArmDynamicSocket', 'Transform') diff --git a/blender/arm/logicnode/animation/LN_set_bone_fk_ik_only.py b/blender/arm/logicnode/animation/LN_set_bone_fk_ik_only.py index 2594183a..8ed6ce45 100644 --- a/blender/arm/logicnode/animation/LN_set_bone_fk_ik_only.py +++ b/blender/arm/logicnode/animation/LN_set_bone_fk_ik_only.py @@ -7,11 +7,10 @@ class SetBoneFkIkOnlyNode(ArmLogicTreeNode): arm_version = 1 arm_section = 'armature' - def init(self, context): - super(SetBoneFkIkOnlyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketString', 'Bone') - self.add_input('NodeSocketBool', 'FK or IK only') + self.add_input('ArmStringSocket', 'Bone') + self.add_input('ArmBoolSocket', 'FK or IK only') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/input/LN_get_gamepad_started.py b/blender/arm/logicnode/input/LN_get_gamepad_started.py index edfbc040..08fd5fd0 100644 --- a/blender/arm/logicnode/input/LN_get_gamepad_started.py +++ b/blender/arm/logicnode/input/LN_get_gamepad_started.py @@ -6,10 +6,9 @@ class GetGamepadStartedNode(ArmLogicTreeNode): bl_label = 'Get Gamepad Started' arm_version = 1 - def init(self, context): - super(GetGamepadStartedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketInt', 'Index') + self.add_input('ArmIntSocket', 'Index') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketString', 'Button') + self.add_output('ArmStringSocket', 'Button') diff --git a/blender/arm/logicnode/input/LN_get_input_map_key.py b/blender/arm/logicnode/input/LN_get_input_map_key.py index 12d98935..5368a9d3 100644 --- a/blender/arm/logicnode/input/LN_get_input_map_key.py +++ b/blender/arm/logicnode/input/LN_get_input_map_key.py @@ -6,10 +6,9 @@ class GetInputMapKeyNode(ArmLogicTreeNode): bl_label = 'Get Input Map Key' arm_version = 1 - def init(self, context): - super(GetInputMapKeyNode, self).init(context) - self.add_input('NodeSocketString', 'Input Map') - self.add_input('NodeSocketString', 'Key') + def arm_init(self, context): + self.add_input('ArmStringSocket', 'Input Map') + self.add_input('ArmStringSocket', 'Key') - self.add_output('NodeSocketFloat', 'Scale', default_value = 1.0) - self.add_output('NodeSocketFloat', 'Deadzone') \ No newline at end of file + self.add_output('ArmFloatSocket', 'Scale', default_value = 1.0) + self.add_output('ArmFloatSocket', 'Deadzone') diff --git a/blender/arm/logicnode/input/LN_get_keyboard_started.py b/blender/arm/logicnode/input/LN_get_keyboard_started.py index 0f655b04..1810c6e0 100644 --- a/blender/arm/logicnode/input/LN_get_keyboard_started.py +++ b/blender/arm/logicnode/input/LN_get_keyboard_started.py @@ -6,9 +6,8 @@ class GetKeyboardStartedNode(ArmLogicTreeNode): bl_label = 'Get Keyboard Started' arm_version = 1 - def init(self, context): - super(GetKeyboardStartedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketString', 'Key') + self.add_output('ArmStringSocket', 'Key') diff --git a/blender/arm/logicnode/input/LN_get_mouse_started.py b/blender/arm/logicnode/input/LN_get_mouse_started.py index 368aa433..9a6fce1f 100644 --- a/blender/arm/logicnode/input/LN_get_mouse_started.py +++ b/blender/arm/logicnode/input/LN_get_mouse_started.py @@ -6,9 +6,8 @@ class GetMouseStartedNode(ArmLogicTreeNode): bl_label = 'Get Mouse Started' arm_version = 1 - def init(self, context): - super(GetMouseStartedNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketString', 'Button') + self.add_output('ArmStringSocket', 'Button') diff --git a/blender/arm/logicnode/input/LN_on_input_map.py b/blender/arm/logicnode/input/LN_on_input_map.py index 0cc540f5..c851eefe 100644 --- a/blender/arm/logicnode/input/LN_on_input_map.py +++ b/blender/arm/logicnode/input/LN_on_input_map.py @@ -6,11 +6,10 @@ class OnInputMapNode(ArmLogicTreeNode): bl_label = 'On Input Map' arm_version = 1 - def init(self, context): - super(OnInputMapNode, self).init(context) - self.add_input('NodeSocketString', 'Input Map') + def arm_init(self, context): + self.add_input('ArmStringSocket', 'Input Map') self.add_output('ArmNodeSocketAction', 'Started') self.add_output('ArmNodeSocketAction', 'Released') - self.add_output('NodeSocketFloat', 'Value') - self.add_output('NodeSocketString', 'Key Pressed') \ No newline at end of file + self.add_output('ArmFloatSocket', 'Value') + self.add_output('ArmStringSocket', 'Key Pressed') diff --git a/blender/arm/logicnode/input/LN_remove_input_map_key.py b/blender/arm/logicnode/input/LN_remove_input_map_key.py index 8821ef05..8da8562b 100644 --- a/blender/arm/logicnode/input/LN_remove_input_map_key.py +++ b/blender/arm/logicnode/input/LN_remove_input_map_key.py @@ -6,10 +6,9 @@ class RemoveInputMapKeyNode(ArmLogicTreeNode): bl_label = 'Remove Input Map Key' arm_version = 1 - def init(self, context): - super(RemoveInputMapKeyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Input Map') - self.add_input('NodeSocketString', 'Key') + self.add_input('ArmStringSocket', 'Input Map') + self.add_input('ArmStringSocket', 'Key') - self.add_output('ArmNodeSocketAction', 'Out') \ No newline at end of file + self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/input/LN_set_input_map_key.py b/blender/arm/logicnode/input/LN_set_input_map_key.py index a2157745..75997d7d 100644 --- a/blender/arm/logicnode/input/LN_set_input_map_key.py +++ b/blender/arm/logicnode/input/LN_set_input_map_key.py @@ -6,23 +6,22 @@ class SetInputMapKeyNode(ArmLogicTreeNode): bl_label = 'Set Input Map Key' arm_version = 1 - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', items = [('keyboard', 'Keyboard', 'Keyboard input'), ('mouse', 'Mouse', 'Mouse input'), ('gamepad', 'Gamepad', 'Gamepad input')], name='', default='keyboard') - def init(self, context): - super(SetInputMapKeyNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') - self.add_input('NodeSocketString', 'Input Map') - self.add_input('NodeSocketString', 'Key') - self.add_input('NodeSocketFloat', 'Scale', default_value=1.0) - self.add_input('NodeSocketFloat', 'Deadzone') - self.add_input('NodeSocketInt', 'Index') + self.add_input('ArmStringSocket', 'Input Map') + self.add_input('ArmStringSocket', 'Key') + self.add_input('ArmFloatSocket', 'Scale', default_value=1.0) + self.add_input('ArmFloatSocket', 'Deadzone') + self.add_input('ArmIntSocket', 'Index') self.add_output('ArmNodeSocketAction', 'Out') - def draw_buttons(self, context, layout): - layout.prop(self, 'property0') \ No newline at end of file + layout.prop(self, 'property0') diff --git a/blender/arm/logicnode/logic/LN_merge.py b/blender/arm/logicnode/logic/LN_merge.py index 5f6b1f73..a209c690 100644 --- a/blender/arm/logicnode/logic/LN_merge.py +++ b/blender/arm/logicnode/logic/LN_merge.py @@ -29,7 +29,8 @@ class MergeNode(ArmLogicTreeNode): def update_exec_mode(self, context): self.outputs['Active Input Index'].hide = self.property0 == 'once_per_frame' - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', name='Execution Mode', description='The node\'s behaviour if multiple inputs are active on the same frame', items=[('once_per_input', 'Once Per Input', @@ -47,7 +48,7 @@ class MergeNode(ArmLogicTreeNode): def arm_init(self, context): self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketInt', 'Active Input Index') + self.add_output('ArmIntSocket', 'Active Input Index') def draw_buttons(self, context, layout): layout.prop(self, 'property0', text='') diff --git a/blender/arm/logicnode/logic/LN_once_per_frame.py b/blender/arm/logicnode/logic/LN_once_per_frame.py index b7dba2f1..56c82fc5 100644 --- a/blender/arm/logicnode/logic/LN_once_per_frame.py +++ b/blender/arm/logicnode/logic/LN_once_per_frame.py @@ -9,8 +9,7 @@ class OncePerFrameNode(ArmLogicTreeNode): arm_section = 'flow' arm_version = 1 - def init(self, context): - super(OncePerFrameNode, self).init(context) + def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_output('ArmNodeSocketAction', 'Out') diff --git a/blender/arm/logicnode/logic/LN_select.py b/blender/arm/logicnode/logic/LN_select.py index 4ea3762a..55f39a83 100644 --- a/blender/arm/logicnode/logic/LN_select.py +++ b/blender/arm/logicnode/logic/LN_select.py @@ -37,7 +37,8 @@ class SelectNode(ArmLogicTreeNode): def update_exec_mode(self, context): self.set_mode() - property0: EnumProperty( + property0: HaxeEnumProperty( + 'property0', name='Execution Mode', description="The node's behaviour.", items=[ @@ -55,9 +56,7 @@ class SelectNode(ArmLogicTreeNode): super().__init__() array_nodes[str(id(self))] = self - def init(self, context): - super().init(context) - + def arm_init(self, context): self.set_mode() def set_mode(self): @@ -65,8 +64,8 @@ class SelectNode(ArmLogicTreeNode): self.outputs.clear() if self.property0 == 'from_index': - self.add_input('NodeSocketInt', 'Index') - self.add_input('NodeSocketShader', 'Default') + self.add_input('ArmIntSocket', 'Index') + self.add_input('ArmDynamicSocket', 'Default') self.num_choices = 0 # from_input @@ -75,12 +74,12 @@ class SelectNode(ArmLogicTreeNode): # 0 for the "from_index" mode and it makes the code simpler # if we stick to the same convention for both exec modes self.add_input('ArmNodeSocketAction', 'Input 0') - self.add_input('NodeSocketShader', 'Value 0') + self.add_input('ArmDynamicSocket', 'Value 0') self.num_choices = 1 self.add_output('ArmNodeSocketAction', 'Out') - self.add_output('NodeSocketShader', 'Value') + self.add_output('ArmDynamicSocket', 'Value') def draw_buttons(self, context, layout): layout.prop(self, 'property0', text='') @@ -102,7 +101,7 @@ class SelectNode(ArmLogicTreeNode): # Move new action input up to the end of all other action inputs self.inputs.move(from_index=len(self.inputs) - 1, to_index=self.num_choices) - self.add_input('NodeSocketShader', f'Value {self.num_choices}') + self.add_input('ArmDynamicSocket', f'Value {self.num_choices}') self.num_choices += 1 diff --git a/blender/arm/logicnode/physics/LN_get_rb_data.py b/blender/arm/logicnode/physics/LN_get_rb_data.py index 3671516f..76ecb2e2 100644 --- a/blender/arm/logicnode/physics/LN_get_rb_data.py +++ b/blender/arm/logicnode/physics/LN_get_rb_data.py @@ -7,7 +7,7 @@ class GetRigidBodyDataNode(ArmLogicTreeNode): arm_section = 'props' arm_version = 1 - def init(self, context): + def arm_init(self, context): self.inputs.new('ArmNodeSocketObject', 'Object') self.outputs.new('ArmBoolSocket', 'Is RB') diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py index c4746472..a72ac52a 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_global_node.py @@ -37,7 +37,7 @@ class ColorgradingSetGlobalNode(ArmLogicTreeNode): items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) - property1 : StringProperty(name="Loaded Data", description="Loaded data - Just ignore", default="") + property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="") filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py index f8a801cb..01b23cd1 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_highlight_node.py @@ -37,7 +37,7 @@ class ColorgradingSetHighlightNode(ArmLogicTreeNode): items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) - property1 : StringProperty(name="Loaded Data", description="Loaded data - Just ignore", default="") + property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="") filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py index 8d8379cb..8a5bd19c 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_midtone_node.py @@ -37,7 +37,7 @@ class ColorgradingSetMidtoneNode(ArmLogicTreeNode): items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) - property1 : StringProperty(name="Loaded Data", description="Loaded data - Just ignore", default="") + property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="") filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data) diff --git a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py index 84fa8956..bc05651d 100644 --- a/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py +++ b/blender/arm/logicnode/postprocess/LN_colorgrading_set_shadow_node.py @@ -37,7 +37,7 @@ class ColorgradingSetShadowNode(ArmLogicTreeNode): items = [('RGB', 'RGB', 'RGB'), ('Uniform', 'Uniform', 'Uniform')], name='Mode', default='Uniform', update=update_node) - property1 : StringProperty(name="Loaded Data", description="Loaded data - Just ignore", default="") + property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="") filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data) diff --git a/blender/arm/logicnode/transform/LN_get_object_location.py b/blender/arm/logicnode/transform/LN_get_object_location.py index 0f12aa5b..d4af86b4 100644 --- a/blender/arm/logicnode/transform/LN_get_object_location.py +++ b/blender/arm/logicnode/transform/LN_get_object_location.py @@ -2,7 +2,7 @@ from arm.logicnode.arm_nodes import * class GetLocationNode(ArmLogicTreeNode): """Get the location of the given object in world coordinates. - + @input Parent Relative: If enabled, transforms the world coordinates into object parent local coordinates @seeNode Set Object Location @@ -16,7 +16,7 @@ class GetLocationNode(ArmLogicTreeNode): def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('NodeSocketBool', 'Parent Relative') + self.add_input('ArmBoolSocket', 'Parent Relative') self.add_output('ArmVectorSocket', 'Location') diff --git a/blender/arm/logicnode/transform/LN_set_object_location.py b/blender/arm/logicnode/transform/LN_set_object_location.py index 5ee43596..5c9e4ac9 100644 --- a/blender/arm/logicnode/transform/LN_set_object_location.py +++ b/blender/arm/logicnode/transform/LN_set_object_location.py @@ -18,11 +18,11 @@ class SetLocationNode(ArmLogicTreeNode): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') self.add_input('ArmVectorSocket', 'Location') - self.add_input('NodeSocketBool', 'Parent Relative') + self.add_input('ArmBoolSocket', 'Parent Relative') self.add_output('ArmNodeSocketAction', 'Out') def get_replacement_node(self, node_tree: bpy.types.NodeTree): if self.arm_version not in (0, 1): raise LookupError() - return NodeReplacement.Identity(self) \ No newline at end of file + return NodeReplacement.Identity(self) From 549040fc093c5b92ea23630d5f41ed3e21a456b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 25 Jul 2021 20:13:47 +0200 Subject: [PATCH 43/45] Fix publishing with live patch enabled --- blender/arm/exporter.py | 4 ++-- blender/arm/make_logic.py | 14 ++++++++------ blender/arm/utils.py | 17 +++++++++++++---- blender/arm/write_data.py | 6 +++--- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/blender/arm/exporter.py b/blender/arm/exporter.py index ff740963..10d23e13 100755 --- a/blender/arm/exporter.py +++ b/blender/arm/exporter.py @@ -2454,7 +2454,7 @@ Make sure the mesh only has tris/quads.""") else: self.material_to_object_dict[mat] = [bobject] self.material_to_arm_object_dict[mat] = [o] - + # Add UniformsManager trait if type is NodeType.MESH: uniformManager = {} @@ -2672,7 +2672,7 @@ Make sure the mesh only has tris/quads.""") } self.output['traits'].append(out_trait) - if wrd.arm_live_patch: + if arm.utils.is_livepatch_enabled(): if 'traits' not in self.output: self.output['traits'] = [] out_trait = {'type': 'Script', 'class_name': 'armory.trait.internal.LivePatch'} diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index ad5a28ec..0e74d043 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -78,7 +78,7 @@ def build_node_tree(node_group: 'arm.nodes_logic.ArmLogicTree'): f.write('\t\tname = "' + group_name + '";\n') f.write('\t\tthis.functionNodes = new Map();\n') f.write('\t\tthis.functionOutputNodes = new Map();\n') - if wrd.arm_live_patch: + if arm.utils.is_livepatch_enabled(): f.write(f'\t\tarmory.logicnode.LogicTree.nodeTrees["{group_name}"] = this;\n') f.write('\t\tnotifyOnAdd(add);\n') f.write('\t}\n\n') @@ -113,6 +113,8 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: global parsed_nodes global parsed_ids + use_live_patch = arm.utils.is_livepatch_enabled() + if node.type == 'REROUTE': if len(node.inputs) > 0 and len(node.inputs[0].links) > 0: return build_node(node.inputs[0].links[0].from_node, f) @@ -154,7 +156,7 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: f.write('\t\t' + name + '.name = "' + name[1:] + '";\n') f.write('\t\t' + name + '.watch(true);\n') - elif wrd.arm_live_patch: + elif use_live_patch: f.write('\t\t' + name + '.name = "' + name[1:] + '";\n') f.write(f'\t\tthis.nodes["{name[1:]}"] = {name};\n') @@ -212,8 +214,8 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: from_type = inp.arm_socket_type # Add input - f.write(f'\t\t{"var __link = " if wrd.arm_live_patch else ""}armory.logicnode.LogicNode.addLink({inp_name}, {name}, {inp_from}, {idx});\n') - if wrd.arm_live_patch: + f.write(f'\t\t{"var __link = " if use_live_patch else ""}armory.logicnode.LogicNode.addLink({inp_name}, {name}, {inp_from}, {idx});\n') + if use_live_patch: to_type = inp.arm_socket_type f.write(f'\t\t__link.fromType = "{from_type}";') f.write(f'\t\t__link.toType = "{to_type}";') @@ -224,8 +226,8 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: # Linked outputs are already handled after iterating over inputs # above, so only unconnected outputs are handled here if not out.is_linked: - f.write(f'\t\t{"var __link = " if wrd.arm_live_patch else ""}armory.logicnode.LogicNode.addLink({name}, {build_default_node(out)}, {idx}, 0);\n') - if wrd.arm_live_patch: + f.write(f'\t\t{"var __link = " if use_live_patch else ""}armory.logicnode.LogicNode.addLink({name}, {build_default_node(out)}, {idx}, 0);\n') + if use_live_patch: out_type = out.arm_socket_type f.write(f'\t\t__link.fromType = "{out_type}";') f.write(f'\t\t__link.toType = "{out_type}";') diff --git a/blender/arm/utils.py b/blender/arm/utils.py index 52d836a0..dc468a8d 100755 --- a/blender/arm/utils.py +++ b/blender/arm/utils.py @@ -78,6 +78,15 @@ def convert_image(image, path, file_format='JPEG'): ren.image_settings.file_format = orig_file_format ren.image_settings.color_mode = orig_color_mode + +def is_livepatch_enabled(): + """Returns whether live patch is enabled and can be used.""" + wrd = bpy.data.worlds['Arm'] + # If the game is published, the target is krom-[OS] and not krom, + # so there is no live patch when publishing + return wrd.arm_live_patch and state.target == 'krom' + + def blend_name(): return bpy.path.basename(bpy.context.blend_data.filepath).rsplit('.', 1)[0] @@ -981,11 +990,11 @@ def get_visual_studio_from_version(version: str) -> str: def get_list_installed_vs(get_version: bool, get_name: bool, get_path: bool) -> []: err = '' items = [] - path_file = os.path.join(get_sdk_path(), 'Kha', 'Kinc', 'Tools', 'kincmake', 'Data', 'windows', 'vswhere.exe') + path_file = os.path.join(get_sdk_path(), 'Kha', 'Kinc', 'Tools', 'kincmake', 'Data', 'windows', 'vswhere.exe') if not os.path.isfile(path_file): err = 'File "'+ path_file +'" not found.' return items, err - + if (not get_version) and (not get_name) and (not get_path): return items, err @@ -1011,8 +1020,8 @@ def get_list_installed_vs(get_version: bool, get_name: bool, get_path: bool) -> return items, err for i in range(count_items): - v = items_ver[i][0] if len(items_ver) > i else '' - v_full = items_ver[i][1] if len(items_ver) > i else '' + v = items_ver[i][0] if len(items_ver) > i else '' + v_full = items_ver[i][1] if len(items_ver) > i else '' n = items_name[i] if len(items_name) > i else '' p = items_path[i] if len(items_path) > i else '' items.append((v, n, p, v_full)) diff --git a/blender/arm/write_data.py b/blender/arm/write_data.py index f43c624d..0eb56dc9 100755 --- a/blender/arm/write_data.py +++ b/blender/arm/write_data.py @@ -166,10 +166,10 @@ project.addSources('Sources'); if enable_dce: khafile.write("project.addParameter('-dce full');\n") - live_patch = wrd.arm_live_patch and state.target == 'krom' - if wrd.arm_debug_console or live_patch: + use_live_patch = arm.utils.is_livepatch_enabled() + if wrd.arm_debug_console or use_live_patch: import_traits.append('armory.trait.internal.Bridge') - if live_patch: + if use_live_patch: assets.add_khafile_def('arm_patch') # Include all logic node classes so that they can later # get instantiated From ee208ece183f35ac226db8fe441f109f83cf4ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sun, 25 Jul 2021 20:20:43 +0200 Subject: [PATCH 44/45] Live patch: ignore two more operators --- blender/arm/live_patch.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/blender/arm/live_patch.py b/blender/arm/live_patch.py index 9c4ce769..b2bf81a8 100644 --- a/blender/arm/live_patch.py +++ b/blender/arm/live_patch.py @@ -362,6 +362,7 @@ IGNORE_OPERATORS = ( 'NODE_OT_duplicate_move', 'NODE_OT_hide_toggle', 'NODE_OT_link', + 'NODE_OT_move_detach_links', 'NODE_OT_select', 'NODE_OT_translate_attach', 'NODE_OT_translate_attach_remove_on_cancel', @@ -369,6 +370,7 @@ IGNORE_OPERATORS = ( 'OBJECT_OT_editmode_toggle', 'OUTLINER_OT_item_activate', 'UI_OT_button_string_clear', + 'UI_OT_eyedropper_id', 'VIEW3D_OT_select', 'VIEW3D_OT_select_box', ) From bce14549ac143169c8ab12ae5719d11a6b0bd8fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Mon, 26 Jul 2021 00:02:54 +0200 Subject: [PATCH 45/45] Fix LN live patch when using multiple instances of the same logic tree --- Sources/armory/logicnode/LogicTree.hx | 5 +- Sources/armory/trait/internal/LivePatch.hx | 204 +++++++++++---------- blender/arm/make_logic.py | 21 ++- 3 files changed, 127 insertions(+), 103 deletions(-) diff --git a/Sources/armory/logicnode/LogicTree.hx b/Sources/armory/logicnode/LogicTree.hx index 22daf13a..ed06b08e 100644 --- a/Sources/armory/logicnode/LogicTree.hx +++ b/Sources/armory/logicnode/LogicTree.hx @@ -3,7 +3,10 @@ package armory.logicnode; class LogicTree extends iron.Trait { #if arm_patch - public static var nodeTrees = new Map(); + /** + Stores all trait instances of the tree via its name. + **/ + public static var nodeTrees = new Map>(); /** [node name => logic node] for later node replacement for live patching. diff --git a/Sources/armory/trait/internal/LivePatch.hx b/Sources/armory/trait/internal/LivePatch.hx index d4548957..743f66be 100644 --- a/Sources/armory/trait/internal/LivePatch.hx +++ b/Sources/armory/trait/internal/LivePatch.hx @@ -33,147 +33,161 @@ class LivePatch extends iron.Trait { } public static function patchCreateNodeLink(treeName: String, fromNodeName: String, toNodeName: String, fromIndex: Int, toIndex: Int) { - var tree = LogicTree.nodeTrees[treeName]; - if (tree == null) return; + if (!LogicTree.nodeTrees.exists(treeName)) return; + var trees = LogicTree.nodeTrees[treeName]; - var fromNode = tree.nodes[fromNodeName]; - var toNode = tree.nodes[toNodeName]; - if (fromNode == null || toNode == null) return; + for (tree in trees) { + var fromNode = tree.nodes[fromNodeName]; + var toNode = tree.nodes[toNodeName]; + if (fromNode == null || toNode == null) return; - LogicNode.addLink(fromNode, toNode, fromIndex, toIndex); + LogicNode.addLink(fromNode, toNode, fromIndex, toIndex); + } } public static function patchSetNodeLinks(treeName: String, nodeName: String, inputDatas: Array, outputDatas: Array>) { - var tree = LogicTree.nodeTrees[treeName]; - if (tree == null) return; + if (!LogicTree.nodeTrees.exists(treeName)) return; + var trees = LogicTree.nodeTrees[treeName]; - var node = tree.nodes[nodeName]; - if (node == null) return; + for (tree in trees) { + var node = tree.nodes[nodeName]; + if (node == null) return; - node.clearInputs(); - node.clearOutputs(); + node.clearInputs(); + node.clearOutputs(); - for (inputData in inputDatas) { - var fromNode: LogicNode; - var fromIndex: Int; + for (inputData in inputDatas) { + var fromNode: LogicNode; + var fromIndex: Int; - if (inputData.isLinked) { - fromNode = tree.nodes[inputData.fromNode]; - if (fromNode == null) continue; - fromIndex = inputData.fromIndex; - } - else { - fromNode = LogicNode.createSocketDefaultNode(node.tree, inputData.socketType, inputData.socketValue); - fromIndex = 0; - } - - LogicNode.addLink(fromNode, node, fromIndex, inputData.toIndex); - } - - for (outputData in outputDatas) { - for (linkData in outputData) { - var toNode: LogicNode; - var toIndex: Int; - - if (linkData.isLinked) { - toNode = tree.nodes[linkData.toNode]; - if (toNode == null) continue; - toIndex = linkData.toIndex; + if (inputData.isLinked) { + fromNode = tree.nodes[inputData.fromNode]; + if (fromNode == null) continue; + fromIndex = inputData.fromIndex; } else { - toNode = LogicNode.createSocketDefaultNode(node.tree, linkData.socketType, linkData.socketValue); - toIndex = 0; + fromNode = LogicNode.createSocketDefaultNode(node.tree, inputData.socketType, inputData.socketValue); + fromIndex = 0; } - LogicNode.addLink(node, toNode, linkData.fromIndex, toIndex); + LogicNode.addLink(fromNode, node, fromIndex, inputData.toIndex); + } + + for (outputData in outputDatas) { + for (linkData in outputData) { + var toNode: LogicNode; + var toIndex: Int; + + if (linkData.isLinked) { + toNode = tree.nodes[linkData.toNode]; + if (toNode == null) continue; + toIndex = linkData.toIndex; + } + else { + toNode = LogicNode.createSocketDefaultNode(node.tree, linkData.socketType, linkData.socketValue); + toIndex = 0; + } + + LogicNode.addLink(node, toNode, linkData.fromIndex, toIndex); + } } } } public static function patchUpdateNodeProp(treeName: String, nodeName: String, propName: String, value: Dynamic) { - var tree = LogicTree.nodeTrees[treeName]; - if (tree == null) return; + if (!LogicTree.nodeTrees.exists(treeName)) return; + var trees = LogicTree.nodeTrees[treeName]; - var node = tree.nodes[nodeName]; - if (node == null) return; + for (tree in trees) { + var node = tree.nodes[nodeName]; + if (node == null) return; - 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; + if (!LogicTree.nodeTrees.exists(treeName)) return; + var trees = LogicTree.nodeTrees[treeName]; - var node = tree.nodes[nodeName]; - if (node == null) return; + for (tree in trees) { + var node = tree.nodes[nodeName]; + if (node == null) return; - node.inputs[socketIndex].set(value); + node.inputs[socketIndex].set(value); + } } public static function patchNodeDelete(treeName: String, nodeName: String) { - var tree = LogicTree.nodeTrees[treeName]; - if (tree == null) return; + if (!LogicTree.nodeTrees.exists(treeName)) return; + var trees = LogicTree.nodeTrees[treeName]; - var node = tree.nodes[nodeName]; - if (node == null) return; + for (tree in trees) { + var node = tree.nodes[nodeName]; + if (node == null) return; - node.clearOutputs(); - node.clearInputs(); - tree.nodes.remove(nodeName); + node.clearOutputs(); + node.clearInputs(); + tree.nodes.remove(nodeName); + } } public static function patchNodeCreate(treeName: String, nodeName: String, nodeType: String, propDatas: Array>, inputDatas: Array>, outputDatas: Array>) { - var tree = LogicTree.nodeTrees[treeName]; - if (tree == null) return; + if (!LogicTree.nodeTrees.exists(treeName)) return; + var trees = LogicTree.nodeTrees[treeName]; - // No further constructor parameters required here, all variable nodes - // use optional further parameters and all values are set later in this - // function. - var newNode: LogicNode = Type.createInstance(Type.resolveClass(nodeType), [tree]); - newNode.name = nodeName; - tree.nodes[nodeName] = newNode; + for (tree in trees) { + // No further constructor parameters required here, all variable nodes + // use optional further parameters and all values are set later in this + // function. + var newNode: LogicNode = Type.createInstance(Type.resolveClass(nodeType), [tree]); + newNode.name = nodeName; + tree.nodes[nodeName] = newNode; - for (propData in propDatas) { - Reflect.setField(newNode, propData[0], propData[1]); - } + for (propData in propDatas) { + Reflect.setField(newNode, propData[0], propData[1]); + } - var i = 0; - for (inputData in inputDatas) { - LogicNode.addLink(LogicNode.createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), newNode, 0, i++); - } + var i = 0; + for (inputData in inputDatas) { + LogicNode.addLink(LogicNode.createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), newNode, 0, i++); + } - i = 0; - for (outputData in outputDatas) { - LogicNode.addLink(newNode, LogicNode.createSocketDefaultNode(newNode.tree, outputData[0], outputData[1]), i++, 0); + i = 0; + for (outputData in outputDatas) { + LogicNode.addLink(newNode, LogicNode.createSocketDefaultNode(newNode.tree, outputData[0], outputData[1]), i++, 0); + } } } public static function patchNodeCopy(treeName: String, nodeName: String, newNodeName: String, copyProps: Array, inputDatas: Array>, outputDatas: Array>) { - var tree = LogicTree.nodeTrees[treeName]; - if (tree == null) return; + if (!LogicTree.nodeTrees.exists(treeName)) return; + var trees = LogicTree.nodeTrees[treeName]; - var node = tree.nodes[nodeName]; - if (node == null) return; + for (tree in trees) { + var node = tree.nodes[nodeName]; + if (node == null) return; - // No further constructor parameters required here, all variable nodes - // use optional further parameters and all values are set later in this - // function. - var newNode: LogicNode = Type.createInstance(Type.getClass(node), [tree]); - newNode.name = newNodeName; - tree.nodes[newNodeName] = newNode; + // No further constructor parameters required here, all variable nodes + // use optional further parameters and all values are set later in this + // function. + var newNode: LogicNode = Type.createInstance(Type.getClass(node), [tree]); + newNode.name = newNodeName; + tree.nodes[newNodeName] = newNode; - for (propName in copyProps) { - Reflect.setField(newNode, propName, Reflect.field(node, propName)); - } + for (propName in copyProps) { + Reflect.setField(newNode, propName, Reflect.field(node, propName)); + } - var i = 0; - for (inputData in inputDatas) { - LogicNode.addLink(LogicNode.createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), newNode, 0, i++); - } + var i = 0; + for (inputData in inputDatas) { + LogicNode.addLink(LogicNode.createSocketDefaultNode(newNode.tree, inputData[0], inputData[1]), newNode, 0, i++); + } - i = 0; - for (outputData in outputDatas) { - LogicNode.addLink(newNode, LogicNode.createSocketDefaultNode(newNode.tree, outputData[0], outputData[1]), i++, 0); + i = 0; + for (outputData in outputDatas) { + LogicNode.addLink(newNode, LogicNode.createSocketDefaultNode(newNode.tree, outputData[0], outputData[1]), i++, 0); + } } } diff --git a/blender/arm/make_logic.py b/blender/arm/make_logic.py index 0e74d043..5ecf42a1 100755 --- a/blender/arm/make_logic.py +++ b/blender/arm/make_logic.py @@ -79,7 +79,14 @@ def build_node_tree(node_group: 'arm.nodes_logic.ArmLogicTree'): f.write('\t\tthis.functionNodes = new Map();\n') f.write('\t\tthis.functionOutputNodes = new Map();\n') if arm.utils.is_livepatch_enabled(): - f.write(f'\t\tarmory.logicnode.LogicTree.nodeTrees["{group_name}"] = this;\n') + # Store a reference to this trait instance in Logictree.nodeTrees + f.write('\t\tvar nodeTrees = armory.logicnode.LogicTree.nodeTrees;\n') + f.write(f'\t\tif (nodeTrees.exists("{group_name}")) ' + '{\n') + f.write(f'\t\t\tnodeTrees["{group_name}"].push(this);\n') + f.write('\t\t} else {\n') + f.write(f'\t\t\tnodeTrees["{group_name}"] = cast [this];\n') + f.write('\t\t}\n') + f.write('\t\tnotifyOnRemove(() -> { nodeTrees.remove("' + group_name + '"); });\n') f.write('\t\tnotifyOnAdd(add);\n') f.write('\t}\n\n') f.write('\toverride public function add() {\n') @@ -217,9 +224,9 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: f.write(f'\t\t{"var __link = " if use_live_patch else ""}armory.logicnode.LogicNode.addLink({inp_name}, {name}, {inp_from}, {idx});\n') if use_live_patch: to_type = inp.arm_socket_type - f.write(f'\t\t__link.fromType = "{from_type}";') - f.write(f'\t\t__link.toType = "{to_type}";') - f.write(f'\t\t__link.toValue = {arm.node_utils.haxe_format_socket_val(inp.get_default_value())};') + f.write(f'\t\t__link.fromType = "{from_type}";\n') + f.write(f'\t\t__link.toType = "{to_type}";\n') + f.write(f'\t\t__link.toValue = {arm.node_utils.haxe_format_socket_val(inp.get_default_value())};\n') # Create outputs for idx, out in enumerate(node.outputs): @@ -229,9 +236,9 @@ def build_node(node: bpy.types.Node, f: TextIO) -> Optional[str]: f.write(f'\t\t{"var __link = " if use_live_patch else ""}armory.logicnode.LogicNode.addLink({name}, {build_default_node(out)}, {idx}, 0);\n') if use_live_patch: out_type = out.arm_socket_type - f.write(f'\t\t__link.fromType = "{out_type}";') - f.write(f'\t\t__link.toType = "{out_type}";') - f.write(f'\t\t__link.toValue = {arm.node_utils.haxe_format_socket_val(out.get_default_value())};') + f.write(f'\t\t__link.fromType = "{out_type}";\n') + f.write(f'\t\t__link.toType = "{out_type}";\n') + f.write(f'\t\t__link.toValue = {arm.node_utils.haxe_format_socket_val(out.get_default_value())};\n') return name