Put back Armature/Pose code, including 'heat weight'.
I've added reeb.h to get things compile, but Martin will
cleanup files and put back?
Now where to put all vertexgroup code.... I guess mesh?
Note for msvc: yep, another new dir to add! :)
* Added crash fixes for loading old files with Actions/Armatures in them. Was caused by usage of some old globals still and the functions in question not performing NULL checks on the validity of the data they're given.
* Added back reorganise action channels tools (shift/ctrl-shif pageup/down) for Action Editor. These are only available in 'Action Mode' only.
* Tidied up Action Editor/Dopesheet tools code - removed various unused things, and also, added an API call in anim_deps.c to send the correct notifiers, since I anticipate that they're likely to require a few context checks which would be better to centralise than copy+paste everywhere.
Note to Ton: could you have a look at this notifier stuff here? I'm not sure which ones I should be sending...
* Also added a few assorted comments in various places
* Animation channels - cleaned up the code for selecting channels (removed various TODO stuff that's going to be replaced by something better later). Also, added back the ctrl-shift select feature for groups, which should be extended for other channels too at some stage.
* Outliner - added missing flags to do-versions, and replaced the width calculations with the rna-width version for now, as that uses constant width of 100 with OL_X*indention
* DNA_cloth_types.h, patch by Roelf de Kock. The gravity[3] member
is not being parsed correct by makesdna.c and will give issues
even when trying to fix it. Worked around it for now in RNA by
wrapping it manually, but this should really be fixed in the DNA
genetics code, added a comment about it in DNA_cloth_types.h.
* Handle vertex groups and uv layers more consistent now. They are
all exposed as strings now. Reason is that indices don't really
say much, and a direct pointer is not always possible because for
example a uv layer in a material can be used for multiple objects
and so there is no single pointer. In python it is not too hard
to use either since the strings works as a key for lookups.
For the user interface we can later think of some method to
generate popup menus in a way that works for vertex groups,
uv layers, bones etc.
* This also fixes the XXX's in rna_modifier.c, I think that can be
marked done.
Small cleanup in region-based cursor handling.
- callback was in spacetype, now in regiontype
- made screen listener catch ND_MODE notifier and
call the active region cursor callback, if it's there.
- remove Verse support. This will be brought back in The Future (probably jiri + me)
This means 5k lines less in blenkernel.
- fix two small errors for global cleanup, now compiles properly with FFMPEG enabled too.
WM: added area-listener, which can be used to tag refreshes for
either the drawing call, or use the new ED_area_tag_refresh()
function which will automatically call, after all notifiers
were handled, an the spacetype->refresh() you provided.
Added for Joshua, after reviewing Action/Dopesheet requirements.
Joshua: I've made two dummy functions in space_action.c:
- action_listener()
- action_refresh()
Wich now does a printf on activating a new object.
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.
Cleaned up the View2D setup stuff here, by removing all the hacky manual setting of tot and cur rects. Now the Outliner and RNA are scrollable again.
However, in the process, I uncovered a few rather nasty bugs that must've been around for ages.
1) The width-calculation code depends on te->xend for calculating the max-extents, but that is not set until drawing of channels commences. This is far too late, as it is needed for the setting of the 'tot' rect's extents, so that we can have horizontal scrolling, and an accurate horizontal scroller! I noticed that RNA version of this currently hacks around this by using constant width of 100, but that's not a great final solution.
2) There's some minor pixel offset twitching going on with the restriction columns when the view is resized. Also, for RNA, the buttons sometimes cause a few drawing artifacts. Will check on this in part 2.
*******
- Ported show/hide objects as the clear/set restrictview operators (request of kaito)
- clear is not using a context loop as there is none currently available
- set uses a popup menu for hide select and hide unselected
hotkeys are H and Alt-H (set, clear)
- ported the undo calles, to use ED_undo_push where available
The functionality already existed via the RNA system, this
commit makes disabled buttons draw greyed out, and not respond to clicks
(previously, they would drag/edit/etc but then reset to the previous value)
- after talking with Martin P (theeth), I have now shuffled code around
so that there is no more exception code for nodes in the wrong places.
This means node editor now also use entirely common translation.
As proof of concept, there is now also resize and rotate support. It already
works, but there need to be a bit more thought in how those
actions are initialised for node editor. Probably some way to tell
what to use as pivot point, etc.
Transform operator replay
Basic support working. Only saves mode and values, not constraint setup.
Removed event pointer from TransInfo (it's not available in operator exec). Replaced checks to event->modifiers to a functional modifier bitfield in TransInfo (that is, instead of checking for Shift, it checks for MOD_PRECISION) to make it remappable later.
Misc:
X-Mirror for mesh now working with transform
- Make sure shader, composit and texture ntrees have an id.name. This is to ensure
that node trees in Material, Scene and Texture are properly identified through RNA
* Start of Action/Pose syncing code (in anim_deps.c) This is currently not hooked up yet, as we still need to figure out where these should get called (due to a few dependencies they have - i.e. visibility syncing of channels is turned on/off by setting in appropriate views).
* Also added assorted comments/changes to rna/dna
* Added the relevant filtering necessary for this to work, into the animation-channel filtering code.
* Updated most of the keyframe-editing tools to respect this
* Renamed keyframe-editing API loopers (added ANIM_ prefix) for consistency
* Added function for mapping keyframes to/from NLA-mapping for Ipo-Curves in addition to the one for IPO blocks. As a result, renamed the latter for consistency.
For now, I've made a distinction between (eg.) ND_LIGHTING and ND_LIGHTING_DRAW,
with the 'draw' variety being properties that get displayed in the 3D View
* Also did some cleaning in lamp RNA, moved sun/sky settings to its own struct