EditMesh *EM_GetEditMesh(Mesh *me);
void EM_EndEditMesh(Mesh *me, EditMesh *em);
as discussed on the mailling list, this is to facilitate migration to bmesh.
next step is to merge this this to the bmesh branch. this was done in the 2.5
branch to prevent too great a divergance.
also, made makesdna/makesrna work on cygwin/msvc2008/scons.
- use select as a suffix eg UV_OT_loop_select -> UV_OT_select_loop
- Each select all operator was using slightly different wording...
select_all, deselect_all, de_select_all, select_de_select_all -> select_all_toggle
- selection -> select
- POSE_OT_select_connected -> POSE_OT_select_linked to match other operators
- NODE_OT_delete_selection -> NODE_OT_delete since its not used in other operators
- ANIM_OT_previewrange_define -> ANIM_OT_previewrange_set to match other operators
- NODE_OT_fit_all -> NODE_OT_view_all to match other operators
- View2D_OT_* -> VIEW2D_OT_* to match VIEW3D
- View2D_OT_view_downscroll -> VIEW2D_OT_scroll_down more logical
- removed MARKER_OT_mouseselect_extend and made extend a boolean property of MARKER_OT_mouseselect
- MARKER_OT_mouseselect -> MARKER_OT_select
- GROUP_OT_group_remove -> GROUP_OT_objects_remove more logical since its removing objects from groups
- MESH_OT_removedoublesflag -> MESH_OT_remove_doubles
- redundant words MESH_OT_split_mesh -> MESH_OT_split, OBJECT_OT_object_delete -> OBJECT_OT_delete
renamed selection operator properties
extend_select -> extend
column_select -> column
select_children_only -> children_only
... Since these are all in the context of selection operators there is no need for the extra 'select' in the property name.
Updated docs
http://www.graphicall.org/ftp/ideasman42/html/bpyoperator-module.html
- Mesh Rip back (Vkey). For those who keep wondering how
it works: just put mouse cursor somewhere close to the
selection, press V and mouse mouse away from it. Feels
like real rip!
- Made extrude sorta work, no menu/options yet though.
But it does transform!
- Added an short event->mval[2] with region coords,
easier coding for the guys :)
- Fill operator standard delivers 'beauty' now
* Added Particle wrapping patch by Roelf de Kock. It's not
complete yet and I haven't reviewed it, but committing anyway,
will get to it later.
* Added "Percentage" subtype for floats. Doesn't really do
much besides making auto rna buttons into sliders rather than
numeric inputs, but can later display in % rather than 0.0-1.0.
still is mirror transform. This commits adds the remaining operators:
* UV mapping operators (U key menu): cube, sphere, cylinder, etc.
* Hide/Show operators.
And solves most XXX's, including:
* Fix bad includes and calls into space image.
* Aspect ratio correction.
* Create UVs if they don't exist yet on unwrap.
* Assign image to UVs.
* Drawing proportional edit circle.
Editmesh ops:
- MESH_OT_select_multi_loop
(based on selection it makes loops)
- MESH_OT_select_linked
added boolean 'limit' for linked limited by seams
- MESH_OT_select_linked_pick
same as above
The 'limit' option used to work only for facemode,
with a toolsettings option.
So it had no own hotkey... i made it work for
edges & vertices too, need to find hotkey later.
Sanitized the 'tweak' event.
Original idea was to have WM event system generating it
automatically. However, I first tested it via a handler
and operator, to check what kind of configurations would
be useful. It appeared to not work nice, also because
that inserting a tweak operator in a keymap is confusing.
Now 'tweaks' are generated automatically, and can be
catched by keymaps as any event. The current definition
of tweak is:
- if Left/Middle/Rightmouse pressed
if event wasn't handled by window queue (modal handlers)
start checking mousepositions
- while mousepositions are checked
- escape on any event other than mouse
- on mouse events:
- add tweak event if mousemove > 10 pixels
- stop checking for tweak if mousebutton released
- Tweak events have a define indicating mousebutton used
EVT_TWEAK_L, EVT_TWEAK_M, EVT_TWEAK_R
- In keymap definitions you can use _S or _A to map to
action or select mouse userdef.
- Event value in keymap should be KM_ANY for all tweaks,
or use one of the eight directions:
EVT_GESTURE_E, _SE, _S, _SW, _W, _NW, _N, _NE
- And of course you can add modifier checks in keymaps for it.
- Because tweaks are a result of mouse events, the handlers get
both to evaluate. That means that RMB-select + tweak will work
correctly.
In case you don't want both to be handled, for example the
CTRL+LMB 'extrude' and CTRL+LMB-tweak 'lasso select', you will
need to set the first acting on a EVT_RELEASE, this event only
gets passed on when tweak fails.
The current system allows all options, configurable, we had in 2.48,
and many more! A diagram of what's possible is on the todo. :)
Also in this commit: lasso select editmesh failed with 'zbuffer
occluded select'. Also circle-select failed.
Hrmf, I try to make a local operator-only commit possible, but I
keep finding other small todos :)
- added two more standard poll callbacks for pose and armature
- fixed operator naming in editmesh_mods.c
Paint mode (VPaint WPaint) was too easy to enter, I made the
operators having a more designated poll() to check stuff.
Now CTRL+TAB hotkeys will work in editmode for select type,
and outside editmode for wpaint or posemode.
Also fixed select type operator to so it works for facemode.
- Renamed MESH_OT_mesh_selection_mode_menu to MESH_OT_mesh_selection_type since the operator doesnt have to be accessed from a menu.
Shaul, you might want to look over this, using enums means WM_menu_invoke can be used instead of writing an invoke function for each operator.
Added error messages to WM_menu_invoke if no enum "type" property is found.
Big commit, but mainly adminstration.
- Enabled ot->flag OPTYPE_UNDO to work.
- Removed all redundant ED_undo_pushes, but I'd
recommend everyone to check it while testing. :)
- Added view manipulations as OPTYPE_REGISTER,
although this will flood the redo stack a bit...
Nevertheless; for a "redo last action" panel we
can simply check if both flags are set for redo.
- Bugfix in editmode undo: selectmode was cleared,
so you couldn't select after undo
- Bugfix in mixing tweaks and keymaps... solution
works but is weak, need to think over a while.
Edit Mesh
Added the two other 'select similar' ops, for edge and face.
For testing fun I've put these ones as first keys using the
modifier order feature. So it's now:
SHIFT+G : similar vertex
CTRL+SHIFT+G: similar edge
SHIFT+CTRL+G: similar face
Not very useful here; but I think this can work well to map
a double amount of options under mouseclicks. Power user
config stuff!
Edit Mesh
- "Select Similar" for vertices back.
(Put under Jkey for now)
- renamed operator righthand_faces to consistant_normals
gave it boolean property for 'inside'.
Edit Mesh:
- Added back "Edge Shortest Path select"
It now also does regular selection, more fun!
It's mapped to CTRL+click now, and makes or clears selections
between current and previously activated edge.
Seam/Sharp/etc marking is a toolsetting mode still. These
options cannot become properties easily, because the tool
uses the properties of selected edge to clear...
- Removed a whole bunch of G.f flags, related to mesh drawing.
It's all now local in me->drawflags. Here's the list of
removed old globals:
G_DRAWEDGES
G_DRAWFACES
G_DRAWNORMALS
G_DRAW_VNORMALS
G_ALLEDGES
G_HIDDENEDGES
G_DRAWCREASES
G_DRAWSEAMS
G_DRAWSHARP
G_DRAWBWEIGHTS
G_DRAW_EDGELEN
G_DRAW_FACEAREA
G_DRAW_EDGEANG
Edit mesh:
- fixed compile, shul only committed the function declaration, not
the code for 'make fgon'.
- Put the Fgon option under:
ALT+F: make fgon
SHIFT+ALT+F: clear fgon
(note, SHIFT+F = fill :)
- Fixed loop select to use two booleans, as Martin pointed me
correctly at! Using 1 variable was lazy coding.
- Made WM_cursor_wait() work without context or pointers,
like old waitcursor(). Only use when operations entirely
block UI. It will set waitcursor for all open windows.
- Cleanup in mesh tools, removing old cruft, and prepare
for more goodies for shul to work on!
View3D has been split now in a local part (RegionView3D) and a
per-area part (old View3D). Currently local is:
- view transform
- camera zoom/offset
- gpencil (todo)
- custom clipping planes
Rest is in Area still, like active camera, draw type, layers,
localview, custom centers, around-settings, transform widget,
gridlines, and so on (mostly stuff as available in header).
To see it work; also added new feature for region split,
press SHIFT+ALT+CTRL+S for four-split.
The idea is to make a preset 4-split, configured to stick
to top/right/front views for three views.
Another cool idea to explore is to then box-clip all drawing
based on these 3 views.
Note about the code:
- currently view3d still stores some depricated settings, to
convert from older files. Not all settings are copied over
though, like custom clip planes or the 'lock view to object'.
- since some view3d ops are now on area level, the operators
for it should keep track of that.
Bugfix in transform: quat initialize in operator-invoke missed
one zero.
Als brought back GE to compile for missing Ipos and channels.
* Added more compact property definitions, with a single function.
Only used by operators at the moment, would need to tweak regular
expressions a bit more to use it also for other RNA definitions.
* The operator properties defined now were completed a bit more but
still have many issues that need to be adressed, specifically;
* Some properties that should be booleans or enums are defined as
ints, note that ints are only for numeric values, not bitflags
or multiple choice.
* Soft/hard limits and default values of many properties are not
well defined still,
* Inconsistent naming, especially for example mouse locations or
bounds are named differently in different places. Also mouse
locations and other vector like properties should become a single
vector property instead of multiple X/Y properties.
* Almost no properties have descriptions, these would be good to
have for docs and tooltips.
So, please verify that the properties of the operators you wrote are
well defined.
- Depricated another bunch of globals; all the totobj,
totmesh, totvert, and so on.
- All code that needs such totals now count it themselves,
these stats were not supposed to be reliable
- Editmesh now stores and manages own totals.
- Todo: make a scene->stats that tracks notifiers.
Bugfix: selecting failed in editmesh, backbuffer stuff was
too late, already using index ranges before it was set.
soc-2008-nicholasbishop branch.
Note: any old code with multires_test() or multires_level1_test() can
just be deleted, not needed by the multires modifier.
Think global, act local!
The old favorite G.scene gone! Man... that took almost 2 days.
Also removed G.curscreen and G.edbo.
Not everything could get solved; here's some notes.
- modifiers now store current scene in ModifierData. This is not
meant for permanent, but it can probably stick there until we
cleaned the anim system and depsgraph to cope better with
timing issues.
- Game engine G.scene should become an argument for staring it.
Didn't solve this yet.
- Texture nodes should get scene cfra, but the current implementation
is too tightly wrapped to do it easily.
From the anti-globalization department:
G.obedit terminated!
Wherever possible, use CTX_data_edit_object(C) to get this
now. It's stored in scene now, and the screen context has
it defined.
- View3D backbuffer select is back ("occlusion select").
It doesn't use the old 'afterqueue' yet, which ensured backbuffers
to draw immediate after swapbuffers. Will with that.
- Edit mode Mesh undo/redo back
(undo for editmodes needed recode, todo for curve/lattice/etc)
- Added border select for edit mesh
- Added Akey (de)select all for edit mesh
- Added notifiers for mode changes.
This is also the first trial to dynamically add/remove
keymap handlers, based on modes. For that reason the Object
keymap was split in 2, modal and non-modal. On TABkey, the
view3d listener removes and adds maps.
The view3d keymap still handles generic mouse/border selection.
Internally it will verify modes.
The modes are not re-implemented still... have to move this
to scene context.
Added extend-select for edit mesh.
Note for operator design; you cannot give operators hardcoded
properties like "SHIFT" or "ALT", that conflicts with the idea
of keymaps. Instead the properties have to be functional, like
setting 'extend' on or off.
I also think mouse select could get these operators:
- activate/select, option 'extend'
- activate/select on object center, option 'extend'
- activate/select, with menu, option 'extend'
and of course loop-select, group-select, and so on.
BTW: border-select could also get 'extend' option :)
So, editmode mesh is back! :)
At the moment only TABkey works and mouse select, 1 vertex at a
time. More will follow of course.
Note for the devs:
- G.editMesh has been removed, be careful with old code.
- EditMesh now is property of Mesh itself
Although it means unlimited editmodes, for migration purposes we
better stick to 1 "obedit" per scene, which is in Context too
- G.obedit will get removed soon, so use CTX_data_edit_object(C)
Or if you can't, just scene->obedit for now
- Also removed the CTX_data_edit_mesh(), this has no meaning
anymore. EditMesh is not context senstitive anymore, only the
edit-object for time being is.
- Martin: I've already tucked some EditMesh pointer in T and
removed all G.editMesh there.
EditMesh: further cleanup, made derivedmesh itterator functions
work by gathering all related data in local ViewContext struct.
(scene, editmesh, region, view3d, obedit).
Also removed bad inclusion of view3d_intern.h in mesh module.
Editmesh code cleaned and compiling/linking. A whopping
20k lines back! :)
Not that it does stuff... editmode in/out has to be done,
and loads of operators. Also linking/exporting editmesh
calls has to be reviewed.
Also: added a blender_test_break() mechanism in BKE.