IAttribute *EC_DynamicComponent::CreateAttribute(const QString &typeName, const QString &id, AttributeChange::Type change) { if (ContainsAttribute(id)) return IComponent::AttributeById(id); IAttribute *attribute = SceneAPI::CreateAttribute(typeName, id); if (!attribute) { LogError("Failed to create new attribute of type \"" + typeName + "\" with ID \"" + id + "\" to dynamic component \"" + Name() + "\"."); return 0; } IComponent::AddAttribute(attribute); Scene* scene = ParentScene(); if (scene) scene->EmitAttributeAdded(this, attribute, change); emit AttributeAdded(attribute); EmitAttributeChanged(attribute, change); return attribute; }
IAttribute *EC_DynamicComponent::CreateAttribute(const QString &typeName, const QString &name, AttributeChange::Type change) { if(ContainsAttribute(name)) return IComponent::GetAttribute(name); IAttribute *attribute = framework->Scene()->CreateAttribute(this, typeName, name); if(!attribute) { LogError("Failed to create new attribute:" + name + " in dynamic component:" + Name()); return 0; } // Trigger scenemanager signal Scene* scene = ParentScene(); if (scene) scene->EmitAttributeAdded(this, attribute, change); // Trigger internal signal emit AttributeAdded(attribute); EmitAttributeChanged(attribute, change); return attribute; }