Current Situation
The Action Editor currently only displays/edits the action slot on the active object. However, there are many situations where it would be handy to be able to edit actions that can be reused on other levels instead (for example, actions for different sets of colour+intensity cycles for lamps - e.g. for a disco scene or something like that).
Problem
1) How do we make it clear to users which level/slot they're editing?
- For example, with a single Cube selected, we could potentially have Scene, Compositing Nodes, World, Cube Object, Cube's Material 1, Material 1's Texture..., Material 2, ..., Cube Mesh, ShapeKeys, Particle System 1, Particle System 2,..., and perhaps a few others I've overlooked.
2) How do we allow users to select which level + slot they're editing?
- This naturally follows from the first problem. Basically, if we can display a slot, we can probably try to reuse that mechanism for primitive selection techniques.
Solutions
- Level + Slot Selectors - This would be similar to what the IPO Editor used to have (http://wiki.blender.org/index.php/File:ManAnimationEditorsIpoWindowDefaultViz.png).
- Benefit: This is a fairly self-contained approach, and one of the easier ones to implement.
- Problem 1: This was quite nasty if you selected another object that didn't have the types of data that the previous one had. Then again, the Properties Editor suffers from similar problems too.
- Problem 2: Also, it didn't really handle things like materials that well (these were accessed using a number box to choose the index being edited)
- Mini-Outliner of Available Slots - This is a more advanced version of the Level + Slots idea, except that we display a mini tree of available levels that can be edited given the current selection, with the hierarchical relationships between datablocks visible
- Benefit: This copes better with things like Materials and Particles
- Benefit: This is still a "self-contained" approach (i.e. each editor doesn't need to know anything about other editors' states)
- Problem: We'd have to develop a new widget to do this - somewhat hairy in the current UI widget toolkit, but we'd want to do this for RNA Path building anyway
- Problem: We'd end up with a semi-blocking/overlapping view that users have to interact with everytime they hunt for this info.
- Defer to Outliner (Proper) - Instead of creating our own outliner tree and using a localised pointer, we just defer these capabilities to the main Outliner. Thus, clicking on Action Slots there (or just the Animation Data entries) tells the Action Editor where it needs to be.
- Benefit: Potentially simpler for users who just expect applications to be monolithic blobs where every single view cooperates with every other view to present a single editing state/context
- Problem: What happens when we've got multiple of each type of window, and we want to have separate views in each?
- Controlled by DopeSheet (From an old suggestion by @venomgfx) The Action Editor can only be entered via DopeSheet. Double-clicking on a channel there opens Action Editor for just that action+level (i.e. in effect it filters the visible channels to just those in that action). When selected object changes or we exit action editor (i.e. back to dopesheet), the slot/level pointer stuff gets reset and/or the Action Editor simply becomes unavailable.