`UUID` generally stands for "universally unique identifier". The session identifier that
we use is neither universally unique, nor does it follow the standard. Therefor, the term
"session uuid" is confusing and should be replaced.
In #116888 we briefly talked about a better name and ended up with "session uid".
The reason for "uid" instead of "id" is that the latter is a very overloaded term in Blender
already.
This patch changes all uses of "uuid" to "uid" where it's used in the context of a
"session uid". It's not always trivial to see whether a specific mention of "uuid" refers
to an actual uuid or something else. Therefore, I might have missed some renames.
I can't think of an automated way to differentiate the case.
BMesh also uses the term "uuid" sometimes in a the wrong context (e.g. `UUIDFaceStepItem`)
but there it also does not mean "session uid", so it's *not* changed by this patch.
Pull Request: https://projects.blender.org/blender/blender/pulls/117350
Add an operator to remove all unused bone collections. This is added to
the bone collections "specials" menu and the tree view context menu.
A bone collection is considered "unused" when it has no bones assigned,
and also no child collection that has bones assigned.
Armature Edit mode has its own undo handling, which didn't store the
number of root bone collections in the armature. Now it does.
An alternative would be to not store this in the undo step, but rather
loop over all bone collections to find the minimum `child_index`. This
would be linear in the number of bone collections, though, so I chose to
use a few more bytes of memory to make the undo system a little faster.
The relations update code does tagging needed to ensure that the
array of bases is updated when relations are updated. It was done
by tagging the Scene ID node, and potentially recursing into all
dependent depsgraph nodes. If there is a driver on a scene property
it was unnecessarily re-evaluated.
This solves the slow behavior of adding objects in the test file
from #117335.
Pull Request: https://projects.blender.org/blender/blender/pulls/117403
Change parameters tagging from implicit based on the copy-on-write to
more explicit, allowing to ignore tagging of parameters component for
changes which do not affect drivers.
There is still implicit parameters tagging based on tags for geometry
or transform components to avoid making changes in too many places of
Blender.
Should be no functional changes, only expecting better performance.
Pull Request: https://projects.blender.org/blender/blender/pulls/117336
The update callback of this property does proper tagging.
Should be no functional changes, but allows the depsgraph to make
more optimal decision on avoiding unneeded recalculations.
In practice this should avoid unnecessary re-evaluation when
toggling this option on objects on outliner.
Ref #117335
This node is needed to ensure evaluation order of scene and modifiers
which might access scene for custom data masks, or for the current
frame.
Move it to own component, so that evaluation of scene does not lead
to changes in the parameters component, hence does not trigger
driver evaluation.
Should be no functional changes.
Ref #117335
In the Bone Collection tree, mark bone collections that contain any
selected bones with a hollow dot.
As before, collections containing the active bone are still hown with a
filled dot.
Bone collections created via the `bpy.ops.armature.collection_new`
operator now always become the next sibling of the active bone
collection. If there is no active one, the new one is added at the end
of the list as root.
This removes the `.parent_index` property of the operator, as it is now
always created relative to the active bone collection.
Black (the Python formatter) shouldn't be used on Blender. However, it
is still the default formatter for some people's IDE (like mine). If
it's accidentally used, its default behaviour is to normalise strings so
they use double quotes.
This string normalisation can be tedious to recover from. This PR
configures Black so that it doesn't do that any more. This makes such a
mistake easier to recover.
An additional comment explains that Black shouldn't be used, and that
the configuration is there just to make it less annoying in case of
mistakes.
For the same reasons, this commit also includes the config option
`line_length = 120`. It just makes Black change less of our code when
it's accidentally used.
- Group Extensions with Add-ons in preferences.
- No more official/community/testing, install and refresh.
- No more showing category on the headers
(there are no categories for extensions).
Changes proposed in #117285.
The "Keying Screen" texture is written by the compositor_keying_screen
shader and is not read by the shader. Use appropriate usage flag which
matches the shader behavior.
Note that the texture is read by a node down the road, so both flags are
needed.
Pull Request: https://projects.blender.org/blender/blender/pulls/117340
Splits the flag `..._FLAG_INSERTNEEDED` between autokey and
manual keying. The fact that this flag was shared between the two
systems has been the cause of issues in the past. It wouldn't
let you insert a keyframe even though you explicitly used an operator
to do so.
In order to be clearer what options are used where, the user preferences
have been reordered.
By default "Only Insert Needed" will be enabled for auto-keying, but not for manual keying.
The versioning code will enable both if it was enabled previously.
# Code side changes
The keying system has flags that define the behavior
when keys are inserted. Some of those flags were shared
between keying and auto-keying. Some were only used for
auto-keying.
To clarify that, prefix flags that used exclusively in one or the other
system with `AUTOKEY`/`MANUALKEY`
Also the flag name on the user preferences and the tool settings was renamed.
Previously it was called `autokey_flag`. To indicated that it is not only used
for autokeying, rename it `keying_flag`.
Fixes: #73773
Pull Request: https://projects.blender.org/blender/blender/pulls/115525