* Removed some fields from struct SculptSession:
- Fields drawobject, projverts, and previous_r were completely
unused
- Field `ob' was really unnecessary, changed sculpt functions
to pass the object rather than the SculptSession
This removal of `ob' from SculptSession should should make it a little
easier to continue generalizing paint/sculpt functionality.
There should be no visible changes from cleanup.
type and data
Recoded Keyframe Smoothing operator to work better for continuous
curves (i.e. ones with monotonically increasing slopes in sections) as
opposed to hypothetically jagged ones.
The old method assumed that handles should be flat as otherwise, you'd
often get unsmooth curves just because you went and tilted some of the
handles for local extrema, causing some unkeyframed overshoots, which
also leads to changes in timing, which in turn often means unsmooth
motion. Hence, the code took advantage of this to do things with less
extra data.
However, now we have a proper "flatten handles" tool (under snap ->
horizontal) so this functionality is not needed in the general case
where it will lead to stair-stepping artifacts.
for sampling were not consistent, now the RNG is seeded per strand, and some
tweaks were done to make the jittered sampler cache return consistent sample
numbers for strands.
Pressing ESC on material icon preview changes made it stop updating
the icons. Was caused by default 'break' callback testing ESC and
not resetting it. Now it uses same break callback as other previews.
Double click in File Window also loaded a file on double-click at
a directory.
The operator for it was using a Macro mistakingly here. On any double
click, it selected the item first and then executed load.
By default, any double click action has to rely on the first click
being properly handled before. Simply removing this macro, and assign
the "exec operator" to the double-click event works as expected.
A double click on a directory then just shows the dir (because the exec
requires an 'active' file item).
One node update call (for nodes within group nodetrees) was using the
wrong nodetree (node-editor's nodetree, not the group) which meant
that the wrong RNA context for such nodes would get used, resulting in
errors when trying to keyframe such nodes.
Hopefully this is the last time I have to fix these bugs...
* Using the job system for physics baking is not yet in the near future, so here's some good old console based progress info to all point cache based physics baking.
* The info contains current total bake time, baking time for the current frame, and a simple estimate of completion time.
* The info is only shown if the estimated total time for the bake is higher than one minute, so quick bakes don't suffer any performance hits due to console printing.
does exit cancelling the translation (as expected), while RMB doesn't,
it works same as LMB
This should fix the remaining issues with marker tweak-grab mappings
(hardcoded for right-mouse for now)
The sequencer made it's own copy of the Markers keymap, which was
inconsistent with the rest of Blender, making things confusing to use.
I've removed these duplicate keymap entries, and also changed the
conflicting hotkeys for Metastrips.
Metastrips now use the same hotkeys that their NLA cousins use:
Shift-G to add, Alt-G to remove; These were chosen since in user-
terms, metastrips are more like "strip groups"
Node compositor crash:
When you very quickly unlink a socket *right* after connecting it
(within 0.1 second), the compositor started with a noodle without
valid connections, which was not foreseen to happen.
More problems with Undo and Render Slots (Image editor)
- Undo storage for operator is now back, but only when new
buffers were added (not when viewing existing)
- A real bug: On undo/redo, the stored buffers were never
retrieved, but always freed entirely.
Note however that when you undo back to a state before you
rendered (or added slots), the render buffers that didn't
exist back then also get freed. A redo doesn't bring it back.
ASCII lookup table wasn't being freed when when the rest of the glyphs were.
Also found own bug where mesh stat text was using wrong sized array (char[3] as char[4]).
Very bad crashing in using "Not AA fonts" and drawing length info
on EditMesh. This uses the call BLF_draw_ascii() which apparently
corruptes then badly. Disabled the call for now, and wait for fix.
In the course of testing, added proper strlen storage for draw
in this code.
Added strlen
- Tooltip-hanging fix made the 'active' button be removed when mouse
enters another subwindow. Caused by commit of a week ago.
- Reverted the eventsystem change that sets 'active subwindow' before
it calls modal handlers. This made editors become active on using
menus, buttons, or other modal ops.
Side effect is that for transform operators called via toolbar, the
overlay-extra draw with helplines now gets skipped. Will check on
good ways for it.
Option for tagging creases (Ctrl+RMB) to also re-unwrap the mesh.
In 2.42 this could be done by setting rt==8 (very hidden), now its a little less hidden (in the toolbar).
change how the extraction commands are presented (old BUILD_TYPE was empty all the time here) and
ensure also that python/lib subdir under versioned dir gets actually created.
Submitted by Alexander Kuznetsov
Fixes [#25279] Shift-Numpad Combinations fail to align view to selected
and addresses [#26328] Blender uses global keyboard message hook which hurts system responsiveness on Windows
A whole new way of handling keyboard input improves greatly both code readability and event handling. Thanks for the great patch, Alexander!
Hanging Tooltips solved!
It appeared to be that an active button remained in that state when
another region/editor became active. It then kept the button-activate
state, and therefore also the optional tooltip.
This only happened on fast moves, when a mousemove event was not passed
on anymore to the previously active subwindow.
It has been solved with a new notifier (SWINACTIVE), which gets sent on
new active regions. The screen listener then calls uiFreeActiveButtons()
to find out if buttons were still active somewhere else.