This commit uses continue in loops and returning early to reduce
indentation in long functions, only where this results in a significant
improvement. Also includes a few LISTBASE_FOREACH macros.
Changing language could sometimes leave File Browser System list showing incorrect text until restart.
Differential Revision: https://developer.blender.org/D9323
Reviewed by Brecht Van Lommel
The operator was using a secondary python operator to ask parameters before running, but this can be done in invoke.
Differential Revision: https://developer.blender.org/D9330
Activate an FCurve only on selecting, and not on deselecting a keyframe
or a handle.
Reviewed By: HooglyBoogly, Severin, looch, #animation_rigging
Differential Revision: https://developer.blender.org/D9328
Draw the handles for the active keyframe only when the interpolation type
is set to Bézier. This now matches the behaviour of handles of regular
(non-active) keyframes.
Caused by rB7878adf49cff.
When getting the stroke location via raycast in ortho view, the above
commit flipped the condition of the check to perform adjustments on the
rays start/end. This would thus happen (even though it shouldnt),
resulting in wrong depth and stroke location.
Now just flip the condition back, so adjustments only happen when
clipping is OFF.
Maniphest Tasks: T81934
Differential Revision: https://developer.blender.org/D9318
This regression was caused by rB57de5686048f which disabled srgb
transform after the python callback.
The right thing to do is to only rebind the framebuffer once to
reset the no-srgb override.
For objects with shared data, it makes sense to show the mode icon for
every object sharing the same data if one of them is in edit mode.
This also disables the "extend" functionality in this case, because
being in edit mode for multiple objects with the same data isn't
supported.
Differential Revision: https://developer.blender.org/D9273
Move the checks for whether to draw the button to the beginning of the
function and return early. Also use a shorthand variable for ob_active.
Committing to 2.91 as a patch for an upcoming bug fix depends on these
changes.
Differential Revision: https://developer.blender.org/D9272
The solo mode was skipping the layer creation data and the loop of masks expect to have all layers in the array or the loop crash.
The solution is just create the layer array data for the layer, but don't draw any stroke.
This adds a property to the grab that masks vertices based on its
original normal and grab delta. When used on thin meshes, it allows to
grab the silhouette from one side of the object without affecting the
shape of the other side.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9205
Paint and smear tools are only implemented for regular mesh PBVH,
meaning they are not supported by the dynamic topology and multires
sculpting.
These tools are to be ignored for an unsupported sculpt modes, regardless
of state of user preferences.
Reviewed By: sergey
Maniphest Tasks: T81932
Differential Revision: https://developer.blender.org/D9308
The new parameter allows to define if after cutting the stroke the cap of the cut side will be set as flat.
Before, the cap shape of the cut side always was equal to the original stroke, and in some situations, the rounded cap was visible.
Note: If the angle of the join is very extreme, it's still possible to view some sections of the cut stroke.,
All tools planned for 2.91 now have icons, so this option can be
removed.
Reviewed By: dfelinto, Severin
Differential Revision: https://developer.blender.org/D9299
From the backtrace it looks like in some cases file save (which triggers
a general override updates) is done before other code has a chance to
re-generate pose data, leading to rna accessing freed memory.
I was never able to reproduce that here, so this is a tentative fix in
master, if it proves to be working for the studio it will be
cherry-picked into 2.91 release branch later.
It was rather a huge chunk of code, which started to become
more harder to maintain with the transition to OpenSubdiv based
implementation. Because of this transition, the compatibility was
also rather on a poor side.
Remove compatibility support for pre-2.50.9 multires.
Ref T77107
Reviewed By: brecht, mont29
Differential Revision: https://developer.blender.org/D9238
Historically the result of the keying node was violating alpha
pre-multiplication rules in Blender: it was simply overriding
the alpha channel of input.
This change makes it so keying node mixes alpha into the input,
which solves the following issues:
- The result is properly pre-multiplied, no need in separate
alpha-convert node anymore.
- Allows to more easily stack keying nodes.
This usecase was never really investigated, but since previously
alpha is always overwritten it was never possible to easily stack
nodes. Now it is at something to be tried.
Unfortunately, this breaks compatibility with existing files, where
alpha-convert node is to be manually removed.
From implementation side this is done as a dedicated operation since
there was no ready-to-use operation. Maybe in the future it might
be replaced with some sort of vector math node.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D9211
`imb_gpu_get_data` could reuse `data_rect` when it was already in used (double alloc).
making the first use leak. This was detected after enabling OpenGL Texture
Limit.
Reviewed By: Clément Foucault
Differential Revision: https://developer.blender.org/D9280