Age | Commit message (Collapse) | Author |
|
other editmesh_ files.
|
|
|
|
oflag.
|
|
the problem was numeric precision when in ortho mode the start/end points for the view vector would be 2000 apart which caused trouble for the intersection test.
|
|
|
|
change.
This is in preparation for bug fixing and cleanup related to tracking
of bmface and is_space state variables. And makes it more likely
to avoid bugs in future where some part of state is copied but not all.
|
|
Sometimes split would fail to make a face - make sure it doesn't
crash if that happens.
Chain finding code for holes would sometimes go back to same
vertex on the face, which causes problems, so fixe that.
Also, disallowed a cut that starts at a vertex or edge and
cycles back to that same point in a face - this would make
a face with a repeated vertex, which may not be handled by
the rest of the system properly.
|
|
|
|
This corresponds to the more usual convention.
There was no key connected to Cancel, and we already
have Return, Numpad-Return, and Right-click for confirm.
|
|
|
|
30333.
Knifetool accumulates a bunch of proposed cuts and when the user
confirms, it makes them all. The old code did this by using scanfill
to triangulate the cutting edges in their faces, and then merging
triangles where possible. This sometimes ended up with strange
lost faces, and also made it so that when holes were cut, the
surrounding face ended up totally triangulated. But 29908 was
an example of a lost face.
This new code directly finds chains of cutting edges that go from
one side of a face to the other and using BM_edge_split_n to make
the cuts. Holes are handled by finding two good places where
the hole can be connected to the containing face (using two
because I think some other code in bmesh assumes that there are
no edges that appear twice in a face).
The old code is still there with #if SCANFILL_CUTS, so can easily revert
if this proves to be a bad idea.
Also, a small fix to previously added BM_split_n (forgot to
copy face attributes to new face).
|
|
when the source and destination vectors were the same pointer, the X value would get overwritten.
now the rip tool uses the best side to grab as in trunk.
|
|
when rotating multiple edges.
Now create the rotate edge in advance and copy its customdata (before joining the faces).
This commit also fixes an annoyance where tryangulating faces could create duplicate edges.
|
|
Before, if you cut the same edge multiple times
with an intermediate point in space, it wouldn't
get all of the edges.
|
|
|
|
|
|
replace casts: '((Mesh *)ob->data)->edit_btmesh' with 'BMEdit_FromObject(ob)'
also minor style edits.
|
|
|
|
also correct bad assert() in previous commit.
|
|
|
|
inline in drawobject.c)
|
|
|
|
|
|
|
|
|
|
* change BMO_elem_flag_* defines to inline functions.
* BMO_slot_map_insert() is too big for an inline function - un-inline it.
* remove redundant casts.
|
|
spelling 'impliment' -> 'implement'
|
|
|
|
- copy & rename EditMesh stricts for use with scanfill (remove unused members)
|
|
both crash and leak are fixed now.
|
|
though there is still a memory leak, but it looks like the leak may be in BLI_smallhash.c, not knife code.
|
|
|
|
In preparation for code in progress that uses lists
allocated out of the knife arena. This also makes
existing code more readable and understandable IMO.
Also removed an #if'd out function that will not
ever be needed.
|
|
* remove BMO_elem_flag_* functions, since there are already defines for this.
* ifdef unused bevel functions.
* rename defines BMOP_ --> BMO_OP_
|
|
|
|
`_set` suffix was used in two ways (confusing)
* to set a flag to be enabled.
* to set a value passed as an argument.
now use enable/disable rather then set/clear for functions which change flags.
also remove BME_weld.c, the file didnt contain much code and the current extrude works well
|
|
These changes are to make the bmesh api more consistent and easier to learn, grouping similar functions which is convenient for autocomplete.
This uses similar convention to RNA.
* use face/loop/edge/vert as a prefix for functions.
* use 'elem' as a prefix too for functions that can take any type with a BMHeader.
* changed from camel case to underscore separated (like RNA).
|
|
|
|
|
|
|
|
|
|
replace 0/1 with TRUE/FALSE define.
|
|
|
|
Notes:
- uses 'c' as toggle key in and out of angle snapping
(aka constrain) mode
- when in angle snapping mode, after first click, will
constrain line to nears 0, 45, or 90 degree line
- constraint is in screen space, not model space,
so will usually be used in axis aligned view
|
|
Notes:
- only cuts through when the occlude geometry button is unpushed,
else the old behavior
- doesn't add points in middle of occluded faces yet, so will not
make partial cuts or hole cuts in occluded faces; for best
results, start and finish cuts completely outside the mesh
- also made slight improvement to behavior when starting cut
off the model
- a small refactor: added knife_add_to_vert_edges for code
used a number of times
|
|
|
|
* BM_Make_Quadtriangle --> BM_Make_Face_QuadTri_v
* BM_Make_QuadTri --> BM_Make_Face_QuadTri
|
|
its own check for ortho
|
|
|
|
extra-face bug
|