Dean Herbert
4d71f2084c
Move individual mask selection logic out of MaskSelection
2018-04-04 18:29:53 +09:00
Dean Herbert
788bfde002
Merge branch 'master' into selectionlayer-rewrite
2018-04-04 15:38:27 +09:00
Huo Yaoyuan
b842f682eb
Use Linq.Append and Prepend.
2018-04-02 12:06:34 +08:00
smoogipoo
1dca1663c3
Handle all selection events within SelectionBox (incl. single-mask)
2018-03-30 15:50:55 +09:00
smoogipoo
6767dd3d4a
Fix hitobject masks dying with no recovery
2018-03-29 22:42:42 +09:00
smoogipoo
4446aeaa0d
Commenting + cleanup of HitObjectMask/HitObjectMaskLayer
2018-03-29 22:38:28 +09:00
smoogipoo
6d4f94756e
Rewrite the way drag + click selections happen
...
The general idea here is that we need the masks to handle mouse down events, as they need to handle the drag (mousedown -> drag immediately).
I've rewritten the editor selections to use events, as there are some 3 different components that handle/trigger selections in different ways.
1. All selections/deselections now propagate through `HitObjectMask.Select()`/`HitObjectMask.Deselect()`.
2. Components that react to changes in the selection bind to the masks' `Selected`/`Deselected` events, and track them/change their states locally.
3. Masks provide a `SingleSelectionRequested` event which is invoked on the mouse-down event. Various components bind to this event to perform state changes locally in this scenario.
4. `DragBox` now handles all drag input locally. It triggers `Select`/`Deselect` on the masks it needs to.
5. `SelectionBox` handles the display of itself locally.
6. `SelectionBox` handles movement of groups of masks locally.
7. `HitObjectMasks` handles movement of itself locally.
2018-03-29 22:07:23 +09:00
smoogipoo
57e4281601
Make HitObjectMasks VisibilityContainers
2018-03-29 18:44:15 +09:00
smoogipoo
6314694557
Make HitObjectMaskLayer always create masks for all objects
2018-03-29 17:13:45 +09:00
smoogipoo
786e6242e1
Make bdl beat divisor nullable
2018-03-20 14:01:06 +09:00
smoogipoo
b1d09500f2
Integrate beat snap divisor into editor seeking
2018-03-19 20:42:06 +09:00
smoogipoo
e25d1f6982
Pass down editor clocks through DI
2018-03-19 16:27:52 +09:00
Dean Herbert
4b83278cf4
Merge branch 'master' into fix-editor-clocks
2018-03-16 23:32:54 +09:00
smoogipoo
6f7163769d
Adjust comment for readability
2018-03-16 19:57:14 +09:00
Dean Herbert
bca4b620b6
Merge branch 'master' into editor-wheel-movement
2018-03-16 15:56:51 +09:00
smoogipoo
fc15c63a88
Re-order methods
2018-03-15 18:28:08 +09:00
smoogipoo
c937ef5d24
Fix not being able to scroll before the first timing point
2018-03-15 18:26:53 +09:00
smoogipoo
c8f6a6980b
Move clock construction to Editor
2018-03-15 17:27:37 +09:00
smoogipoo
9e0aeec574
Use a decoupled clock for accurate clock times
2018-03-15 17:03:33 +09:00
smoogipoo
50f9d810dd
Add more testcases + fix up seeking a bit more
2018-03-15 15:40:52 +09:00
smoogipoo
0da3ae0944
Add some basic tests + fixes to seek/seekforward functionality
2018-03-14 20:52:48 +09:00
Dean Herbert
81f82d98a1
Rework a lot of naming and structure
2018-03-14 15:18:21 +09:00
smoogipoo
299de4b866
Rewrite seeking to better handle timing point boundaries
2018-03-13 16:54:34 +09:00
smoogipoo
df352c98d6
Change wheel direction to match stable
2018-03-13 14:30:50 +09:00
smoogipoo
e580819621
Rename to seekAmount
2018-03-13 14:08:43 +09:00
smoogipoo
6c148930b5
Don't skip beats when scrolling in the direction of the closest beat
2018-03-13 14:02:37 +09:00
smoogipoo
8acba47a2b
Implement mouse wheel movement in the editor
2018-03-13 11:23:44 +09:00
smoogipoo
8c4bcb4a04
Only accept drag movement on the overlays
2018-03-12 17:33:10 +09:00
smoogipoo
212142429f
Derive from IHasPosition
2018-03-12 17:25:34 +09:00
smoogipoo
4103c66cff
Move selection overlay to HitObjectOverlayLayer for extensibility
2018-03-10 00:48:57 +09:00
smoogipoo
0e8fbc47b7
Give HitObjectOverlayLayer full input state information
2018-03-10 00:03:02 +09:00
smoogipoo
376f6eec58
SetPosition -> OffsetPosition
2018-03-10 00:02:13 +09:00
smoogipoo
ad72d3816b
Allow dragging anywhere in a capture box to move objects
2018-03-09 23:43:50 +09:00
smoogipoo
4a48136e4f
Make hitobject positions adjustable
2018-03-09 23:12:34 +09:00
smoogipoo
3b766b8ec8
Make CaptureBox account for changes in hitobject states
2018-03-09 23:11:48 +09:00
smoogipoo
278b25bcbd
Fix border being the wrong size
2018-02-23 15:29:56 +09:00
smoogipoo
0cdf6fa7e2
Make HitObjectOverlay into an OverlayContainer
2018-02-22 14:36:58 +09:00
smoogipoo
45c579630d
Make selectionLayer handle input below object overlays
2018-02-22 14:34:37 +09:00
smoogipoo
07252254eb
Fix post-merge issues
2018-02-22 14:22:04 +09:00
smoogipoo
99e9eb81f2
Merge remote-tracking branch 'origin/master' into editor-hitobject-overlays
2018-02-22 14:16:01 +09:00
Dean Herbert
7c942eb592
Tidy up layer container logic
2018-02-22 13:42:36 +09:00
smoogipoo
4934ef7429
Add playfield aspect ratio + scaling modifications to composer layers
2018-02-21 11:07:42 +09:00
smoogipoo
7fe0989427
Merge branch 'general-slider-improvements' into editor-hitobject-overlays
2018-02-20 23:51:47 +09:00
smoogipoo
ad2f556133
Add hitobject overlays to selected hitobjects
2018-02-20 18:01:45 +09:00
smoogipoo
2a5bfdb4b8
Deselect hitobjects that are now not in the selection quad
2018-02-20 15:06:51 +09:00
smoogipoo
2f4925d031
Add some xmldocs
2018-02-20 15:06:14 +09:00
smoogipoo
285df52f43
Encapsulate logic for selecting/deselecting further
2018-02-20 14:54:45 +09:00
smoogipoo
995ecb7d94
Make selectedHitObjects into a HashSet for quick Contains checks
2018-02-20 14:48:35 +09:00
smoogipoo
87065a0b13
Rename + publicise DeselectAll
2018-02-20 14:38:57 +09:00
smoogipoo
423fe4eba8
Combine border radiuses of selection and capture boxes
2018-02-20 14:25:42 +09:00