15 dupli_set_.add(dupli_ob->
ob);
18 pid_to_dupli_.add(dupli_pid, dupli_ob);
19 instancer_pid_to_duplis_.lookup_or_add(dupli_pid.
instancer_pid(), {}).add(dupli_ob);
24 return dupli_set_.contains(
object);
30 if (dupli_ob->
ob->
parent !=
nullptr) {
31 const DupliObject *parent = find_duplicated_parent(dupli_ob);
32 if (parent !=
nullptr) {
37 return find_instancer(dupli_ob);
54 for (
const DupliObject *potential_parent_dupli : *found) {
55 if (potential_parent_dupli->ob != parent_ob) {
59 PersistentID potential_parent_pid(potential_parent_dupli);
60 if (potential_parent_pid.is_from_same_instancer_as(dupli_pid)) {
61 return potential_parent_dupli;
67const DupliObject *DupliParentFinder::find_instancer(
const DupliObject *dupli_ob)
const
69 PersistentID dupli_pid(dupli_ob);
72 const DupliObject *
const *found = pid_to_dupli_.lookup_ptr(parent_pid);
77 const DupliObject *instancer_dupli = *found;
78 return instancer_dupli;
Object is a sort of wrapper for general info.
const Value * lookup_ptr(const Key &key) const
const DupliObject * find_suitable_export_parent(const DupliObject *dupli_ob) const
void insert(const DupliObject *dupli_ob)
bool is_duplicated(const Object *object) const
PersistentID instancer_pid() const