6115132998dd0cb4c09275a9710a0bca45426bb2
Instead of assigning Actions by direct pointer manipulation (and the corresponding juggling of user counts), call `animrig::assign_action()` and `animrig::unassign_action()`. These functions not only correctly handle user counts, but also ensure that slot assignments & user tracking works. The former always happens, the latter only when building with experimental features enabled. Because (un)assigning slotted Actions need the animated ID (instead of just the `AnimData *`), more functions now require an `OwnedAnimData`. Note that there is still some user count juggling. This is caused by `BKE_id_new()`, and by extension `BKE_action_add`, returning an ID with user count = 1, even though that ID is not yet used. A todo task #128017 has been made to change `BKE_action_add()` so that the Action it returns can be directly fed into `animrig::assign_action()`. This PR updates the following areas: - Creating a node group by grouping animated nodes, as this has to move the animation data. This PR just handles the assignment of a new Action. - Temporary Action creation for ungrouping node groups. - Versioning of pre-2.5 animation data. No functional changes. Ref: #123424 Pull Request: https://projects.blender.org/blender/blender/pulls/128026
…
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%
