From f82ffb2e1e0ad80ddd2c0686b5985a4ce8453c9a Mon Sep 17 00:00:00 2001 From: Alfredo de Greef Date: Tue, 6 Jun 2006 16:56:47 +0000 Subject: Updated the 'library linked data' code to use the render object table as suggested by Ton. --- source/blender/yafray/intern/export_File.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'source/blender/yafray/intern/export_File.cpp') diff --git a/source/blender/yafray/intern/export_File.cpp b/source/blender/yafray/intern/export_File.cpp index 740431dd3a0..ba76a110606 100755 --- a/source/blender/yafray/intern/export_File.cpp +++ b/source/blender/yafray/intern/export_File.cpp @@ -1177,10 +1177,24 @@ void yafrayFileRender_t::writeObject(Object* obj, const vector &VLR_li xmlfile << ostr.str(); ostr.str(""); - // if objects are externally linked from a library, they could have a name that is already - // defined locally, so to prevent name clashes, prefix name with 'lib' + + // using the ObjectRen database, contruct a new name if object has a parent. + // This is done to prevent name clashes (group/library link related) string obname(obj->id.name); - if (obj->id.flag & (LIB_EXTERN|LIB_INDIRECT))obname = "lib_" + obname; + // previous implementation, keep around, in case this is still useful + //if (obj->id.flag & (LIB_EXTERN|LIB_INDIRECT))obname = "lib_" + obname; + ObjectRen *obren; + for (obren = static_cast(re->objecttable.first); + obren; obren=static_cast(obren->next)) + { + Object *db_ob = obren->ob, *db_par = obren->par; + if (db_ob==obj) + if ((db_ob!=NULL) && (db_par!=NULL)) { + obname += "_" + string(db_par->id.name); + break; + } + } + ostr << "