df6d345bb48967ad63f076e530962b4b77555ca4
Avoid modifying the order of transform system data. Instead, create an index map and use that to traverse the data arrays in sorted order. The issue observed in #139042 stems from the assumption, in _some_ of the code, that `tc->data[i]`, `tc->data_ext[i]`, and `tc->data_2d[i]` all contain information about the same "transformable thing". Since `tc->data` was sorted (by selection state and, optionally for proportional editing, by distance) but the other arrays were not, this caused issues. The most obvious solution, sorting all arrays the same way, turned out to be hard to do, as some elements in one array have pointers to elements in another array. Reordering those arrays would therefore also make it necessary to find and update those pointers. Instead, I decided to implement a sorted index map. The arrays can then be kept in their original order, and the index map can be used to visit them in sorted order. Pull Request: https://projects.blender.org/blender/blender/pulls/140132
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
