diff --git a/Sources/armory/logicnode/AddTraitNode.hx b/Sources/armory/logicnode/AddTraitNode.hx index d6139fb1..eef933d7 100644 --- a/Sources/armory/logicnode/AddTraitNode.hx +++ b/Sources/armory/logicnode/AddTraitNode.hx @@ -10,10 +10,16 @@ class AddTraitNode extends LogicNode { override function run(from: Int) { var object: Object = inputs[1].get(); - var trait: Dynamic = inputs[2].get(); + var traitName: String = inputs[2].get(); - if (object == null || trait == null) return; + assert(Error, object != null, "Object should not be null"); + assert(Error, traitName != null, "Trait name should not be null"); + var cname = Type.resolveClass(Main.projectPackage + "." + traitName); + if (cname == null) cname = Type.resolveClass(Main.projectPackage + ".node." + traitName); + assert(Error, cname != null, 'No trait with the name "$traitName" found, make sure that the trait is exported!'); + + var trait = Type.createInstance(cname, []); object.addTrait(trait); runOutput(0); 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 aac4a5f3..8877742b 100644 --- a/blender/arm/logicnode/trait/LN_add_trait_to_object.py +++ b/blender/arm/logicnode/trait/LN_add_trait_to_object.py @@ -4,11 +4,11 @@ class AddTraitNode(ArmLogicTreeNode): """Adds trait to the given object.""" bl_idname = 'LNAddTraitNode' bl_label = 'Add Trait to Object' - arm_version = 1 + arm_version = 2 def arm_init(self, context): self.add_input('ArmNodeSocketAction', 'In') self.add_input('ArmNodeSocketObject', 'Object') - self.add_input('ArmDynamicSocket', 'Trait') + self.add_input('ArmStringSocket', 'Trait') self.add_output('ArmNodeSocketAction', 'Out')