Commit Graph
37 Commits
Author SHA1 Message Date
itsmattkc 81c1922911 use strings to connect nodes
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +11:00
itsmattkc ad4b83a098 new undo system
Also enables undoing when working with node input arrays
2021-01-29 16:10:34 +11:00
itsmattkc 9f99182089 use catch up scrolling when dragging items 2021-01-25 10:22:14 +11:00
itsmattkc 2ab797e7fe curvewidget: share color between view and tree 2021-01-24 15:32:25 +11:00
itsmattkc 8d975faa83 renamed function for clarity 2021-01-24 15:31:01 +11:00
itsmattkc 59da13969d add functions to select or zoom to fit keyframes of a single input 2021-01-24 14:06:39 +11:00
itsmattkc b68397d687 implement keyframe track separation in curve view 2021-01-24 12:09:00 +11:00
itsmattkc 181235f6ce began new infrastructure
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.

Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +11:00
itsmattkc c7f5af9534 moved autoscroll code to TimeBasedWidget rather than TimelineViewBase
Better place for it. Fixes #1406
2020-11-25 10:00:57 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11:00
itsmattkc 1b9bf6d92c switched many QLists for QVectors
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc 610f4c54fe various: began heavy rework of curve view to link closely with param view 2020-09-29 00:42:16 +10:00
itsmattkc 8bf653925f curve/timeline: improved user interface behavior
* Implements "auto-fit" setting for curve view and sets it on open.
* Improves scroll zooming on all TimelineViewBase derivatives.
* Improves code sharing for better maintenance.
2020-06-23 05:25:34 +10:00
itsmattkc e681b87988 curve/param/panels: leave curve panel open and have option for timebasedwidget to auto-set timebase 2020-06-23 05:22:58 +10:00
itsmattkc 5f6e5916bc curvewidget: allow zooming only one axis and allow hiding keyframe tracks 2020-06-20 01:56:41 +10:00
itsmattkc e67dabf1ff keyframes: implemented deleting keyframes with the delete shortcut 2020-05-01 17:01:16 +10:00
itsmattkc 877e8d3afc curveview: ensured curveview is updated with the correct length and playhead 2020-04-29 01:26:09 +10:00
itsmattkc 9c4999cfae curvepanel: reconfigured to be a spawnable child of NodeParamView 2020-04-27 00:04:07 +10:00
itsmattkc 84e73395ff panels: implement a small margin on all panels to ensure the focus border is always visible 2020-04-20 18:06:50 +10:00
itsmattkc cc421d4108 keyframeview: show correct length and jump to the corresponding time in NodeParamView 2020-04-15 03:35:48 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
itsmattkc 9133bbe632 curveview: implemented keyframe tracks
I'm not sure why this wasn't implemented before, but as a pretty integral part
of the keyframe system, now it is.
2020-04-05 20:19:46 +10:00
itsmattkc 3399227b3a keyframeview: implemented transforming keyframe times to and from sequence time
Since the node graph can have transform cross nodes, input keyframes may occur
at a different times requiring transforming between sequence time and media
time. This commit implements such a mechanism in all UI classes that need it.
2020-03-26 19:17:46 +11:00
luz.paz 321e7d1606 Fix doxygen and misc. typos
Found via `codespell -q 3 -L ba,keypair,numer,uint`
2020-03-10 15:00:56 -04:00
itsmattkc 6eeae7b15e timebasedwidget: move center scroll functionality to base class so widgets like
Viewer can use it
2020-02-17 15:21:10 +11:00
itsmattkc 2ba928fa1f code cleanup: renamed qtversionabstraction.h to qtutils.h 2020-02-08 00:13:38 +11:00
itsmattkc 17c1493aa7 all time-based panels are now derived from a common base class
Cuts down on a lot of duplicate code between
TimelineWidget/ViewerWidget/CurveWidget/NodeParamView
and TimelinePanel/ViewerPanel/CurvePanel/ParamPanel since they all use similar
time functions.
2020-02-01 19:39:43 +11:00
itsmattkc c8baf4aa3e implemented rubberband zoom in timeline 2020-01-07 20:24:07 +11:00
itsmattkc 8b2514c1de implemented automatically switching to the hand tool when middle clicking on
all TimelineViewBase derivatives
2020-01-02 05:44:40 +11:00
itsmattkc f65e1e52b5 implemented scroll wheel zooming in all TimelineViewBase derivatives 2019-12-31 19:49:09 +11:00
itsmattkc 2b24fae26f implemented vertical "zooming" in the TimelineWidget and CurveView
This comes in the form of changing the vertical scale in the CurveView and
adjusting all track heights in the Timeline.
2019-12-31 00:23:28 +11:00
itsmattkc 245aa44efc implemented support for multilayered keyframes
This adds the ability to keyframe more than one value per input (e.g. a vec2,
vec3, etc.) so that you can animate, for example, an X axis separately from a
Y axis.
2019-12-30 04:47:23 +11:00
itsmattkc 1d3d52db9b implemented the ability to modify bezier points in the curve editor 2019-12-28 22:40:30 +11:00
itsmattkc 4cd5e103b8 merged KeyframeView and CurveView to use the same base class
These classes had a ton of similarities, so they've now been modified to use
a common base class.
2019-12-28 18:47:54 +11:00
itsmattkc 26cafa7936 implemented bulk of curve editor's functionality
While certainly not entirely complete yet, this implements most of the UI
functionality of the graph editor.
2019-12-28 18:26:37 +11:00
itsmattkc d82acf9b7e implemented basic animation curve editor widgets
Frontend is largely done, it just needs backend and connecting to other
widgets to function correctly.
2019-12-28 00:27:13 +11:00