Commit Graph

597 Commits

Author SHA1 Message Date
0facc48308 Fix T42662 hide unselected does not reveal selected.
Not sure if this is a bugfix exactly but should help the gooseberry team
with their workflow.
2014-11-20 18:11:12 +01:00
50c667372e Bugfix T42661: shortcut "." and "," for changing pivot center don't work on Graph Editor 2014-11-21 01:43:56 +13:00
cd54f07a3c Fix: Shift-H now works in main graph editor area too
In the process, I've removed the old operator (ANIM_OT_channels_visibility_set)
and folded that option in with the hide operator, to make this consistent
with how this is done in the 3D view and other parts of Blender.
2014-11-20 03:07:09 +13:00
793ed3fa74 Tweaks to hide/reveal hotkeys for Graph Editor
Now the hotkeys here work in line with what's done for other parts of Blender
* H = Hide selected
* Shift-H = Hide unselected  (i.e. old VKEY behaviour)
* Alt-H = Reveal all
2014-11-20 02:46:45 +13:00
2ad61438d8 Cleanup: name hide/reveal, like rest of operators 2014-11-19 14:35:00 +01:00
fbd4dfb2c6 Graph Editor: H/Shift-H now hide and unhide selected curves (Gooseberry Request)
Revised the tools for managing which FCurves are visible in the Graph Editor
curves area. Now, there are the following tools in place:
* V (channels region only) = Hide all curves except those in selected channels  [OLD]

* H       = Hide all selected curves  [NEW]
* Shift-H = Show all previously hidden curves [NEW]

I've removed the old operator to toggle visibility status of selected curves,
as it doesn't seem that useful anymore.
2014-11-20 02:24:42 +13:00
f0a2e714b3 Fix T40372: Slow Graph Editor drawing
For FCurves where all the keyframes use the "simple" interpolation types
(i.e. Constant, Linear, and Bezier), we now use the old FCurve drawing
code that was used prior to the Easing Equations changes. This should
be generally faster in general.
2014-11-16 23:32:56 +13:00
63ec900af9 [T40792] Optimisations for FCurve Drawing - Lower sampling precision when "High Quality" drawing disabled
When the "High Quality Line Drawing" option (View menu) is disabled,
the sampling rate (i.e. the size of timesteps to use when sampling
the FCurve for drawing it in most cases now) is set to be quite low
(i.e. at 0.1 frame increments). This amounts to at most 10 sub-steps.

In one test file (with a wide window), this had the effect of improving
the performance by over 3x. It's still not as good as a sampling-free
approach, but for this functionality is still needed for FModifiers,
so it's better that we can optimise this.
2014-11-16 23:32:55 +13:00
a39100cf1d Code cleanup - Typos and separating out assignment from for-loop header 2014-11-16 23:32:54 +13:00
284726baec Fix T42587 rotation curves not setting jump to cursor position
correctly.
2014-11-13 15:03:59 +01:00
5c6e333780 UI Refactor T41640
Make the UI API more consistent and reduce confusion with some naming.

mainly:
- API function calls
- enum values

some internal static functions have been left for now
2014-11-10 23:06:54 +01:00
5e0e175422 Cleanup: spelling (D831) 2014-11-03 23:28:16 +01:00
8ba33a69c8 Cleanup: rename draw_markers_time -> ED_markers_draw 2014-10-28 19:03:13 +01:00
36da579d12 Markers: show the area that handles marker events 2014-10-28 18:51:28 +01:00
8d084e8c8f Ghost Context Refactor
https://developer.blender.org/D643
Separates graphics context creation from window code in Ghost so that they can vary separately.
2014-10-07 15:47:32 -05:00
65da19b0cd Fix T41740: Different behaviour of custom hotkey
Quick fix, this is actually a demonstration of why we should use modal keymaps!
We can give any event to *start* the op, but then hard-code how to *end* it... tsk.
2014-09-07 14:45:05 +02:00
094433faa9 Fix crash part of T41561: custom properties don't see in drivers windiw
Do not try to access ID_OB data from an ID_MA one (or anything else)!
2014-08-30 22:02:05 +02:00
00b29156e0 Defines: replace ELEM3-16 with ELEM(...), that can take varargs 2014-07-20 01:33:40 +10:00
19f89a083f Fix for invalid memory access in graph editor when deleting the last
vertex in a fcurve.
2014-07-10 13:03:05 +02:00
f004893e49 Fix T40895: Curves panel, zooming out a lot crashes Blender 2014-07-01 13:22:55 +06:00
9ca0c7eea3 Ctrl-F now activates the filter-by-name functionality for Animation Editors 2014-06-24 17:53:13 +12:00
a6005319a7 FCurve: Setting extrapolation needs to recalc handles 2014-05-28 12:30:33 +10:00
193e77cc67 Fix T40201: Keyframe edits fail to update the viewport 2014-05-19 00:24:45 +10:00
d8c39b8789 FCurve: move add modifiers logic from menu into dynamic enum 2014-05-14 14:41:43 +10:00
a756499c62 Fix for FCurve keyframe editing left handle from button failing if not selected 2014-05-14 13:27:27 +10:00
d20c9e491c Bugfix: "Lock time to frame range" didn't work in the Graph Editor
This uses a different operator than the other time editors (as it needs to support
the setting of the value-cursor too), so the changes here didn't get propagated through.
2014-05-08 17:43:11 +12:00
d303556afb Code cleanup: remove file handling headers where they arent needed 2014-05-02 05:37:11 +10:00
4ca67869cc Code cleanup: remove unused includes
Opted to keep includes if they are used indirectly (even if removing is possible).
2014-05-01 04:47:51 +10:00
c504b8b237 Fix T39911: Unpredictable behaviour when editing y-coordinate of right handle via Active Key panel (for aligned handles)
Editing the y-coordinate of the right handle of a keyframe via the Active Keyframe
panel in the Graph Editor, while both handles are selected and are both of type "aligned"
resulted in weird behaviours such as the x-coordinate of the right handle changing
(and rapidly starting to overshoot) but nothing else. However, this problem
doesn't occur when only a single handle is selected.

It turns out that the "order of computation" logic in calchandleNurb_intern() gets
confused in the case of both handles being selected, and results in a sub-optimal
handling of the right handle being the one that's been changed. We hack around this
here by temporarily making it so that just the right handle is selected when doing
the updates here.
2014-04-28 17:16:19 +12:00
b33953593b Graph Editor: Added buttons for editing handle types on the active keyframe (from NKEY region) 2014-04-28 12:47:22 +12:00
c67bd49e56 Code cleanup: use 'const' for arrays (editors) 2014-04-27 00:25:15 +10:00
1fabfc9ea2 Fix T39851: F-curve noise modifier on a bone: change selection when modifying value
When the dopesheet was open, "keyframe edited" events from the graph editor
(i.e. fired whenever any properties on keyframes or FModifiers are changed)
would trigger the dopesheet to synchronise selection states of anim channels
and ensure that FCurve autocolours are initialised correctly.

This however was undesired when editing properties in the graph editor. Now,
made it so that keyframe adding/removing operators use different notifier flags
to specify that the channels might have changed + need colour syncing, and
adjusted the dopesheet updating logic to fit
2014-04-24 14:29:10 +12:00
e6dcb0d9c3 Whitespace 2014-04-23 16:49:21 +12:00
1c6f8192e2 Applying same fix for snapping keyframes in Graph Editor 2014-04-23 16:49:21 +12:00
3f0227eb85 Fix T39850: Graph Editor - 'Mirror Over First Selected Marker' mirrors over frame 0 instead
Problem was introduced back in 2.70 during Project Pampa when the FCurve Normalisation
feature was introduced. The cause was that the normalised cursor value was always getting
passed to the KeyframeEditData context, even when it wasn't needed.
2014-04-23 16:49:20 +12:00
43d695e82e Code cleanup: view2d api naming 2014-04-21 18:47:17 +10:00
e4a2df9fec View2d: check UI_view2d_view_to_region_clip succeeds before using the result 2014-04-21 18:11:47 +10:00
9ae0e585b0 View2d: API Cleanup for view<->region conversion
View2D had some inconsistencies making it error prone in some cases.

- Inconstant checking for NULL x/y args.
  Disallow NULL args for x/y destination pointers, instead add:
  - UI_view2d_region_to_view_x/y
  - UI_view2d_view_to_region_x/y

- '_no_clip' suffix wasn't always used for non-clipping conversion,
  switch it around and use a '_clip' suffix for all funcs that clip.

- UI_view2d_text_cache_add now clips before adding cache.

- '_clip' funcs return a bool to quickly check if its in the view.

- add conversion for rectangles, since this is a common task:
  - UI_view2d_view_to_region_rcti
  - UI_view2d_region_to_view_rctf
2014-04-21 16:59:40 +10:00
a15b3c4d11 Code cleanup: use bool 2014-04-11 11:33:29 +10:00
617557b08e Code cleanup: remove TRUE/FALSE & WITH_BOOL_COMPAT define 2014-04-01 15:22:28 +11:00
85e0f69040 A few spelling fixes 2014-03-22 16:57:57 +13:00
f25c7a3f04 More driver linting messages - procedural animation and no-variables for average,etc.
Inspired by T39315, this commit adds a few more driver "linting" messages used for
providing users with tips on how to use drivers better. This time, we specifically
address 2 cases:

1) Drivers being abused for procedural animation, due to the misconception that
   procedurally generating F-Curves using F-Modifiers means that drivers are needed
   to wire such procedural motion-sources to properties.
2) Setting up Average/Sum/Min/Max driver types without any input variables - you can't
   expect anything to happen (unless of course, your intention was to lock the property
   to 0.0)
2014-03-22 16:56:17 +13:00
daccaa713b Patch T22084: Robert Penner Easing Equations for FCurves
This commit introduces support for a number of new interpolation types
which are useful for motion-graphics work. These define a number of
"easing equations" (basically, equations which define some preset
ways that one keyframe transitions to another) which reduce the amount
of manual work (inserting and tweaking keyframes) to achieve certain
common effects. For example, snappy movements, and fake-physics such
as bouncing/springing effects.

The additional interpolation types introduced in this commit can be found
in many packages and toolkits (notably Qt and all modern web browsers).
For more info and a few live demos, see [1] and [2].


Credits:
* Dan Eicher (dna)              - Original patch
* Thomas Beck (plasmasolutions) - Porting/updating patch to 2.70 codebase
* Joshua Leung (aligorith)      - Code review and a few polishing tweaks

Additional Resources:
[1] http://easings.net
[2] http://www.robertpenner.com/easing/
2014-03-22 03:00:27 +13:00
fa24ad1fd5 Graph Editor: add lasso select for fcurves 2014-03-09 16:20:04 +11:00
9e881d0d5b Drivers UI: Add explicit warnings about use of bpy.data and bpy.context in expressions
In order to combat the problem of users frequently trying to use inlined
bpy.data/bpy.context paths for data access in their driver expressions
and then finding/complaining that these don't update correctly, the UI
now flags these as the error conditions that they are (with suggestions
on how to fix this).

Also tweaked the "Add Variable" button to have more descriptive text about
what exactly variables are and why to use these, along with some other
visual tweaks (icons!).
2014-03-08 12:32:56 +13:00
6dafb89436 Fix FCurve reading freed themes, assert to prevent further misuse 2014-02-18 12:33:19 +11:00
410613ec09 NDOF: add keymapping for the 'fit' button for other 2d views 2014-02-18 11:57:49 +11:00
b3afbcab8f ListBase API: add utility api funcs for clearing and checking empty 2014-02-08 06:24:05 +11:00
a5c35fb27f Code cleanup: use booleans where appropriate 2014-01-28 04:00:04 +11:00
4ae7ae6f2e Code Cleanup: use bool for return values and correct comments
also remove CDDM_Check, theres no need for it.
2014-01-22 02:53:48 +11:00