Commit Graph

212 Commits

Author SHA1 Message Date
bd6ce45ef4 Fix [#20129] emulate numpad
Converted Command+LMB to send a RMB click event on Mac OS X, if Emulate 3 Button Mouse is switched on.


Also fixes for previous commit, didn't all go through.
2010-01-15 06:17:28 +00:00
87c5ed37a5 Tweaked/added poll functions to prevent operators that require
a 3D View from being used outside the 3D View (i.e. the info header 
search button)
2010-01-15 06:10:05 +00:00
b0f87935a8 spelling errors, no real changes to code. 2010-01-14 10:59:42 +00:00
dbf295b904 Added location and rotation operator properties for adding objects. The Align to View boolean
is now just used to set the rotation property value during invoke.

This removes some reliance on 3d view info for non-interactive use, and also lets you specify
new object's locations/rotations explicitly when calling from Python.
2009-12-28 04:09:46 +00:00
a9b9993414 rna function
editbone.align(vector), to align the bones z axis to a localspace direction.

finished leg rig pose mode data
2009-12-04 02:32:34 +00:00
caa11aae04 Assorted tweaks for subdivide operator ranges - soft/hard ranges were swapped. 2009-11-30 02:42:10 +00:00
cd154da973 1. Extend option for 3d view border select now does something (default True to keep same behavior)
2. Add action parameter to Select_All_Toggle operators, rename to Select_All.
Options are Toggle (default), Select, Deselect, Invert (same as select swap). This makes it possible to map separate hotkeys for select all and deselect all.

NOTE for Aligorith: I didn't change animation operators for select_all which already had an Invert operator. These should be fixed eventually.
2009-11-29 22:16:29 +00:00
7c21fa3b72 Armature Bugfixes:
* Bugfix #20136: unclear tool tip for inherit rotation toggle
* Bugfix for Apply Pose as Restpose (Ctrl A in Pose Mode): missing call to free edit-data was causing drawing code to only draw editbones until editmode was entered + toggled
* Added missing notifier for deleting F-Modifiers, so deleting F-Modifiers now updates the view correctly afterwards
2009-11-29 05:56:39 +00:00
5457ab4fc3 fixed a crash when duplicating bones with ID-Props
remove duplicate code from armature_duplicate_selected_exec
2009-11-26 19:08:56 +00:00
553374bd4c selected_pchans --> selected_pose_bones, same for visible_pchans
added use_ prefix to bools offset --> use_offset, tail --> use_tail for eg.
2009-11-25 15:00:29 +00:00
4c5b430520 ED_armature_edit_bone_remove wasnt clearing references from other bones, only affects rna api access 2009-11-25 11:47:53 +00:00
b40307df16 add access to bone add/remove from rna. eg.
bone = arm.edit_bones.new("SomeBone")
 arm.edit_bones.remove(bone)

regify (WIP)
2009-11-25 11:05:11 +00:00
dcd1642121 RNA api
- EditBone was missing 'selected'
- renamed 'selectable' to --> 'restrict_select', matching object mode.
- renamed 'active_pchan' --> 'active_pose_bone'
2009-11-24 17:12:32 +00:00
4dd78dcbdf Made select operator return FINISHED only when it did something (only PASSTHROUGH otherwise) 2009-11-24 04:59:52 +00:00
b7d717cead added a function to duplicate bPoseChannel's internal data - constraints, id-props etc.
duplicate_pose_channel_data(), the code to do this was inline in editarmature.c

duplicating editbones now duplicates posebone id-props

also removed an if test for &channew->constraints since it will always be true.
2009-11-23 23:03:04 +00:00
78b76cc39f Auto-Keyframing and Clear Transform Operators:
Clear Location/Rotation/Scale (Alt-G/R/S) now insert keyframes when Auto-Keyframing is enabled.
2009-11-23 11:58:30 +00:00
684405e0fb id properties for editbones and pose channels were not being freed in a number of cases,
added free_pose_channel(pchan) and use this in all places that free pose bones
2009-11-21 11:26:09 +00:00
67c295da9c rename pose_channels to bones
was: object.pose.pose_channels["Bone"]
now: object.pose.bones["Bone"]
2009-11-18 11:40:55 +00:00
6062e434d3 Deselect all for bones works again
It's still very irritating that the active bone pointer doesn't get cleared when this happens, but at least it's more consistent with how Objects work...
2009-11-12 23:12:34 +00:00
37e4a311b0 Math Lib
* Convert all code to use new functions.
* Branch maintainers may want to skip this commit, and run this
  conversion script instead, if they use a lot of math functions
  in new code:
  http://www.pasteall.org/9052/python
2009-11-10 20:43:45 +00:00
5935ef0049 use armature active bone as a pointer rather then a flag for each bone that needs looking up.
- rna vars arm.bones.active & rna.edit_bones.active
- needed special undo support.
- readfile.c loads.
- duplicate and copy_armature support.
- keep the draw flag, renamed to BONE_DRAW_ACTIVE, only use for openGL drawing.

Note: it may be better to allow active/unselected as with objects.
2009-11-09 21:03:54 +00:00
98527a7106 various small fixes
- undo stops all running jobs (operator redo was crashing with threaded render)
- adding new armatures was crashing if there was no valid view3d
- transform with an active hidden object would crash
2009-10-29 18:49:36 +00:00
d6cde96286 Added support for custom RNA properties on Bones, only worked for
PoseChannel previously.
2009-10-28 15:33:45 +00:00
90957ed0dd A bunch of fixes for macro-type operators - Armatures + Objects
* Extrude and Duplicate for Armatures now use proper macros instead of manually calling transform themselves. This means that repeating these operators now works properly.
** NOTE: there's a bug with macros now which prevents the 'forked' extrude operator working correctly. Bug report filed for this.

* Included the proper operators for extrude and duplicate in the toolbar + menus. The operators used there did not activate transform, which meant that users often could not tell that the operation had occurred at all.
2009-10-27 11:10:30 +00:00
00f3d83b6a Graph Editor: Added 2D Cursor
I've finally given in, and implemented a '2d-cursor' for the Graph Editor. This is simply represented as an additional horizontal line that meets with the current frame indicator, forming a cross-hair. It can be disabled from the View menu.

Currently, the only tool which takes this into account is the Snapping tools (Shift-S), where I've hooked up a tool I added some time ago. 

TODO:
- expose this cursor to the transform tools for scaling/rotation options...
2009-10-20 12:04:56 +00:00
8bc1087e2e Fixes for Path-Renaming Fix:
* Now the old/new names get tagged with [" "] before the search and replace operation, which should alleviate problems with searching for 'bone' and ending up with all instances of 'boney' 'boney.r' etc. also getting renamed.

* Cleaned up some compiler warnings, and removed an unused function from an earlier attempt at this work.
2009-10-20 04:07:57 +00:00
7f133f65b2 Bugfix #19663: Renaming named data doesn't fix F-Curves
RNA Paths used in F-Curve, Drivers, etc. now get renamed when some data that they use gets renamed. This only works when things like Bones, Constraints, Shape Keys, and Modifiers get renamed, but other cases can get added easily. 

The code here only performs simple string replacements, so there is the potential for problems when several sets of data with the same names are present. For example, if there are multiple armatures with bones that have the same names, renaming a bone on one armature (with a bone on another armature having the same name) will break all the drivers on the other one, even though they aren't really connected. However, I don't expect the aforementioned scenario to really be a problem in most production scenarios.
2009-10-20 03:44:35 +00:00
475ab5ceb4 Rotation Modes Bugfix:
Animating rotations using different rotation modes should now work more often than before. 

Previously, quaternion and axis-angle values were stored in the same variable in DNA, but that was causing problems with other animation curves overwriting the values and causing the rotations to not work as expected. 

There are still some issues, but I'll track those down later tonight
2009-10-08 00:57:00 +00:00
22605ec759 Bone Selections: Ability to set bones as unselectable
In the Outliner, it is now possible to toggle per bone the selectability of the bone in the viewport, as for Objects using the restriction columns. This can also be set using the RNA-api.

I've tested all commonly used tools IMO, but there may still be a few which I've missed. Please report those cases.

PS. For some reason, the define was already there, but not connected up to anything. Can't remember why anymore, but here it is...
2009-10-06 11:33:58 +00:00
7d2fd5449e Durian Feature Request: Rotation Modes for Objects
This (biggish) commit generalises the rotation modes functionality added for Bones, allowing Objects to use the various Euler Rotation orders, Axis-Angle, and Quaternion rotation representations.

I've also cleaned up the nomenclature of the rotation-related settings so that the naming styles are more consistent with each other. Unfortunately, this will break all files involving object or bone rotation animation made in 2.5 versions (2.4x will still get correctly converted).

General Notes:
* By default, Objects still default to using Eulers, while Bones will use Quaternions by default still.
* I've fixed all areas that I'm currently aware of to work with these changes. However, there are probably a few places where I've missed a few changes (i.e. auto-keyframing will need attention later).
* Removed the old "IPO-Keys" stuff from Transform code. I'm unlikely to restore this in the near future, and trying to fix that to include support for this commit would have been too much work.
2009-09-28 10:19:20 +00:00
fbfa8d2f81 2.5 - Assorted Animation UI/Editing Tweaks
Main Feature:
* It is now possible to choose which AnimData block is the 'active' one for editing, and/or select them too. AnimData blocks are generally the dark blue and lighter-blue expanders (i.e. Scene, Object, Camera, Lamp, Curve, Armature, etc.)

* Objects are no longer selected/deselected when AKEY is used to toggle selection of channels. This was getting a bit annoying. 

* Following on from selection of AnimData blocks, it is now possible to select/make active an AnimData block in the animation editors, and change the active action for that block via the 'Animation Data' panel in NLA Editor's properties region.
--> Be aware that user-counts are not totally handled correctly there yet, so some funky behaviour might be seen...
--> It is possible to assign a new action, or to assign an existing one, allowing to switch between actions as in the past with Actions/IPO Editors...

Other tweaks:
* Some code tweaks towards making the 'Euler Filter' feature for Graph Editor working sometime soon
* Added some backend code for snapping the values of keyframes to a single value. Still need to work out some UI for it though.
* Shuffled the code for ACT_OT_new() around, and removed the poll() callback so that it worked in NLA too.
* Fixed some more notifier bugs with deleting bones and a few other editmode operations for Armatures.
2009-09-27 04:22:04 +00:00
558626714e Bugfixes:
* #19459: Shape Keys not Animateable
Shape Keys were missing the appropriate 'path' callbacks.

* #19458: 3D Viewport doesn't refresh when adding new bone in editmode (using Shift-A)
The 'wrong' notifier was being sent. Currently, Armature EditMode only responds to NC_OBJECT|ND_TRANSFORM, which isn't strictly that correct for all cases.

* Alignment code for constraints headers (i.e. enable/disable lumped with the delete constraint button) was causing the delete button to not work anymore. Removed the offending code (it shouldn't have been there to start off with). 

* When object's don't have their own AnimData (i.e. if you only animate the values of some shapekeys), a space is no longer left beside the object's name for a visibility toggle in the Graph Editor.
2009-09-25 01:30:32 +00:00
1483fafd13 Merge of itasc branch. Project files, scons and cmake should be working. Makefile updated but not tested. Comes with Eigen2 2.0.6 C++ matrix library. 2009-09-24 21:22:24 +00:00
fcbfd29796 Fix combined pose + weight paint mode, was using wrong object
in a few places, missing some checks.
2009-09-19 15:48:47 +00:00
9710673192 2.5 - Animation Bugfixes:
* Breakdown tool for Poses (Shift-E in PoseMode) now works. Now this works as a modal operator when invoked, with the horizontal movement of the mouse (left to right) corresponding the placement of the breakdown relative to the endpoint keyframes.

* Moving bones between armature layers in Edit Mode didn't work (wrong variable name used)
* Fixed several notifier-related bugs regarding editing armature settings and the 3d-view not refreshing
* Duplicating bones preserves the rotation mode

* Animation Data for Nodes is now show in Datablocks viewer (i.e. AnimData for NodeTrees has now been wrapped)
2009-09-19 11:59:23 +00:00
ad43aaf881 2.5 - Rotation Locking for Bones
* Added Transform Locks panel. The layout for rotation I'm not satisfied with yet, though it is the best alternative so far.

* Rotations can now be locked per-component for quats/axis-angle instead of going through eulers. This is currently enabled by the checkbox for the 'label' of the Lock Rotation column. 
- The naming of the property in RNA + the way this is presented in the UI can get some work done.
- The setting for the 'w' component for quats/axis-angle is currently a separate flag in RNA, since I can't figure out how to lump this in under the 'lock_rotation' property instead (i.e. getting that to be either 3 or 4 components, depending on whether per-component locking is enabled).
- Editing values directly should not be possible when these locks are set...

* Fixed some tools which made use of this
2009-09-12 12:30:23 +00:00
83074d0b37 2.5 - More work on Axis-Angle Rotations
* Added a few new methods for axis-angle conversions, and used these instead of manually performing those steps elsewhere
* Axis-angles to other representations now get their axes normalised to make sure that odd scaling doesn't occur.
* Made a few more tools work with axis-angles properly
2009-09-12 05:06:28 +00:00
baf12d3d17 2.5 - Rotation work (axis angle bugfixes + cleanups)
* Made transform work better with axis-angle
* Corrected the rotation-type handling code in a few places
2009-09-11 12:44:09 +00:00
3daa283604 2.5: Object module
* Split object_edit.c into multiple files:
  object_add.c, object_edit.c, object_hook.c, object_relations.c,
  object_select.c, object_transform.c.
* Rename files to have consistent object_ and mball_ prefix:
  object_shapekey.c, object_lattice.c, object_vgroup.c, mball_edit.c.
* Added operators:
  * vertex group menu and set active
  * apply location, rotation, scale, visual transform (location is new)
  * make local
  * make vertex parent
  * move to layer
  * convert to curve/mesh (not finished yet)
* Many small fixes for marked issues, but still much code to be cleaned
  up here...
2009-09-09 11:52:56 +00:00
7df35db1b1 2.5
Notifiers
---------

Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:

* Geometry changes are now done with NC_GEOM, rather than
  NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
  notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
  should only be used for notifying about changes in space data,
  we don't want to go back to allqueue(REDRAW..).

Depsgraph
---------

The dependency graph now has a different flush call:

DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)

It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.

Docs
----

I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:

http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
92395bb93c 2.5 - A few bugfixes...
* Autoside renaming tools in EditMode for armatures now works again. (Wrong property name)
* Action used by NLA Strips can now be chosen/changed to another action
2009-09-03 12:20:59 +00:00
177956a3a7 2.5/Posemode:
* Pose mode was already object-localized, but moved the flag from object->flag to object->mode, with all the other modes.
* Updated object mode RNA
* Commented out some dubious use of base->flag with the posemode flag. So far as I could see the value was only being set, not read, so a hopefully safe change.
2009-08-16 03:24:23 +00:00
b8aff06466 2.5/Paint:
* Weightpaint is now object-local like sculpt and vertexpaint.
* Fixed a bug spotted by DingTo, going from editmode to sculptmode didn't fully leave editmode
2009-08-15 21:46:25 +00:00
2a727083c9 fix for warnings and implicit declarations
also fixed smoke comparing a float's mem-location rather then its value.
2009-07-31 01:40:15 +00:00
74e4ad20c9 2.5: code cleanup, added CTX_wm_space_* for each space type,
instead of casting everywhere.
2009-07-28 16:33:02 +00:00
812530aca8 2.5 - More armature/bone operator tweaks
* Restored quick operators for moving bones between layers and switching visible armature layers. The popup used here (based on the layers template) is not optimal yet - you can click on multiple layer buttons to enable/disable them, but you need to move your mouse outside the area for it to confirm. 

* Separate armatures works again. I've tweaked the arguments to ED_object_duplicate() to make this work (besides, the other users of this wouldn't have been affected).

* Added some missing special (transform) operators to the menus + keymaps
2009-07-26 11:01:56 +00:00
f4d70c9812 2.5 - Restoring 'set bone setting' operators for Armatures/PoseMode
In the future, it might be a good idea to look for more efficient alternatives...
2009-07-26 03:22:24 +00:00
dcfc0333d1 2.5
Outliner: brought back to near full functioning:

- proper operators, like for open/close items, exec operations
  (note: select is still same operator as activate, should
   become modal ops later)
- rename works again (ctrl+click)
- proper notifiers for redraws
- select / extend select works again
- editmode in/out works again
- enter key opens/closes again
- right mouse operations work again

Didn't do:
- options for Sequence strips
- signals to change button views on clicks
- error/warning messages

UI: 

- added new uiButSetRenameFunc(), which passes on the old name
- added uiButActiveOnly(), which ensures a button gets created in
  active state, and gets removed when used. Needed for editing
  names in outliner.
  
  Andrea: check outliner.c for uiButActiveOnly(), very easy to use!

Also:

- Added posemode operator, CTRL+TAB tied to it.
2009-07-25 13:40:59 +00:00
020a34b9de 2.5 - Restored most of the remaining Armature/Pose Operators
* Armature:
- added: fill, merge, separate
- renamed: duplicate, align

* Pose:
- added: apply pose

* Armature Edit menu has been converted to use operators/layout now
2009-07-25 05:11:28 +00:00
f24bcac43e 2.5: Various Fixes
* Fix crash loading particle AnimData. This crashed many BBB
  files. If you have a .blend file that crashes when loading
  it in 2.5, please mail me, I'd like to know.

* Image window zoom ratio did not work correct with py 2.x.
* Other minor fixes for image window RNA.

* Buttons window now remembers the tab that was last clicked
  by the user, even if that tab is no longer available due
  to context, and then enable the tab again if the context
  for it is back.
* Cleaned up buttons space DNA a bit, removing unused vars.

* Armature bone rename outside edit mode did not call right
  function yet.
* Armature layers are now editable even if lib linked. This
  is useful for proxies. For this purpose a PROP_LIB_EXCEPTION
  flag was added. Need to think over proxy / RNA a bit though,
  not sure what the requirements are yet.
* Parent to Armature Deform now has options to create vertex
  groups, instead of always creating them.
2009-07-24 16:41:12 +00:00