Age | Commit message (Collapse) | Author |
|
handling).
This commit changes a lot of how IDs are handled internally, especially the unlinking/freeing
processes. So far, this was very fuzy, to summarize cleanly deleting or replacing a datablock
was pretty much impossible, except for a few special cases.
Also, unlinking was handled by each datatype, in a rather messy and prone-to-errors way (quite
a few ID usages were missed or wrongly handled that way).
One of the main goal of id-remap branch was to cleanup this, and fatorize ID links handling
by using library_query utils to allow generic handling of those, which is now the case
(now, generic ID links handling is only "knwon" from readfile.c and library_query.c).
This commit also adds backends to allow live replacement and deletion of datablocks in Blender
(so-called 'remapping' process, where we replace all usages of a given ID pointer by a new one,
or NULL one in case of unlinking).
This will allow nice new features, like ability to easily reload or relocate libraries, real immediate
deletion of datablocks in blender, replacement of one datablock by another, etc.
Some of those are for next commits.
A word of warning: this commit is highly risky, because it affects potentially a lot in Blender core.
Though it was tested rather deeply, being totally impossible to check all possible ID usage cases,
it's likely there are some remaining issues and bugs in new code... Please report them! ;)
Review task: D2027 (https://developer.blender.org/D2027).
Reviewed by campbellbarton, thanks a bunch.
|
|
Getting a new edit-derived-bmesh was always creating a deform-vert array, even when it wasn't needed.
Since this was called on redraw, in many cases it was doing it unnecessarily.
Now pass in a custom-data mask and only fill in deform-verts when needed.
Gives noticeable drawing speedup (~10-30% here).
|
|
|
|
Caused leaks reading old files, was read/written but not freed,
remove since its unused.
|
|
Replace inline endian switching
|
|
Also remove temp preview overwriting.
|
|
Name operator based on default behavior.
|
|
|
|
Own error in recent decimeter commit
|
|
Check if Python is initialized before calling BPY_python_end.
|
|
comments...
|
|
linked libraries cases.
Good old dead-brain stupid error when iterating over a linked list from which you remove some items...
|
|
Layer flags can go up to 2^n-1 for n layers, requiring *at least* 9 chars + 1 terminator for 20 layers.
|
|
Support Snapping screen-space 2d curves, (was applying world-space coords in screen-space).
Also show snap settings in header.
|
|
Not good practice, but better not crash.
|
|
|
|
A new option for Font/Text objects vertical alignment:
* Top Base-Line (current mode)
* Top
* Center
* Bottom
The Top is the equivalent as the Top-Baseline with an empty line at the begin of the
text. It's nice to have this option too though, since if we are driving
the alignment via Python we don't want to add extra lines to the text
only to accomodate to the desired vertical alignment.
The Center and Bottom are as intuitive as their name suggest.
When working with text boxes, the vertical alignment only work for
paragraphs that are not vertically full.
Many thanks to Campbell Barton (ideasman42 / @campbellbarton) for the
code review, code comments, and overall suggestions and changes :)
Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D2061
|
|
|
|
BM_face_split_edgenet wasn't correctly detecting boundary vertices to walk over,
since vertices may be attached to boundary edges not part of the newly created face.
|
|
Since this function is called a lot, loop over data directly.
|
|
|
|
rB046adde64f16 was actually pretty useless (and broken), since issue ends up not being
in binary search code, but in generation of the 'summed weights' array used to distribute
particles over mesh items - looks like very small weights could lead to null accumulated
weights, wich was breaking binary search.
Fixed simply by adding a minimal, non-zero weight for mesh items to be allowed to emit particles.
Hopefully we are done with this distribution mess!
|
|
|
|
BMO iterator would loop over removed faces.
Recent changes to mempool FREEWORD size exposed this bug.
|
|
output in some situations
|
|
Some area were still not in sync with readfile.c, now should be better.
Note that readfile.c has been used as référence here re us refcounting,
not sure how accurate it is, time will say :|
|
|
There are most likely some more still, but think this should now be inline with
libquery looper...
|
|
|
|
D2050 by @metaraptor with edits
Adds levels, brightness/contrast, hsv & invert operations.
|
|
|
|
Optimization in binary search could lead to equality instead of expected strictly greater than value.
Harmless but noisy, and better be strict here.
reported by sergey on irc (with koro cycles benchmark file), thanks.
|
|
This allows the error threshold for calculating the optimized location to be much lower.
Resolves visible artifacts w/ 1m-tri happy-buddha example.
|
|
- mul_v3_m3v3_db
- mul_m3_v3_db
- negate_v3_db
|
|
Since ruler allows other operators to run (such as mode-switching).
Only cache snap-context while dragging.
|
|
|
|
Created double faces, leaked memory.
|
|
Both button and rename text would draw while renaming,
caused issues with some themes.
|
|
|
|
Meta contents could obscure meta selection outline, draw after.
|
|
VSE effects within a meta-strip could fail to update on cancel.
|
|
Missing update caused internal lengths to be wrong.
|
|
Maybe we should move it to BLI, but not sure how, and where (and its defines
are SpaceFile's ones, meh :| ).
|
|
Factorized writing of ID block's data (so far, only IDProps) into own helper func.
This also fixes missing IDProp (aka custom data) saving from GreasePencil and Library
datablocks (and add comment about why we do not save WM IDProps).
Finaly, it ensures all ID-related data are written immediately after the ID itself
(was not the case for all data types previously, some were writting their own data
before IDProps). This is not a fix (.blend file format does not enforce any order
on sub-data of datablocks, they only have to be after datablock struct itself in file),
but makes things more consistent.
|
|
|
|
Check to avoid operating on same strip multiple times wasn't working.
Harmless but better make it functional.
|
|
Warning and let the Mesh Validator take care of the cleanup
|
|
material use node groups
|
|
This can't be avoided completely, however the threshold used can be much lower.
|
|
|
|
Before the intervall was set to 0.125 which effectively resulted in 8 positions across the UV space (per axis).
I halved that value, holding shift enables an even finer movement.
This change was ported over from my soc-2016-uv_tools branch after talking with howardt, ideasman42 and hackerman-
|