forked from bartvdbraak/blender
Fix [#26213] Collada exporter id's not unique
Reported by Kevin Yoon <material> could get same id as <node>, prevent that by suffixing -material.
This commit is contained in:
parent
9234cb6e30
commit
82b21ba166
@ -50,7 +50,7 @@ void InstanceWriter::add_material_bindings(COLLADASW::BindMaterial& bind_materia
|
||||
COLLADASW::InstanceMaterialList& iml = bind_material.getInstanceMaterialList();
|
||||
|
||||
if (ma) {
|
||||
std::string matid(id_name(ma));
|
||||
std::string matid(get_material_id(ma));
|
||||
matid = translate_id(matid);
|
||||
COLLADASW::InstanceMaterial im(matid, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, matid));
|
||||
|
||||
|
@ -49,7 +49,7 @@ void MaterialsExporter::operator()(Material *ma, Object *ob)
|
||||
{
|
||||
std::string name(id_name(ma));
|
||||
|
||||
openMaterial(translate_id(name), name);
|
||||
openMaterial(get_material_id(ma), name);
|
||||
|
||||
std::string efid = translate_id(name) + "-effect";
|
||||
addInstanceEffect(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, efid));
|
||||
|
@ -272,3 +272,8 @@ std::string get_camera_id(Object *ob)
|
||||
{
|
||||
return translate_id(id_name(ob)) + "-camera";
|
||||
}
|
||||
|
||||
std::string get_material_id(Material *mat)
|
||||
{
|
||||
return translate_id(id_name(mat)) + "-material";
|
||||
}
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "Math/COLLADABUMathMatrix4.h"
|
||||
|
||||
#include "DNA_armature_types.h"
|
||||
#include "DNA_material_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "BLI_math.h"
|
||||
|
||||
@ -94,4 +95,6 @@ extern std::string get_joint_id(Bone *bone, Object *ob_arm);
|
||||
|
||||
extern std::string get_camera_id(Object *ob);
|
||||
|
||||
extern std::string get_material_id(Material *mat);
|
||||
|
||||
#endif /* COLLADA_INTERNAL_H */
|
||||
|
Loading…
Reference in New Issue
Block a user