25afae5671
Fix broken test case
...
Seems this technically works, but only because of the edge case of being entirely linear, which the framework catches.
This fixes that.
2021-03-31 20:48:17 +02:00
7b684339ed
Undo public -> internal for PathControlPoint.Changed
...
No longer used.
2021-03-31 20:32:49 +02:00
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
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
1718084dbc
Update/remove determinant tests
...
We now only change the path type based on the bounding box.
If the control points are too linear, the framework now handles the fallback to Bezier.
2021-03-31 20:08:39 +02:00
70d5b616f2
Add scaling path type recovery
2021-03-29 15:49:49 +02:00
51f0477df4
Move bounding box logic to framework
2021-03-26 04:42:46 +01:00
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
9df059b01d
Add bounding box limit
2021-03-24 17:25:28 +01:00
0f4314c1d8
Add complete arc test
...
Ensures we can still make smaller circles properly.
2021-03-24 17:24:33 +01:00
b4dc35f66b
Update large arc tests
...
Should now be more robust and readable.
2021-03-24 17:24:05 +01:00
415797aadd
Fix broken control point drag test
...
Broken for 2 reasons:
- Assert checks the wrong control point.
- The exterior arc is now too big.
This fixes both.
2021-03-24 06:01:12 +01:00
e0240ab9d9
Increase exterior threshold
2021-03-24 05:55:34 +01:00
f80b3ada25
Add circular arc size tests
2021-03-24 05:54:48 +01:00
7b395ed783
Add exterior arc test
2021-03-24 05:15:50 +01:00
23a4d1c135
Shorten recovery test name
2021-03-24 05:15:28 +01:00
6fbe530016
Fix coordinates
2021-03-24 05:14:35 +01:00
847d44c7d9
Remove unnecessary length asserts
...
We don't actually care about the length (as this isn't what we're testing), just the type of the slider.
2021-03-24 05:13:37 +01:00
7bae4ff43d
Add control point dragging tests
2021-03-24 05:06:04 +01:00
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
0bcd38e661
Simplify path type maintenance when dragging
2021-03-24 02:57:47 +01:00
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
e922e67c98
Fix inverted return statement
...
Forgot to run tests, all passing now.
2021-03-22 19:48:21 +01:00
3fa5852e00
Add method documentation
2021-03-22 19:42:27 +01:00
b11fd7972a
Separate condition logic from math logic
2021-03-22 19:41:48 +01:00
92f713a30e
Improve fallback conditions
...
It's possible to create a `PerfectCurve` type path with more than 3 points currently, so this accounts for that.
2021-03-22 19:10:56 +01:00
80e7c3aba7
Invert if statement
2021-03-22 19:09:28 +01:00
6911a1b415
Fix missing newline
2021-03-22 19:03:55 +01:00
a7076c329c
Fix null checks
2021-03-22 17:32:55 +01:00
323b875cea
Fix newlines/spaces
2021-03-22 17:32:40 +01:00
15af57de95
Add path type recovery test
2021-03-22 15:59:59 +01:00
3bddc4a75d
Add path type test
2021-03-22 15:59:45 +01:00
067178e537
Maintain path type when dragging/placing
2021-03-22 15:59:06 +01:00
c82218627f
Add path type update logic
...
Only attempts to change points to bezier if points in the slider are modified.
2021-03-22 15:57:57 +01:00
7a2cb526e4
Add PointsInSegment method
2021-03-22 15:55:30 +01:00
bee2f55d00
Undo subpath limiting
2021-03-22 15:54:33 +01:00
fcd1f4930f
Fix freeze due to large circular arc radius
...
Seems to stem from the osu!framework's PathApproximator not catching a few edge cases wherein the radius approaches infinity.
2021-03-21 06:34:55 +01:00
a294f328fb
Add linear circular arc test
2021-03-21 06:30:17 +01:00
0bb6fbdd38
Merge pull request #12100 from bdach/invalid-thread-mutation-tablet
...
Fix transform mutations from invalid thread on tablet disconnection/reconnection
2021-03-20 21:30:12 +09:00
86b569f5f7
Fix typo in identifier
2021-03-20 12:37:51 +01:00
d28bed6ed2
Schedule adding transforms on tablet changes
...
Fixes `InvalidThreadForMutationException`s that pop up when
disconnecting/reconnecting tablets during the game's operation. In those
cases the value change callback executes from an OpenTabletDriver
thread.
2021-03-20 12:37:48 +01:00
b9b351311a
Merge pull request #11824 from peppy/fix-unsafe-skinnable-sample-play
...
Fix playing skinned samples being unsafe during skin changes
2021-03-20 11:29:34 +09:00
ca943a897a
Fix back to front initialisation order
2021-03-20 10:51:58 +09:00
e630c1be50
Merge pull request #12090 from bdach/overlapping-object-selection
...
Fix selection blueprint misbehaving with overlapping objects
2021-03-20 10:46:29 +09:00
dd48b68f8a
Ensure selected blueprints are given selection priority
2021-03-19 22:44:33 +01:00
8e0536e1e2
Add failing test scene
2021-03-19 22:44:33 +01:00
e67c759eef
Mark control point visualiser as possibly-null
2021-03-19 22:44:31 +01:00
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
d54e9ab481
Merge pull request #12077 from peppy/tablet-configuration
...
Add tablet configuration section
2021-03-19 21:49:32 +09:00
5a6ff53837
Merge pull request #12073 from peppy/fix-crash-toggle-overlay-before-loaded
...
Avoid potential crash if an overlay is toggled before it has been loaded
2021-03-19 21:38:47 +09:00