This commit adds a few open/closed 'eye' icons to the NLA editor to toggle IPO-block muting on Object (IPO) channels, and Action Strip muting on Action Strips, like in the Action Editor.
It is now possible to temporarily 'mute' and IPO-block or IPO-curve. This functionality has been requested by the Plumiferos team, and is based off Patch #6866 by Juho Vepsäläinen (bebraw).
Usage:
* In the IPO Editor header, there is a toggle button (open/closed eye used for Outliner Visibility restriction) beside the IPO-blocktype menu, when there is an active IPO-block in the IPO Editor.
* In the Action Editor, beside the 'lock' icon for channel protection on Action/Constraint channels, there is the open/closed 'eye' that can be toggled to set the mute status of said channel's IPO-block.
* Also in the Action Editor, you can mute individual IPO-curve channels in a similar manner.
Now when editing the curve that a Bone with a Clamp To Constraint uses as its target, the Bones's position will be updated in realtime to match to changes in the curve.
This should also work for the FollowPath constraint now too.
Now when editing the curve that an Object with a Clamp To Constraint uses as its target, the Object's position will be updated in realtime to match to changes in the curve.
I was going to have this working for bones too, but I haven't got that quite working yet.
* Error print for getSettings was lacking a newline
* When adding a PyConstraint using Ctrl-Alt-C, the script is now queried to find out whether it uses a target.
Simplified the code in two functions where checking for targets/subtargets could really have been done using Constraint API methods (constraint_has_target, get_constraint_target).
Copying Displace modifiers by themselves did not work correctly. The code was incorrectly just copying memory for source modifier to the new copy, causing problems due to the ModifierData struct at the start of the DisplaceModifierData struct (linked list pointers still referring to old stack).
image->save as, default to the scene image type settings (just like
with F3: save rendered image).
Multilayer is still available in the list but most of the time,
it's not what you want by default. Too many times I've saved out a
render and frustratingly ended up with a huge 'filename.png.exr'.
Deleting a marker using DELKEY or XKEY requires undoing action twice. Changed order of deleting markers and deleting keys/strips to be in line with Action Editor.
I've recoded the way long keyframes work a bit, so that more cases are handled accurately. Now, it takes into account the number of IPO-curves that have keyframes in them on the start/end frame of the long-keyframe, instead of just taking the total number of IPO-curves present for the channel being drawn.
The BPy Access to PyConstraints. I have not implemented the setter for the PyC-ID-Properties access as I'm not too sure how this should be done.
Also fixed a few typos in the py-docs for the Limit Scale constraint.
At last! The ability to code constraints in Python. This opens up many interesting rigging possibilities, as well as making prototyping constraints easier.
* A PyConstraint script must begin with the line
#BPYCONSTRAINT
* It must also define a doConstraint function, which performs the core actions of the constraint.
* PyConstraints use IDProperties to store custom properties for each PyConstraint instance. The scripter can choose which of these ID-Properties to expose to a user to control the behaviour of the constraint. This must be done using the Draw.PupBlock method.
Credits to Joe Eager (joeedh) for coding the original patch on which this is based. I've made heavy revisions to large parts of the patch.
For more detailed information, and some demo scripts, see the following page:
http://aligorith.googlepages.com/pyconstraints2
This commit refactors curve selection system to use certain curve selections
functions that encapsulate setting of selection flags. New function to select
adjacent control points was introduced too. Refactoring made it possible to
simplify certain existing selection functions quite a bit.
New functionality was delivered as well. Select more/less works now with NURBS
as expected. Also two new curve selection functions were added: Select Every Nth
and Select Random.
See http://wiki.blender.org/index.php/BlenderDev/Curve_Selection_Tools for
further information.
Duplicating bones now also duplicates the Transform Locks, and IK DOF settings, along with constraints.
I have noticed a few random crashes while editing armatures recently, that seem to occur after duplicating a chain of bones. I've yet to find the cause though.
* In add_levels, moved the call to update_levels to the beginning rather than the end. This is slightly faster, as there's one less level to update. Also fixes a bug (introduced in rev. 10836?) that made multires's add_level differ slightly from the subdivide modifier.
* Removed two unused structs from multires
* Replaced one-line get_float function with a macro
* During add_level, move the freeing of temp data to after the update_level, so that this data isn't calculated twice
* Small optimization to multires based on profiling data; calculation of edge boudndaries is now cached along with multires mapping data to improve the performance of the catmull-clark code.
* Removed an unneeded call to create the temporary data when loading files.
Modified the vert_edge_map and vert_face_map arrays in MultiresLevel so that the data is stored only for as long as it is needed -- for adding levels and updating levels. Once the modifications are
complete, the mapping data is deleted, which provides a large reduction in memory usage for a minor increase in processing time for updating levels.
removed loop and unused var, since this is a sensitive (and not my) area - I did some mesh comparisons and ran a comparison with the old function passing random values, so this should be ok.
Yet another commit to fix Shift-S snapping for keyframes. The code to snap an Object's IPO block's keyframes to the current frame should be evaluated before the expanded/collapsed status of said object is evaluated.
*if a vertex group was renamed in the outliner, the name was not updated
correctly in visible buttons window
*certain buttons in Render panel didn't update other buttons windows in
case their value was changed
*same goes for Logic context of the Buttons Window
*also cleaned up unnecessary code from Logic context and made Timer
field to work correctly when pressed with left mouse button
* Snap and Mirror tools for the Action Editor, now respect NLA scaling again. I accidentally omitted the relevant code when recoding.
* Snap tool in the NLA Editor, now works for the keyframes displayed for each object too. There's one case I've to check up on later, as there might be interesting conflicts.