The copy constructors for `animrig::Strip`, `animrig::Slot`, and
`animrig::StripKeyframeData` used a `memcpy` call as part of the copy
implementation. However, this produced warnings on clang 20. For example:
```
warning: first argument in call to 'memcpy' is a pointer to
non-trivially copyable type 'blender::animrig::Strip'
[-Wnontrivial-memcall]`
```
These warnings did not reflect any actual bugs, because the underlying DNA
structs that those types wrap are in fact trivial. Nevertheless, it's worth
fixing the warnings.
This fixes the warnings by replacing the uses of `memcpy` with equivalents that
amount to a `memcpy` anyway, but which the compiler understands are valid for
the types.
There was also one additional use of `memcpy` in `Strip::create()` that did not
trigger a warning because it operated directly on the underlying DNA struct, but
was also unnecessary. This PR also replaces that with a simple assignment.
Pull Request: https://projects.blender.org/blender/blender/pulls/137467
No functional changes intended.
This patch extracts functionality to get all `bAnimListElem`
that are editable in the Graph Editor
into a separate function so it can be re-used by other operators.
This makes it easy to ensure the same data is retrieved and
filter flags can't go out of sync.
Extracted from #135913
Part of: #135794
Pull Request: https://projects.blender.org/blender/blender/pulls/137142
This pull request adds options to hide and show strips in the Sequencer
Preview, using the same shortcuts. Included "Show/Hide" operators in the Strips
menu of preview mode. It only works on strips that are visible in the preview
at the current frame. The Unmute operator now shows all hidden strips in
the preview at the current frame, since it's not possible to select hidden strips
in sequencer preview.
See video in PR description.
Pull Request: https://projects.blender.org/blender/blender/pulls/137781
When snap setting is set to default and operation is cancelled,
snap setting from the topbar changes to different value instead of retaining
previous choice.
Pull Request: https://projects.blender.org/blender/blender/pulls/137819
It's safer to pass a type so that it can be checked if delete should be
used instead. Also changes a few void pointer casts to const_cast so that
if the data becomes typed it's an error.
Pull Request: https://projects.blender.org/blender/blender/pulls/137404
The operator "Interactive Light Track to Cursor" did not auto-key
rotation values previously, this fix makes sure that rotation property
is keyed after the operator has finished transforming the object. The
rotation property that's keyed depends on the rotation mode of the
object.
Pull Request: https://projects.blender.org/blender/blender/pulls/137796
This patch turns the options of the Chroma Key node into inputs.
In the process, the minimum and maximum angles were renamed to Minimum
and Maximum for consistency with other matte nodes.
Reference #137223.
Pull Request: https://projects.blender.org/blender/blender/pulls/137812
Reduce the usage of raw `char *` and `std::string` in a variety of
places where they weren't needed.
General notes:
- Anything used for output or reporting needs to be `StringRefNull`
- No additional strlen calls should be incurred beyond what was already
present
- Memory lifetime is still valid according to ASAN
Pull Request: https://projects.blender.org/blender/blender/pulls/137747
The arrays for CustomData layers aren't necessarily allocated with the guarded
allocator. Their ownership is managed by the implicit sharing system which is
required for CustomData layer data.
This allows writing e.g. `ptr.data_as<bNode>()` as an alternative to
`static_cast<bNode *>(ptr.data)`. There are a couple of benefits to this approach:
* It's less verbose.
* Reduces the amount of "forced" usages of `static_cast`.
* Allows us to add run-time type checks in that method.
The run-time type checks are not implemented in this patch, I'm still trying
to find a good way to do that. However, even without that, this patch improves
the situation already.
Pull Request: https://projects.blender.org/blender/blender/pulls/137720
Mistake in 1f680c3859
Fix that by moving the grease pencil processing into the existing
`modify_geometry_sets` loops instead. And then make a few small
changes to reduce the amount of boilerplate lines that introduces.
Pull Request: https://projects.blender.org/blender/blender/pulls/137732
Allows to log human-readable list of recalc bits that are set.
The usage is pretty simple:
```
printf("%s: %s %s\n", __func__, id->name, DEG_stringify_recalc_flags(id->recalc).c_str());
```
Pull Request: https://projects.blender.org/blender/blender/pulls/137715
Rather than trying to change the order of layers to match the evaluated
Grease Pencil geometry, keep the original layer order for now.
Generally, it's less common to change the layer order of original
layers inside a modifier. It's much more common to have the
evaluated layers and original layers in the same order, so for now,
keep the original order instead.
To correctly support this, we probably need to propagate layer groups
inside of geometry nodes. Currently, layer groups are mostly
ignored inside of evaluated data.
Part of #136300.
Pull Request: https://projects.blender.org/blender/blender/pulls/137727
This patch turns the options of the Vector Blur node into inputs.
In the process, the factor input was renamed to Shutter and was remapped
to match the shutter in Cycles/EEVEE.
Reference #137223.
Pull Request: https://projects.blender.org/blender/blender/pulls/137725
This patch turns the options of the Anti-Alias node into inputs.
In the process, the [0, 1] limit of the Contrast Limit input was lifted
to allow normalized arbitrary positive limits.
Reference #137223.
Pull Request: https://projects.blender.org/blender/blender/pulls/137717
This makes it possible to search layer names in the
`Named Layer Selection` node as well as boolean
modifier inputs that are marked as a `Layer Selection`.
The layer selection UI is slightly updated:
* Use a slightly larger default width for the
`Named Layer Selection` node.
* Use the layer icon in the field that search for layer names.
* Use `Layer` placeholder string
Pull Request: https://projects.blender.org/blender/blender/pulls/137273
Deleting all points creates an empty CurvesGeometry object, all previous
attributes are lost that way. Use resize(0, 0) instead, this preserves the attributes list.
Pull Request: https://projects.blender.org/blender/blender/pulls/137511
While working on #136907, I noticed issues with how we position and size
elements in the File/Asset Browser:
- A padding meant for outside the list "tiles" was applied inside, resulting
in unnecessary/unintended extra space between previews and their label, and
too small vertical paddings between tiles (see screenshots in PR).
- The height of text was measured based on the font size (not the actual line
height) and scaled up by some arbitrary amount. Made it hard to draw
multi-line text well, as done in #136907.
- Icons in list views were not centered vertically.
- The vertical list offset the entire list by the padding meant for tiles. Not
quite sure if intentional, I think it looks better with it. But code was
confusing since suddenly this extra tile padding was thrown in. Should be a
separate padding.
All these changes are a bit intertwined, so submitting them together.
Basically this makes paddings be applied more consistently and fixes related
issues, so the code makes much more sense.
Pull Request: https://projects.blender.org/blender/blender/pulls/137675
The interactive compositor crashes if the scene resolution is changed
after rendering. That's because the compositor queries its render size
from the scene directly, which might be different from the size that was
already rendered.
To fix this, the compositor should use the size of the existing render
result if available, while it should fallback to the scene resolution.
Pull Request: https://projects.blender.org/blender/blender/pulls/137674
Color picker supports palette color picking by clicking during the modal
operator, but it will set initial color on the color property when
exiting from palette color picking, but it didn't send out a notifier
which means interface would kept showing last hovering color.
This fix also included a more obvious visual notification on the bottom
bar so the mode change gets more attention and would be harder to miss.
-------
This PR makes it so that if you clicked while holding `Shift + X`, this info would prompt on the bottom bar, this may need interface to look & decide whether that's needed because previously the string change wasn't eye-catchy enough:
<img width="194" alt="图片" src="attachments/5185f05a-54c2-45b9-acf9-3a0da8d686bb">
Pull Request: https://projects.blender.org/blender/blender/pulls/128842