Age | Commit message (Collapse) | Author |
|
|
|
I'm not sure why we may want to sample both a sharp and an unsharp edges at the
same time, maybe to see if the selected edges all have the same values?
Either way, implemented as in 2.79. I also believe we may have a faster way to
select all the edges, but let's file this under optimizations to be done later.
|
|
|
|
I'm not sure why the original implementation was only checking for equal
comparison but I'm doing the same here. It is a one line change if we
want to support LT/GT anyways.
Also "technically" we should compare the angles in the worldspace, since
different scales will result in different angles. Added as a TODO but
honestly I think this is overkill.
|
|
|
|
I'm using kdtree here but there is nothing preventing us from using a simple
float linked list with a sorting and finding "nearest" equivalents.
At least we are benefitting from bisecting as oppose to the original solution.
Also we need epsilon for the float comparisons.
|
|
|
|
|
|
This way we can implement them onw by one
|
|
New handle type for initial spin,
gives clear differentiation between do & redo (similar to extrude).
Some tweaks still required to match T56571.
|
|
- Add x,y rotate and translate controls.
- Remove x-depth adjustment.
|
|
Not sure why but MSVC is complaining for some of those.
In particular for the struct in BKE_subdiv_ccg.h. Those were the ones
crashing here..
|
|
|
|
|
|
When projecting the cursor onto a plane, clipping isn't important.
|
|
|
|
|
|
Using near far and optionally clipping planes is
involved and not needed in many cases.
Rename so a simpler version of this function can be added.
|
|
|
|
Check for navigation didn't refresh when navigation was completed.
|
|
Closer to the design from T54661
|
|
|
|
Was showing modal-delta-angle, which isn't useful for the spin tool.
|
|
Terms get/set don't make much sense when casting values.
Name macros so the conversion is obvious,
use common prefix for easier completion.
- GET_INT_FROM_POINTER -> POINTER_AS_INT
- SET_INT_IN_POINTER -> POINTER_FROM_INT
- GET_UINT_FROM_POINTER -> POINTER_AS_UINT
- SET_UINT_IN_POINTER -> POINTER_FROM_UINT
|
|
|
|
|
|
Note: I had to add an epsilon on top of the threshould for SIMVERT_NORMAL.
Otherwise I was getting differences such as 0.000000something when comparing
supposed-to-be-identical normals.
The way I see it, the Threshold option is a user feature, where users can
control more or less what they want selected. While the epsilon is a
non-negotiable requirement for our float comparison here.
This includes support for:
* SIMVERT_NORMAL
* SIMVERT_FACE
* SIMVERT_EDGE
Not included and currently not supported/disabled:
* SIMVERT_VGROUP
* SIMEDGE_*
* SIMFACE_*
While we are working on this, we prevent users from using the non-ported modes.
Note: the bmo_similar.c file is still around, to be removed in the near future.
Everyone: Please fell free to jump in and help tackling the missing modes.
For details on the implementation discussion:
https://developer.blender.org/D3674
|
|
|
|
Checking the active tool or operator was a common way to check
if the gizmo was still in use.
|
|
Needed for spinning multiple revolutions.
|
|
|
|
- Now the spin tool has a persistent gizmo.
- Uses scene orientation, with additional view orientation.
- Uses the cursor center, ignoring the pivot since the
selection center is rarely useful.
- Disable most of the redo gizmo's for now since they overlap,
only allow adjusting the angle.
Note: mixing new action with adjusting previous is confusing,
we'll want to have design guidelines regarding this.
|
|
|
|
|
|
|
|
To mix both initial spin and redo ends up being more involved,
move into own file.
|
|
Make main angle adjustment radius larger since it's the most useful.
|
|
- Only respond to drag event, so placing the cursor is possible.
- Start off with zero rotation, dragging adjusts.
|
|
Partially re-initializing a gizmo is often more trouble then removing
and re-adding.
|
|
Abbreviate to 'ggd', replacing manipulator reference.
|
|
|
|
|
|
|
|
Without this, it's more like deleting the vertex than dissolving.
|
|
Also no need to clear selection history,
BM_mesh_elem_hflag_disable_all handles this.
|
|
|
|
|
|
In some cases we need to use this array afterwards,
so this gives control over which objects are used for picking.
Also use an index argument as return argument
so callers that need to know the index in the array
don't need to calculate it afterwards.
|
|
Having all pre-selection in one file isn't so nice,
differentiate edge-ring from element pre-selection.
|
|
- Poly build now uses a new gizmo for pre-selection
which has the same behavior as loop-cut.
This replaces hack where mouse-move set the active element
which was no longer working properly because of missing
depsgraph updates.
- Multi-object support for poly-build.
- Support for deformed cage.
- Fix error where changing active object wasn't properly
refreshing the preselect gizmo (for loopcut too).
Currently holding Alt to select non-boundary element's isn't working.
|