diff options
author | Bastien Montagne <bastien@blender.org> | 2021-12-22 18:57:07 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-12-22 19:34:13 +0300 |
commit | 8d3e57f338234995c30ae702fff62ed6229f762e (patch) | |
tree | d27b1f8a3a9de4c4404aa06fb5743e6044228479 /source/blender/makesdna/DNA_object_types.h | |
parent | 902318f0fd0e4f5ad73887451dcbe4f482e26702 (diff) |
Fix T93799: Outliner: Remaping objects could result in duplicates in a collection.
Fix is similar to how CollectionObject with NULL object pointers are handled.
Using one of the 'free' pad bytes in Object_Runtime struct instead of a
gset (or other external way to detect object duplicates), as this is
several times faster.
NOTE: This makes remapping slightly slower again (adds 10 extra seconds
to file case in T94059).
General improvements of remapping time complexity, especially when
remapping a lot of IDs at once, is a separate topic currently
investigated in D13615.
Diffstat (limited to 'source/blender/makesdna/DNA_object_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_object_types.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index c9345b6a950..13a368e4263 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -126,7 +126,12 @@ typedef struct Object_Runtime { /** Did last modifier stack generation need mapping support? */ char last_need_mapping; - char _pad0[3]; + /** Opaque data reserved for management of objects in collection context. + * E.g. used currently to check for potential duplicates of objects in a collection, after + * remapping process. */ + char collection_management; + + char _pad0[2]; /** Only used for drawing the parent/child help-line. */ float parent_display_origin[3]; |