/*! Callback called for each element in an AttachmentMap (this is used by preWriteAttachmentMapField). */ void OSBCommonElement::handleAttachmentMapElementPreWrite( FieldContainer *refedFC) { OSG_OSB_LOG(("OSBCommonElement::handleAttachmentMapElementPreWrite\n")); if(refedFC == NULL) return; Attachment *refedAtt = dynamic_cast<Attachment *>(refedFC); // skip attachments marked as 'internal' if(refedAtt == NULL || refedAtt->getSFInternal()->getValue() == true ) { return; } OSBRootElement *root = editRoot(); UInt32 refedId = refedAtt->getId (); const std::string &typeName = refedAtt->getType().getName(); // only schedule a container once if(root->getIdSet().count(refedId) > 0) return; OSBElementBase *elem = OSBElementFactory::the()->acquire(typeName, root); root->editIdSet ().insert (refedId); root->editElementList().push_back(elem ); elem->setContainer(refedAtt); elem->preWrite (refedAtt); }