edges/faces,extrudeflag_edgess, not the entire extrude system) with
a bmesh version. This stress-tested the operator api, and I had to
code some new stuff,including:
* An api to iterate over Mapping slots and array slots. It's modeled
after the normal iterator api.
* The ability to copy mapping slots.
* More mapping functions.
* In addition to being able to flag elements in a buffer,
you can now unflag them (much clearer then passing in ~flag
I think).
The extrude edge/faces code has multiple layers. At the top
level is a funtion in editmesh_lib.c, which takes care of selection,
handles mirror modifiers, etc. It calls the extrude operator, which
in turns calls split, which calls dupe/del. Note that split needed
a slot to exclude things from being deleting (e.g. when extruding
a single isolated face).
The basic idea (reflected in original design of split/dupe/del by Briggs)
is to use the split function to do the heavy work of extrude. split spits
out new geometry and mappings from boundary edges, for extrude (it should
also spit out other mappings, but that's for later).
Briggs: you may want to look over this, hopefully I didn't do anything
too evil.
I probably should spend some time going over the 2.5 mesh operators and
cleaning them up, splitting ones that need splitting, etc, and in general
getting them to work properly.
* Added comment for what needs to be done to get KeyingSets fully functional
* In previous commit, also made group-locking be taken into account when drawing curves as locked
To use KeyingSets, simply Outliner-select items in the Datablocks view and press K to add to the active KeyingSet. Then keyframes can be inserted by choosing the 'Active Keying Set' option when inserting keyframes.
Important notes on the current implementation:
* Only properties directly inside some ID-block that is close to the root (i.e. main -> objects -> "someobj" -> location, or main -> materials -> "somemat" -> colour) can be accessed for now, as I haven't got the code for building the inner-parts of the paths working yet. Help on getting this working is welcome (hint to Brecht).
* Properties that can be safely included include simple properties "object -> Dupli Verts", entire arrays "object -> Location" or individual array elements "object -> Location -> y"
---
Also added typo fix for KeyingSet freeing. It was freeing the KeyingSet instead of it's paths.
* User interface uses this as a tooltip when NULL or "" is given.
* Python doc generation includes this description
* Python defined ops take the description as an argument.
* NULL check to image_ops.c, was crashing on exit when there was an image open.
* Uneditable F-Curves are drawn with dotted lines (and no handles)
* Muted F-Curves are drawn with a greyish colour. I'm not sure how visible this will be under some other colour schemes. Perhaps this needs as separate theme colour?
* Added notifier for edited images.
* Fix main region emboss drawing when showing render.
* Don't go fullscreen with fileselect for now to work
around context getting lost, so open/replace works.
* Save operators are more complete now, but still lack
confirmation and choosing image type.
* Pack operators work correctly now (but not unpack).
* Setting white/black point for curves.
* Time cursor for record composite.
Smaller jobs, all in one commit!
- Moved object_do_update out of view3d drawing, into
the event system (currently after notifiers).
Depsgraph calls for setting update flags will have to
keep track of each Screen's needs, so a UI showing only
a Sequencer doesn't do objects.
- Added button in "Properties region" in 3D window to set
or disable 4-split, including the 3 options it has.
(lock, box, clip)
- Restored legacy code for UI, to make things work like
bone rename, autocomplete.
- Node editor now shows Curves widgets again
- Bugfix: composite job increased Viewer user id count
- Bugfix: Node editor, not "Enable nodes" still called
a Job, which didn't do anything
- Various code cleaning, unused vars and prototypes.
When fully implemented, these will be the clearest demonstration of 'Everything is Animateable', as they will allow users to define an arbitary group of settings through selecting items in the Datablocks (RNA-Viewer) View of the Outliner to define custom 'sets'. Such Keying Sets are known as the 'absolute' ones, which are created for a custom purpose.
Of course, 'builtin' Keying Sets will still be provided. Such built-in ones will not work on any particular paths, but will use context info to maintain the legacy method of inserting keyframes (via IKEY menu).
Currently, KeyingSets cannot be created/edited through the UI, though the backend code is in place to do this.
missing parts and are work in progress.
Set 3D Cursor
Set Tile
Sample Color
New
Open
Replace
Reload
Save (As)
Save Sequence
Pack
Unpack
Record Composite
The file select operators have context issues still. They need
to get the image space in the context on exec() but it's not
there currently, not sure how to solve that yet.
Also added name parameter to uiMenuItemEnumO, and fixed "mute"
argument in ED_update_for_newframe calls in fluidsim bake.
Fourth trial to get the invisible character gone!
(I have to add/remove enters to get it committed even)
Thanks to Thomas for retyping the faulty line entirely :)
*** Proof of concept! ****
3D window Panels back, in own designated region for now.
Activate or hide it with Nkey.
Note that Background Image doesn't work yet, Transform
Orientations probably need tests by Martin, Sculpt options
have to be recoded there by Nicholas.
The UI design sessions will of course review all of this!
We'll have to solve a lot of related topics;
- navigation (where) and context (what)
- non-overlapping layouts vs floating panels/bars
- properties vs tools (toolbars)
- drop panels and make nice (semi-automated) list views?
I've also done experiments with making the main 3d view
stay 'behind' the buttons region. That makes popping buttons
in and out less distracting, but also makes it obscuring
the view... it's not in this commit, it didn't work proper :)
To get that work it has to be handled by the internal
compositor, then it even can have fancy transparency in back.
Anyhoo, time enough to play with this a while. Especially for
Image window (paint) it can work well too.
F-Curves can now be hidden/shown in the Graph Editor in one of 3 ways:
* Specialised VKEY toggle hotkey, which alters the visibility of all selected F-Curves
* The setting toggle operators (Shift-W, Alt-W, Ctrl-Shift-W)
* Checkmark (*1) boxes in front of names of F-Curves
This allows irrelevant curves to be hidden from the keyframes area only if you want them hidden. By default, all curves are visible. Also note that a separate hotkey is used now for toggling visibility (VKEY) instead of lumping it under select-all (AKEY) as in the past, which was a major cause of confusion.
Notes:
1) I've used the ICON_BLANK011 and ICON_BLANK012 icons, which in the current icon set are two states for a checkbox type thing. These defines should probably get renamed sometime, but I'll leave that up to Matt.
*******
- ported make/clear parent for editbones (paent_set, parent_clear to align with naming conventions)
Aligorith and Kaito please look over this and make sure everything is right
Adjusted ranges for subdivide operators (Mesh + Armature).
* The Mesh one was causing lockups as its range started from 0. Now it starts from 1.
* Tweaked the soft-limits for subdivide operators to be easier to use (1-10 instead of 0-100)