From 9774d4ed038df1f5ac3ff66670b2a97d986d4355 Mon Sep 17 00:00:00 2001 From: t3du <32546729+t3du@users.noreply.github.com> Date: Wed, 25 Dec 2024 21:35:44 -0300 Subject: [PATCH 1/3] Add files via upload --- .../armory/logicnode/GetMaterialsNode.hx | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 armory/Sources/armory/logicnode/GetMaterialsNode.hx diff --git a/armory/Sources/armory/logicnode/GetMaterialsNode.hx b/armory/Sources/armory/logicnode/GetMaterialsNode.hx new file mode 100644 index 000000000..83e23cb7f --- /dev/null +++ b/armory/Sources/armory/logicnode/GetMaterialsNode.hx @@ -0,0 +1,35 @@ +package armory.logicnode; + +import iron.object.MeshObject; +import iron.object.DecalObject; + +class GetMaterialsNode extends LogicNode { + + public function new(tree: LogicTree) { + super(tree); + } + + override function get(from: Int): Dynamic { + + var object = inputs[0].get(); + + assert(Error, object != null, "The object input must not be null"); + + #if rp_decals + if (Std.isOfType(object, DecalObject)) { + var decal = cast(object, DecalObject); + return from == 0 ? [decal.material] : 1; + } + #end + + if (Std.isOfType(object, MeshObject)) { + var mesh = cast(object, MeshObject); + + if (mesh == null) return null; + + return from == 0 ? mesh.materials : mesh.materials.length; + } + + return null; + } +} \ No newline at end of file From c3c49c27c12f5a266d48639f89ce4c9dded4eb9c Mon Sep 17 00:00:00 2001 From: t3du <32546729+t3du@users.noreply.github.com> Date: Wed, 25 Dec 2024 21:36:23 -0300 Subject: [PATCH 2/3] Add files via upload --- .../logicnode/material/LN_get_object_materials.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 armory/blender/arm/logicnode/material/LN_get_object_materials.py diff --git a/armory/blender/arm/logicnode/material/LN_get_object_materials.py b/armory/blender/arm/logicnode/material/LN_get_object_materials.py new file mode 100644 index 000000000..8e64630df --- /dev/null +++ b/armory/blender/arm/logicnode/material/LN_get_object_materials.py @@ -0,0 +1,13 @@ +from arm.logicnode.arm_nodes import * + +class GetMaterialNode(ArmLogicTreeNode): + """Returns the material of the given object.""" + bl_idname = 'LNGetMaterialNode' + bl_label = 'Get Object Material' + arm_version = 1 + + def arm_init(self, context): + self.add_input('ArmNodeSocketObject', 'Object') + self.add_input('ArmIntSocket', 'Slot') + + self.add_output('ArmDynamicSocket', 'Material') From 2c3f1ee94719ba45c89eb4aecc52922b57faec42 Mon Sep 17 00:00:00 2001 From: t3du <32546729+t3du@users.noreply.github.com> Date: Wed, 25 Dec 2024 21:44:52 -0300 Subject: [PATCH 3/3] Add files via upload --- .../logicnode/material/LN_get_object_materials.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/armory/blender/arm/logicnode/material/LN_get_object_materials.py b/armory/blender/arm/logicnode/material/LN_get_object_materials.py index 8e64630df..d307a2b39 100644 --- a/armory/blender/arm/logicnode/material/LN_get_object_materials.py +++ b/armory/blender/arm/logicnode/material/LN_get_object_materials.py @@ -1,13 +1,13 @@ from arm.logicnode.arm_nodes import * -class GetMaterialNode(ArmLogicTreeNode): - """Returns the material of the given object.""" - bl_idname = 'LNGetMaterialNode' - bl_label = 'Get Object Material' +class GetMaterialsNode(ArmLogicTreeNode): + """Returns the materials of the given object.""" + bl_idname = 'LNGetMaterialsNode' + bl_label = 'Get Object Materials' arm_version = 1 def arm_init(self, context): self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('ArmIntSocket', 'Slot') - self.add_output('ArmDynamicSocket', 'Material') + self.add_output('ArmNodeSocketArray', 'Materials') + self.add_output('ArmIntSocket', 'Length')