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')