HarmonyEngine
HarmonyEngine copied to clipboard
Editor Entities
Improve property tree editing
- [x] Multiple selected property editing (both multiple items, and multiple properties)
- [x] 'enter' key submits properly
- [x] Highlighting vector spinbox and entering number doesn't work as intended
- [x] Reset to default value button per property
Dope Sheet
- [x] Copy/Paste key frames (aux dope sheet's tool btns need to set 'pContextItem')
- [x] Dope Sheet able to select item by entire column (not just the text width)
- [x] Collapse/Expanded items should be independent to whether they're selected or not
- [ ] Hide/Show Copy/Cut/Paste/Delete tool buttons based on keyframe selection
- [x] Improve Quick Tween to work with multiple TweenProperty types
- [x] New Tween Button - Collapse Tween (Replaces tween with a regular keyframe at beginning of tween with the destination value)
- [x] Sorting items should refresh the dope sheet
- [x] Add & Remove keyframes using the dope sheet
- [ ] Delete keyframe with delete button
- [x] Insert time at frame (all tweens occuring on this frame have their durations extended, and all frames beyond this one are offset)
- [x] Fix preview extrapolation when timeline events occur
- [ ] Fix pausing subentities timeline events
- [x] Switching between two entity items, the dope sheet scrolling/pan uses the last open (not preserved, when switching back and forth)
- [x] Play Controls & preview
- [ ] Zoom functionality
- [x] WASD controls
- [ ] Center on Key Frame when Undo/Redo'ing
- [ ] Auto Initialize Checkbox functionality
- [ ] When changing FPS, tween durations are not updated or reflected in dope sheet
- [ ] Write input logic for QGraphicsView instead of using QGraphicsView::mousePressEvent()
- [ ] Collapsed Keyframes should select all keyframes of that frame index when selected
- [ ] Swap CTRL and SHIFT when selecting keyframes (Requires full mouse input re-implementation instead of built-in
Item specific support
- [ ] Able to edit sub-entity's children properties
- [ ] Replace Item Feature - Replace node item with existing item of same type
- [ ] Items able to be dynamically allocated and optionally deleted in dtor (use pointers/forward declaration)
- [ ] Able to Combine different sub-entity types into an array when dynamically allocated
- [ ] Primitives and Shapes need to be able to change types and utilize the timeline
- [ ] Update HyTextureQuad2d when atlas changes or image is replaced
- [ ] When packing items into an array, if they are named similar but with numbers at the end, choose the base name for the array
- [ ] Be able to add items that are data types like INT, FLOAT, BOOL
- [ ] Be able to set values 'procedurally' instead of hard-coding (RAND, CONDITIONAL, WINDOW WIDTH/HEIGHT, ETC)
- [ ] 'Procedural' values are stored as QJsonObject's when serialized. (no other 'PropertiesType' can use a QJsonObject)
- [ ] Store boolean in 'PropertiesDef' that determines whether normal or procedural value is set
- [ ] Runtime output 'procedural' values
- [ ] HyAudio items and their properties
"(Shape) Edit Mode" (legacy name Vertex Edit Mode) - RED color indicates this mode
- [x] Change to just "Edit Mode" and hotkey to 'e'
- [x] Create red border around viewport when in this mode
- [ ] When in "Edit Mode" and selecting another item from treeview will either: if nonshape/multiselect disable to transform mode (BLUE) OR if single shape keep "Edit Mode" but wrap/vem new shape
- [ ] Adding new vert should select it
- [ ] Line Chains shouldn't require holding ctrl when an end is selected
- [ ] Implementing line loops
- [ ] When redo/undo'ing, it should enable "Edit Mode" mode
Transform Control
- [ ] Scaling with transform widget should not change position
- [ ] Holding Ctrl when translating to duplicate selected
- [ ] Draw Alignment Guides when holding Shift (Snapping)
- [ ] Fix Scaling when things are rotated
- [ ] When redo/undo'ing transform, it should disable VEM mode
- [ ] Scaling invertedly causes an assert in box2d
- [ ] When a (non-uniform?) scaling is applied to a circle shape, its selection bounds act as if there is no transform
UI Widgets
- [x] HyPanel needs to take HyTexturedQuad2d's
- [ ] Button
- [ ] Checkbox
- [ ] Progress Bar
- [ ] Meter
- [ ] Rack Meter
- [ ] Container
- [ ] Widgets
- [ ] Spacers
- [ ] Nested Layouts