1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-08 20:17:27 +08:00
Commit Graph

266 Commits

Author SHA1 Message Date
Bartłomiej Dach
d2417beeac
Implement drag operation for multiple path control points 2021-12-20 21:29:57 +01:00
Bartłomiej Dach
a9408485cc
Change control point piece selection logic to allow dragging multiple 2021-12-20 21:18:38 +01:00
Bartłomiej Dach
b0ca82e1e5
Move slider path point drag handling to visualiser 2021-12-20 20:56:06 +01:00
Bartłomiej Dach
8aa04864ce
Add support for converting sliders with repeats to streams 2021-11-11 23:25:49 +01:00
Bartłomiej Dach
0cd3f98598
Ensure samples & sample points are carried over during conversion 2021-11-11 21:43:06 +01:00
Bartłomiej Dach
27707d52ec
Implement slider-to-stream conversion 2021-11-11 21:01:30 +01:00
Dean Herbert
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
Dean Herbert
ac471a0ec1 Merge branch 'no-more-difficulty-control-points-info' into slider-timeline-velcotiy-adjust-v2 2021-10-01 17:46:58 +09:00
Dean Herbert
46bafb6252 Merge branch 'master' into no-more-difficulty-control-points-info 2021-09-28 13:53:56 +09:00
smoogipoo
f9d5abff8a Update with keybinding changes 2021-09-16 18:26:12 +09:00
Dean Herbert
2114a4729c Set a sane default for new slider blueprints 2021-09-14 18:28:27 +09:00
Dean Herbert
d4e5a612ea Update IPositionalSnapProvider to take a HitObject as reference, rather than raw time
This allows fetching the correct `DifficultyControlPoint` from the
hitobject. Nothing more.
2021-09-03 17:11:12 +09:00
Dean Herbert
17f6efc6fe Fix missed cases of incorrect .Value usage
Changing from `Bindable` to `Nullable` comes with its issues...
2021-08-26 14:02:57 +09:00
Dean Herbert
6dcd9427ac Remove bindable usage in PathControlPoint
This is quite a breaking change, but I think it is beneficial due to the large amount of usage of this class.

I originally intended just to remove the allocations of the two delegates handling the `Changed` flow internally, but as nothing was really using the bindables for anything more than a general "point has changed" case, this felt like a better direction.
2021-08-26 12:33:53 +09:00
ekrctb
1bac471b49 Adapt to PlatformAction type change 2021-07-21 16:12:53 +09:00
Bartłomiej Dach
50c27d2635 Update usages of IHasTooltip in line with framework localisation changes 2021-06-25 19:10:04 +02:00
smoogipoo
3db995c778 Fix sliders jumping around the screen on movement 2021-05-24 17:15:57 +09:00
Dean Herbert
df5970fab4 Create base implementations of the two most common TernaryStateMenuItems 2021-05-20 19:34:53 +09:00
smoogipoo
532c41c82e Remove nested blueprints from sliders 2021-05-18 14:19:11 +09:00
smoogipoo
e621cfc4ea Add Apply() method for applying new DHOs 2021-05-18 14:14:10 +09:00
smoogipoo
ffb6135a1b Rework hitobject blueprints to take in hitobject models 2021-05-13 19:53:32 +09:00
Dean Herbert
01d732bb65 Revert "Refactor SliderSelectionBlueprint to not reference blueprint pieces for input handling"
This reverts commit 54fe10c82a.
2021-05-08 23:33:03 +09:00
Dean Herbert
63e267a3be Revert "Trim redundant this qualifier"
This reverts commit df630d9428.
2021-05-08 23:32:52 +09:00
Bartłomiej Dach
df630d9428 Trim redundant this qualifier 2021-05-08 14:53:19 +02:00
Dean Herbert
54fe10c82a Refactor SliderSelectionBlueprint to not reference blueprint pieces for input handling 2021-05-07 10:36:03 +09:00
Dean Herbert
39067e6926 Fix slider input handling potentially being offset after composer area resize
Closes https://github.com/ppy/osu/issues/12671.
2021-05-06 17:19:19 +09:00
Dean Herbert
ec1c336b0a Fix a couple of inspections 2021-04-27 13:23:14 +09:00
Dean Herbert
89373638be Handle control point deletion when the resulting slider would be too short to be useful 2021-04-16 15:45:24 +09:00
Dean Herbert
2949a6bbdc Handle control point drag revert 2021-04-16 15:45:24 +09:00
Dean Herbert
d38e294d96 Centralise length validation function 2021-04-16 15:45:24 +09:00
Dean Herbert
965a1ead36 Disallow zero-length slider blueprint placements 2021-04-16 14:38:30 +09:00
Dean Herbert
5c0ef55691 Rename SliderPlacementState to make way for more generic version 2021-04-16 14:09:35 +09:00
Dean Herbert
fbc6fb8fc5 Split out common logic into private method and add inline comment for future visitors 2021-04-13 15:35:57 +09:00
Naxess
d9e3276d0e Don't update path type once immediately 2021-04-12 19:18:22 +02:00
Naxess
f64b2095bf Carry over the previous path type 2021-04-09 11:04:00 +02:00
Naxess
9a675a2219 Correct 4+ point perfect curves to Bezier 2021-04-08 12:33:43 +02:00
Naxess
be4520fe33 Fix index out of range possibility 2021-04-08 11:46:00 +02:00
Naxess
0341023d13 Improve UX of selecting PerfectCurve 2021-04-08 09:06:28 +02:00
Naxess
725edfcbf3 Add path type menu change method 2021-04-08 09:05:35 +02:00
Naxess
d6490899e2 Simplify slider path bindings
Adds a slight performance overhead, but solves the memory leak and makes the code much easier to follow.
2021-04-08 03:21:56 +02:00
Naxess
d1d56c636a Convert pathTypes to local variable
Not entirely sure what holds the reference to pathTypes now (the binding to`slider.Path.ControlPoints` maybe?), but this does seem to work still.
2021-04-08 01:43:06 +02:00
Naxess
b8ab1c7682 Track path type changes for PointsInSegment 2021-04-07 17:19:12 +02:00
Naxess
5022a78e80 Check current point instead of start point
Since each control point will call this when the path updates, the previous would correct the start segment 3 times instead of just once.

This fixes that.
2021-03-31 20:25:46 +02:00
Naxess
75b8f2535f Move updatePathTypes to PathControlPointPiece
Here we produce a local bound copy of the path version, and bind it to update the path type.

This way, if the path version updates (i.e. any control point changes type or position), we check that all control points have a well-defined path.

Additionally, if the control point piece is disposed of, the GB should also swoop up the subscription because of the local bound copy.
2021-03-31 20:09:56 +02:00
Naxess
51f0477df4 Move bounding box logic to framework 2021-03-26 04:42:46 +01:00
Naxess
ce9130ca50 Remove determinant limit
This has since been added into the framework through https://github.com/ppy/osu-framework/pull/4302
2021-03-25 17:38:55 +01:00
Naxess
9df059b01d Add bounding box limit 2021-03-24 17:25:28 +01:00
Naxess
e0240ab9d9 Increase exterior threshold 2021-03-24 05:55:34 +01:00
Naxess
4ae3eaaac6 Move path type correction
This is better because `PathControlPointVisualizer` is local to the editor, meaning there is no chance that this could affect gameplay.
2021-03-24 03:02:19 +01:00
Naxess
0bcd38e661 Simplify path type maintenance when dragging 2021-03-24 02:57:47 +01:00
Naxess
5ee280f941 Update PointsInSegment when adding/removing points
There was a bug where if you created a slider, moved the last point, and then added a point such that it became a PerfectCurve, it would fail to recover after becoming a Bezier.

This fixes that.
2021-03-24 02:56:32 +01:00
Naxess
067178e537 Maintain path type when dragging/placing 2021-03-22 15:59:06 +01:00
Bartłomiej Dach
e67c759eef Mark control point visualiser as possibly-null 2021-03-19 22:44:31 +01:00
Bartłomiej Dach
9634560d4b Fix control point visualiser crashing after deselections
`SliderSelectionBlueprint.OnDeselected()` would expire the
`ControlPointVisualiser` on deselection, leading to its removal from the
blueprint and eventual disposal, but still kept a separate reference to
said visualiser in another field.

This could lead to that stale reference to a disposed child getting read
in `ReceivePositionalInputAt()`, crashing quite a ways down over at the
framework side on futilely trying to compute the bounding box of a
drawable with no parent.
2021-03-19 21:40:22 +01:00
Dean Herbert
27c38db14d Add tooltips for slider path nodes which aren't inheriting 2021-03-19 16:58:08 +09:00
Dean Herbert
5f31304d05 Give each type of slider path type a unique colour to help visually distinguish them 2021-03-19 14:00:26 +09:00
smoogipoo
3aa3692ed4 Disable snaking out when tracking is disabled 2021-02-05 15:56:13 +09:00
Dean Herbert
02d2b2742b Fix selection box not updating with hitcircles/sliders far in the future or past 2021-01-18 16:57:36 +09:00
ekrctb
245be2c5ed Adjust namespace 2020-12-04 20:21:53 +09:00
Dan Balasescu
be3fed3072
Merge pull request #11024 from peppy/fix-slider-point-drag-offset
Fix slider control point dragging not correctly accounting for drag deadzone
2020-12-02 11:10:06 +09:00
Dean Herbert
b256c54619 Scale slider control point display in line with circle size 2020-12-01 14:17:36 +09:00
Dean Herbert
c8c1848bb8 Fix slider control point dragging not correctly accounting for drag deadzone 2020-12-01 13:46:30 +09:00
Dean Herbert
9811c46e35 Rename application method to better describe what it actually does 2020-11-26 19:16:18 +09:00
smoogipoo
96abee3fde Fix silent NRE in slider selection blueprint 2020-11-20 22:43:10 +09:00
Dean Herbert
b547abafb2 Fix slider right click context menus not being shown outside the valid playfield area
Closes #10816.
2020-11-20 13:46:23 +09:00
kamp
2d66423fbd Simplify inequality 2020-11-17 23:04:38 +01:00
kamp
c8fb49d540 Apply suggestions and remove redundant updateConnectingPath call 2020-11-17 22:23:46 +01:00
kamp
c6618f08aa Fix slider control point connections not being updated 2020-11-16 21:26:08 +01:00
kamp
42c543472d Remove unnecessary null coalesce 2020-11-07 01:56:41 +01:00
kamp
b47a2a03d5 Fix nullref when quickdeleting slider that hasn't been selected yet 2020-11-07 01:53:14 +01:00
Dan Balasescu
f230250faf
Merge branch 'master' into editor-slider-control-point-quick-delete 2020-11-06 21:47:37 +09:00
Dean Herbert
3f24fabb57 Add change handler support for contorl point deletion 2020-11-05 15:05:43 +09:00
Dean Herbert
242ec1ca82 Don't override PathControlPointVisualiser's positional handling
It turns out it was relying on this to deselect control points on
clicking away from them.
2020-11-05 14:58:30 +09:00
Dean Herbert
eed9894d3a Remove usage of case-when (caught me off-gaurd) 2020-11-05 13:58:41 +09:00
smoogipoo
9a7fcadabc Use BDL for top-level osu! DHOs 2020-11-05 13:51:46 +09:00
Dean Herbert
9f333ac58a Add the ability to delete slider control points using shift+right click
Closes https://github.com/ppy/osu/issues/10672.

In two minds about how this should be implemented but went in this
direction initially. The other way would be to add local handling of
Shift-Right Click inside PathControlPointPiece (which is already doing
mouse handling itself).
2020-11-03 20:46:33 +09:00
Dan Balasescu
ecfb7e94c5
Merge branch 'master' into fix-editor-batch-handling 2020-10-09 20:06:06 +09:00
Dean Herbert
a0af2eb6c8 Private protect setters 2020-10-09 16:54:43 +09:00
Dean Herbert
6b9e94ae93 Avoid retaining slider selection blueprints FBO backing textures after deselection 2020-10-09 14:05:00 +09:00
Dean Herbert
34d1439f8e Only update slider selection blueprints paths when visible 2020-10-09 14:04:26 +09:00
Dean Herbert
afed832b19 Tidy up EditorBeatmap slightly 2020-10-08 18:06:49 +09:00
Dean Herbert
63b5b8b841 Fix sliders not dragging correctly after snaking has begun
Closes #10278.
2020-09-28 17:33:00 +09:00
Dean Herbert
af30d1201f Fix slider path control point blueprint not working correctly 2020-05-22 18:57:28 +09:00
Dean Herbert
a9a1c00cf1 Move responsibility placement blueprint's StartTime set to within 2020-05-21 14:50:33 +09:00
Dean Herbert
82d6549161 Pass down snap result and remove local TimeAt usage 2020-05-20 21:01:29 +09:00
Dean Herbert
c46bfc2532 Create SnapResult class to hold various snapping results 2020-05-20 21:00:47 +09:00
Dean Herbert
3354d48a38 Change snapping to be screen space coordinate based 2020-05-20 21:00:29 +09:00
smoogipoo
8d5732aabd Make placements happen on mouse down 2020-04-23 12:17:11 +09:00
Dean Herbert
2b2ab2bf19 Show new segments as red points even when hovered 2020-04-13 21:59:23 +09:00
smoogipoo
4cfc686683 Fix excption with 0 control points 2020-04-13 21:41:18 +09:00
Dean Herbert
63de493c85
Merge branch 'master' into fix-red-point-placement 2020-04-13 20:56:50 +09:00
Dean Herbert
64422fbf6d
Merge pull request #8697 from smoogipoo/more-change-state-support
Add change state support to more Editor components
2020-04-13 20:19:04 +09:00
smoogipoo
9a65aa18d7 Fix connections hidden due to overlapping controlpoints 2020-04-13 16:13:14 +09:00
smoogipoo
2c20328a70 Rework control point placement for better progression 2020-04-13 15:31:46 +09:00
smoogipoo
e17d5bdbaf Improve red slider control point placement logic 2020-04-13 13:57:40 +09:00
smoogipoo
575b061dd7 Add change state support to more editor components 2020-04-09 22:02:42 +09:00
smoogipoo
ee6ea08cf8 Cleanup handling of hitobject updates 2020-04-09 20:16:44 +09:00
Dean Herbert
0fe41fd50a Fix blueprint showing even when mouse outside of container 2020-02-13 09:03:48 +09:00
Dean Herbert
e31d69c749 Add commit status to EndPlacement; call BeginPlacement on initial movement 2020-02-07 18:02:48 +09:00
smoogipoo
811ddb02a4 General refactoring 2020-01-24 17:50:36 +09:00