1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-12 20:13:20 +08:00
Commit Graph

13 Commits

Author SHA1 Message Date
Bartłomiej Dach
18f1d62182
Fix juice stream placement blueprint being initially visually offset
- Closes https://github.com/ppy/osu/issues/31423.
- Regressed in https://github.com/ppy/osu/pull/30411.

Admittedly, I don't completely understand all of the pieces here,
because code quality of this placement blueprint code is ALL-CAPS
ATROCIOUS, but I believe the failure mode to be something along the
lines of:

- User activates juice stream tool, blueprint gets created in initial
  state. It reads in a mouse position far outside of the playfield, and
  sets internal positioning appropriately.
- When the user moves the mouse into the bounds of the playfield, some
  positions update (the ones inside `UpdateTimeAndPosition()`, but the
  fruit markers are for *nested* objects, and
  `updateHitObjectFromPath()` is responsible for updating those...
  however, it only fires if the `editablePath.PathId` changes, which it
  won't here, because there is only one path vertex until the user
  commits the starting point of the juice stream and it's always at
  (0,0).
- Therefore the position of the starting fruit marker remains bogus
  until left click, at which point the path changes and everything
  returns to *relative* sanity.

The solution essentially relies on inlining the broken method and only
guarding the relevant part of processing behind the path version check
(which is actually updating the path). Everything else that can touch
positions of nesteds (like default application, and the drawable piece
updates) is allowed to happen unconditionally.
2025-01-09 09:37:57 +01:00
Bartłomiej Dach
659505f711
Adjust calls to GetContainingInputManager() 2024-06-18 07:41:19 +02:00
OliBomby
ec578e1d9f fix near-zero length sliders n stuff being placeable 2023-12-19 21:20:21 +01:00
Dean Herbert
f443cfb93e Move blueprint validity conditions to allow more correct external usage of EndPlacement
Until now, these were haphazardly enforce inline in blueprint
implementations. The only thing stopping complete breakage is that
`EndPlacement` wasn't called (too much) from outside the blueprint,
leaving them responsible for their own placement.

By moving this conditional out of the provided paramters to
`EndPlacement`, it allows more flexible usage of that method externally.
Coming in a future PR.
2023-05-12 16:02:22 +09:00
ekrctb
a75fc5108a Remove #nullable disable from Catch.Edit namespace 2023-01-15 17:29:32 +09:00
Dan Balasescu
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Dean Herbert
c7e9bd7751
Merge branch 'master' into catch-editor-per-object-sv 2022-05-09 19:18:01 +09:00
ekrctb
4e0155fa4b Make JuiceStreamPath time based instead of distance based.
And remove the "slope limit" feature.
TODO: for a juice stream with a large slope, the slider velocity of the hit object should be changed.
2022-05-08 22:36:33 +09:00
ekrctb
125628dd20 Fix hit object not shown in timline while placement is waiting 2022-05-08 15:52:14 +09:00
ekrctb
d49d303bae Call GetContainingInputManager at LoadComplete 2021-07-23 10:10:55 +09:00
ekrctb
64102d2972 Add initial implementation of juice stream placement 2021-07-22 15:47:23 +09:00
ekrctb
2beef89c23 Add empty juice stream placement blueprint (no implementation) 2021-07-22 15:47:23 +09:00