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

1220 Commits

Author SHA1 Message Date
Bartłomiej Dach
0efa028e0a
Restructure popover updates to be more centralised 2024-06-10 11:55:51 +02:00
OliBomby
e873698221 Add some in-depth xmldoc to GetSamples 2024-06-06 14:57:25 +02:00
OliBomby
fcc8671cbd undo useless change 2024-06-06 14:50:24 +02:00
OliBomby
71ce400359 Fix wasteful recreating of container 2024-06-06 14:48:17 +02:00
Bartłomiej Dach
7a8a37dae6
Use established constants 2024-06-06 13:42:31 +02:00
Bartłomiej Dach
86b13074a0
Merge branch 'master' into edit-nodesample 2024-06-06 13:42:25 +02:00
OliBomby
4f8c167cf9 clean up to match logic in CircularDistanceSnapGrid 2024-06-05 18:56:18 +02:00
OliBomby
d8994786f6 Merge remote-tracking branch 'upstream/master' into grids-2 2024-06-05 17:18:48 +02:00
Dean Herbert
212be6b9a7
Merge branch 'master' into grids-1 2024-06-05 15:20:04 +09:00
Bartłomiej Dach
f13ca28d5e
Fix performance overhead from ternary state bindable callbacks when selection is changing
Closes https://github.com/ppy/osu/issues/28369.

The reporter of the issue was incorrect; it's not the beat snap grid
that is causing the problem, it's something far stupider than that.

When the current selection changes,
`EditorSelectionHandler.UpdateTernaryStates()` is supposed to update the
state of ternary bindables to reflect the reality of the current
selection. This in turn will fire bindable change callbacks for said
ternary toggles, which heavily use `EditorBeatmap.PerformOnSelection()`.

The thing about that method is that it will attempt to check whether any
changes were actually made to avoid producing empty undo states, *but*
to do this, it must *serialise out the entire beatmap to a stream* and
then *binary equality check that* to determine whether any changes were
actually made:

	7b14c77e43/osu.Game/Screens/Edit/EditorChangeHandler.cs (L65-L69)

As goes without saying, this is very expensive and unnecessary, which
leads to stuff like keeping a selection box active while a taiko beatmap
is playing under it dog slow. So to attempt to mitigate that, add
precondition checks to every single ternary callback of this sort to
avoid this serialisation overhead.

And yes, those precondition checks use linq, and that is *still* faster
than not having them.
2024-06-04 10:32:12 +02:00
Bartłomiej Dach
4fcb902341
Merge branch 'master' into grids-1 2024-06-03 12:33:51 +02:00
Bartłomiej Dach
4c881b5633
Use better name if we're renaming 2024-05-29 09:40:29 +02:00
OliBomby
d143a697d2 refactor CanScaleFromPlayfieldOrigin and GetClampedScale to derived class 2024-05-28 17:12:16 +02:00
OliBomby
8eb23f8a60 remove redundant CanScaleFromSelectionOrigin 2024-05-28 16:19:57 +02:00
OliBomby
a89ba33b47 rename CanScaleSelectionOrigin/PlayfieldOrigin to make clear its not the origin being scaled 2024-05-28 16:14:16 +02:00
OliBomby
37530eebcc Enable scale buttons at the correct times 2024-05-25 20:35:06 +02:00
OliBomby
4eeebdf60c calculate max scale bounds for scale slider 2024-05-25 20:17:27 +02:00
OliBomby
497701950d fix nitpick 2024-05-24 18:11:28 +02:00
Bartłomiej Dach
9f19ab092d
Merge branch 'master' into grids-1 2024-05-24 14:39:55 +02:00
Bartłomiej Dach
8a2dd4d816
Merge branch 'master' into scaling 2024-05-23 15:10:40 +02:00
Bartłomiej Dach
128029e2af
Fix aspect ratio lock applying when shift pressed on a non-corner anchor
It doesn't make sense and it wasn't doing the right thing.
2024-05-23 15:08:43 +02:00
Bartłomiej Dach
9e86a08405
Simplify scale origin computation 2024-05-23 14:07:43 +02:00
Bartłomiej Dach
070668c96f
Use ShiftPressed instead of explicitly checking both physical keys
Not only is this simpler, but it also is more correct (for explanation
why, try holding both shift keys while dragging, and just releasing one
of them - the previous code would briefly turn aspect ratio off).
2024-05-23 13:57:34 +02:00
Dean Herbert
66ceda1d67
Update focus specifications in line with framework changes 2024-05-22 21:32:49 +08:00
Dean Herbert
d0b1ebff5a
Revert "Temporary rollback of framework / SDL3"
This reverts commit d7d569cf4e.
2024-05-22 16:29:39 +08:00
Dean Herbert
d7d569cf4e
Temporary rollback of framework / SDL3 2024-05-21 14:36:16 +08:00
OliBomby
c4ac6d20a0 fix code quality 2024-05-15 23:40:51 +02:00
OliBomby
8df5f22b4e Merge remote-tracking branch 'upstream/master' into scaling 2024-05-15 23:05:19 +02:00
Dan Balasescu
3b8b56cbcb
Apply required changes after framework masking updates 2024-05-09 20:18:53 +09:00
Dean Herbert
aa7b357063
Merge pull request #27768 from 64ArthurAraujo/editor-fix-sliders-same-start-time-merge
Fix merging sliders with the same `StartTime` causing a Unhandled Exception
2024-04-03 01:45:55 +08:00
Arthur Araujo
2a2a372595 Check if blueprint is in SelectionBlueprints before changing its depth 2024-04-02 07:45:27 -03:00
Nguyên Minh Hồ
9950395e5f Merge branch 'fix-rotate-editor-button-disabled' of https://github.com/honguyenminh/osu into fix-rotate-editor-button-disabled 2024-03-30 13:57:44 +07:00
Nguyên Minh Hồ
113dbcd10f
Merge branch 'master' into fix-rotate-editor-button-disabled 2024-03-30 13:56:31 +07:00
Dean Herbert
fd509c82f5
Adjust code structure slightly 2024-03-20 12:52:54 +08:00
Andrei Zavatski
7ca45c75b3 Don't iterate backwards on children without a reason 2024-03-18 20:46:38 +03:00
Andrei Zavatski
0edc249637 Make Timeline non-nullable 2024-03-18 20:38:19 +03:00
Andrei Zavatski
57399e9899 Merge branch 'master' into editor-performance 2024-03-18 20:34:48 +03:00
Andrei Zavatski
34a5e2d606 Don't update subtree masking in TimelineTickDisplay 2024-03-16 15:20:37 +03:00
Andrei Zavatski
981ee54cdc Fix transforms overhead in TimelineTickDisplay 2024-03-16 15:05:52 +03:00
Andrei Zavatski
e825db61ee Fix enumerator allocation 2024-03-16 12:26:56 +03:00
Andrei Zavatski
ea3a9314f9 Improve TimelineControlPointDisplay performance 2024-03-16 11:57:18 +03:00
Andrei Zavatski
6ecef33fd7 Fic incorrect ExtendableCircle gradient 2024-03-10 22:45:29 +03:00
Dan Balasescu
ca92a31cf9
Fix missing event unbinds 2024-03-07 21:10:11 +09:00
Dean Herbert
6455c0583b
Update usage of CircularProgress.Current 2024-03-06 12:13:10 +08:00
Andrei Zavatski
4cefa8bb8d Reduce allocations in TimelineBlueprintContainer 2024-02-21 23:13:10 +03:00
Andrei Zavatski
2543a48ac8 Apply padding to GridContainers directly 2024-02-20 23:18:37 +03:00
Berkan Diler
6adf0ac01e Use new LINQ Order() instead of OrderBy() when possible 2024-02-08 18:01:00 +01:00
Dan Balasescu
b44f77cee1
Update R# + fix inspections 2024-02-02 21:00:28 +09:00
OliBomby
576d6ff799 Fix masking in circular snap grid 2024-02-01 17:07:57 +01:00
OliBomby
f807a3fd97 Remove Masking from PositionSnapGrid
This caused issues in rendering the outline of the grid because the outline was getting masked at some resolutions.
2024-02-01 16:57:45 +01:00
OliBomby
1428cbfbc3 Remove Masking from PositionSnapGrid
This caused issues in rendering the outline of the grid because the outline was getting masked at some resolutions.
2024-02-01 16:56:57 +01:00
OliBomby
c2d57dc77c Merge remote-tracking branch 'upstream/master' into edit-nodesample 2024-01-25 11:33:29 +01:00
Nguyên Minh Hồ
d5b70ed09a Move CanRotatePlayfieldOrigin bindable to generic rotation handler 2024-01-25 16:58:44 +07:00
Nguyên Minh Hồ
e1f8bc9692 Rename CanRotate property of SelectionRotationHandler to a more descriptive name 2024-01-25 12:10:50 +07:00
Mike Will
9e1c242713 Prevent custom divisor ranges from halting preset cycling
A custom divisor like 24 or 32 will result in a range containing
many divisors that are already in the `Common` and `Triplets` presets.
When this happens, it can become impossible to cycle between presets,
because the preset can only be changed if the new divisor isn't already
contained within the current preset's range.
2024-01-24 18:31:39 -05:00
Salman Ahmed
2bd9cd5d34 Fix blueprint container not handling right clicks correctly while moveing an element 2024-01-22 04:39:08 +03:00
OliBomby
78e87d379b fix divide by zero 2024-01-20 16:53:11 +01:00
OliBomby
5f40d3aed9 rename variable 2024-01-20 16:29:26 +01:00
OliBomby
9b9485f656 fix adjust axes detection 2024-01-20 15:39:38 +01:00
OliBomby
1596776a81 fix imports 2024-01-20 15:15:49 +01:00
OliBomby
0fc448f4f3 fix adjusting scale from anchor 2024-01-20 15:12:48 +01:00
OliBomby
6a4129dad8 fix aspect ratio transform 2024-01-20 15:11:35 +01:00
OliBomby
fcaa5ec20e remove debug logs 2024-01-20 13:26:08 +01:00
OliBomby
6a57be0a50 clean up code and fix flipping 2024-01-20 13:04:05 +01:00
OliBomby
a4f771ec08 refactor CanScale properties 2024-01-20 01:13:01 +01:00
OliBomby
26c0d1077a Refactor scale handling in editor to facilitate reuse 2024-01-20 00:22:53 +01:00
Dean Herbert
bdfaa4b583
Fix crash when dragging rotation control in editor with both mouse buttons
Closes https://github.com/ppy/osu/issues/26325.
2024-01-03 13:34:50 +09:00
OliBomby
6bb72a9fcc Revert "Remove other grid types"
This reverts commit de14da95fa.
2024-01-01 15:46:07 +01:00
OliBomby
de14da95fa Remove other grid types 2024-01-01 15:44:20 +01:00
OliBomby
f649fa106f Added bindables and binding with BindTo 2024-01-01 15:13:11 +01:00
OliBomby
d0ca3f2b2b Add circular grid 2024-01-01 15:13:11 +01:00
OliBomby
847f04e63a reduce opacity of middle cardinal lines 2024-01-01 15:13:10 +01:00
OliBomby
8a331057b0 Make it actually possible to change grid type 2024-01-01 15:13:10 +01:00
OliBomby
f223487e1c improve code 2024-01-01 15:13:10 +01:00
OliBomby
0ce1a48e68 Add comment 2024-01-01 15:13:10 +01:00
OliBomby
a20c430d6f fix wrong grid cache being used 2024-01-01 15:13:10 +01:00
OliBomby
d0c8b285ce clean up code duplication 2024-01-01 15:13:10 +01:00
OliBomby
92c3b142a4 Added Triangular snap grid 2024-01-01 15:11:50 +01:00
OliBomby
f2edd705ea add rotation to snapped position 2024-01-01 15:11:49 +01:00
OliBomby
f3b88c318b Add rotation to snap grid visual 2024-01-01 15:11:49 +01:00
Bartłomiej Dach
99cddb6317
Use alternative workaround 2023-12-29 11:07:45 +01:00
Bartłomiej Dach
cd1f6b46c4
Fix crash after changing audio track in editor
Closes https://github.com/ppy/osu/issues/26213.

Reproduction scenario: switch audio track in editor after timeline
loads.

Happens because `beatmap.Value.Track.Length` is 0 immediately after a
track switch, until BASS computes the actual track length on the audio
thread.

Yes this is a hack. No I have no better immediate ideas how to address
this otherwise.
2023-12-29 10:37:36 +01:00
Bartłomiej Dach
288ac930e4
Use new icons in editor
Some that exist on figma are purposefully not used due to an editorial
request from @peppy.
2023-12-27 17:42:18 +01:00
Dean Herbert
f9e47242db
Add visual offset to better align editor waveforms with expectations 2023-12-26 17:44:49 +09:00
OliBomby
c167f10ad5 fix crash from dragging near zero-length repeating object in timeline 2023-12-19 21:20:45 +01:00
Bartłomiej Dach
d83b2e24e7
Merge pull request #25371 from RatinFX/open-editor-timestamp
Implement opening editor timestamp links
2023-11-21 15:48:36 +09:00
Bartłomiej Dach
234ef6f923
Rectify selection keep-alive logic 2023-11-20 21:57:14 +09:00
Dean Herbert
35e11c7c63
Rename diagonal scale variable and update xmldoc 2023-11-10 17:55:02 +09:00
Dean Herbert
ec3b6e47fb
Change selection handling to adjust Size instead of Scale for edge nodes 2023-11-10 14:22:28 +09:00
ratinfx
bdbeb2bce4 Renamed CollectionChanged event handler 2023-11-07 11:11:32 +01:00
ratinfx
44f127c8a8 Renamed method and made private 2023-11-07 01:02:45 +01:00
ratinfx
277cf7dc12 Ensure every SelectedItem is alive and has Blueprint 2023-11-05 18:26:51 +01:00
Bartłomiej Dach
144006fbe8
Update autoselect implementation to work correctly with framework changes 2023-10-31 08:38:22 +01:00
Bartłomiej Dach
8a68333425
Merge branch 'master' into beat-divisor-select-text-on-click 2023-10-31 08:36:53 +01:00
Dean Herbert
63e6eaf538
Fix failing tests 2023-10-30 18:06:11 +09:00
Dean Herbert
57d88a0ac4
Fix right clicks on timeline objects potentially getting eaten by playfield area
`SelectionHandler` is receiving input from anywhere out of necessity:

19f892687a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs (L119-L125)

Also important is that `BlueprintContainer` will selectively not block
right clicks to make sure they fall through to the
`ContextMenuContainer`:

19f892687a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs (L122-L126)

But because the whole editor is sharing a `ContextMenuContainer` and
it's at a higher level than both components, we observe here the
playfield's `SelectionHandler` intercepting the right click before it
can reach the `ContextMenuContainer`.

The fix here is similar to what we're already doing in
`TimelineBlueprintContaienr`.
2023-10-30 18:06:11 +09:00
Bartłomiej Dach
12282fff5c
Disallow setting sample volume lower than 5% in editor 2023-10-20 15:50:21 +02:00
Dean Herbert
52c2eb93de
Merge branch 'master' into taiko-beat-snap-grid 2023-10-19 23:53:01 +09:00
Dean Herbert
5341a335a6
Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
Dean Herbert
2a89a25790
Add beat snap grid to osu!taiko editor
Addresses https://github.com/ppy/osu/discussions/25150.
2023-10-17 16:59:56 +09:00
Dean Herbert
1b9acdf55c
Abstract out common implementation of BeatSnapGrid 2023-10-17 16:42:52 +09:00
Dean Herbert
1a37543d28 Rename SliderVelocity to SliderVelocityMultiplier to distinguish from Velocity 2023-09-06 19:01:08 +09:00
Hồ Nguyên Minh
d5a89c4c45 Fix formatting 2023-09-04 13:32:42 +07:00
Hồ Nguyên Minh
b17a55d6a8 Add length check for slider velocity 2023-09-04 10:43:05 +07:00
Wleter
fc4069f794 let SelectionBox perform flip with scale handles 2023-09-01 13:01:51 +02:00
Wleter
14ee0ee395
Merge branch 'ppy:master' into skin-editor-selection-negative-scaling 2023-08-29 17:30:55 +02:00
Wleter
d56ab0fe9a change names 2023-08-29 17:25:52 +02:00
Wleter
07e126241d working negative scaling 2023-08-28 16:41:55 +02:00
Dean Herbert
081fb308e1 Merge branch 'master' into new-overlay-sfx 2023-08-24 18:29:00 +09:00
Jamie Taylor
d10d7b6ea4
Change some component samples to go better with overlay pop-in samples 2023-08-17 18:36:37 +09:00
OliBomby
88e6fe72dc fix code quality 2023-08-16 23:09:04 +02:00
OliBomby
fd54c329fa dont focus volume, so keybinds immediately available 2023-08-16 22:08:49 +02:00
OliBomby
a938b810b4 Add keybind for bank setting 2023-08-16 22:07:36 +02:00
OliBomby
02b7c8f27b Move sliderbody hs to middle of first span 2023-08-16 21:15:47 +02:00
Bartłomiej Dach
19f892687a
Add precise rotation control to osu! editor 2023-08-16 11:37:52 +02:00
Dean Herbert
f06b203067
Merge branch 'master' into edit-nodesample 2023-07-31 14:06:38 +09:00
Bartłomiej Dach
ebe5dd2ac9
Interface with SelectionRotationHandler via DI rather than explicit passing 2023-07-30 20:21:41 +02:00
Bartłomiej Dach
262f25dce8
Make SelectionRotationHandler a Component 2023-07-30 20:18:33 +02:00
Bartłomiej Dach
821cd08f34
Merge branch 'master' into selection-operations-refactor 2023-07-30 19:29:06 +02:00
Bartłomiej Dach
c6f0cf50ca
Use better safety in rectangular grid
- Checking `DrawSize != Vector2.Zero` is too specific. It could also
  crash on zero-height-but-non-zero-width, or
  zero-width-but-non-zero-height.

- Take the `gridCache.Validate()` call out of the zero checks, because
  even if the width or height are zero, not generating anything is valid
  and there is no reason to validate every frame until `gridCache` gets
  invalidated again.
2023-07-28 22:57:02 +02:00
Dean Herbert
0e4db9b439 Add safety in RectangularPositionSnapGrid that size is greater than zero
Would crash otherwise
2023-07-28 16:25:40 +09:00
Dean Herbert
7fd6bb9d5f Fix a couple of code style issues in SelectionBox 2023-07-26 14:04:38 +09:00
Dean Herbert
39c2bb240b Apply NRT to SelectionBoxRotationHandle. 2023-07-26 14:04:21 +09:00
Dean Herbert
eac6271bd0 Add new property to avoid overlapping usages 2023-07-25 18:14:03 +09:00
Bartłomiej Dach
a201152b04
Add xmldoc to SelectionRotationHandler 2023-07-23 20:56:22 +02:00
Bartłomiej Dach
aec3ca250c
Migrate SelectionHandler to use SelectionRotationHandler 2023-07-23 20:56:22 +02:00
Bartłomiej Dach
ba8ebefb50
Add basic structure for new rotation handler 2023-07-23 20:56:22 +02:00
Bartłomiej Dach
4622255cc7
Move out helper methods to static class 2023-07-23 18:24:20 +02:00
Dean Herbert
cdcb10e0e7 Fix timeline centre point being ever-so-slight off 2023-07-21 15:26:41 +09:00
Dean Herbert
f489dbd7a9 Reduce width of right toolbar ever so slightly (and use more shared constants) 2023-07-21 14:39:15 +09:00
Dean Herbert
ca3d1538ae Merge branch 'master' into editor-metrics 2023-07-21 14:26:32 +09:00
Bartłomiej Dach
07e0a703d7
Adjust inline comment 2023-07-20 20:51:39 +02:00
Bartłomiej Dach
708dd355cd
Merge branch 'master' into editor-cyclic-selection 2023-07-20 20:19:46 +02:00
Bartłomiej Dach
511948ba56
Add xmldoc to ApplySelectionOrder() 2023-07-20 19:16:04 +02:00
Dean Herbert
cf3949c9e2 Fix double-click handling when cyclic selection is enabled
Removes the limitations of cyclic selection as a result.
2023-07-19 17:21:20 +09:00
Dean Herbert
5ade093c5a Change editor to always perform selection of closest object 2023-07-19 16:56:16 +09:00
Dean Herbert
57abb15724 Update design of timeline centre marker and adjust surrounding paddings 2023-07-14 16:37:57 +09:00
Dean Herbert
00e9746174 Implement longer design for timing point piece 2023-07-14 16:37:56 +09:00
Dean Herbert
01750dd091 Update metrics of checkboxes and backgrounds to match design better 2023-07-14 14:29:02 +09:00
Dean Herbert
5b2e704264 Move beat divisor control inside of TimelineArea and adjust metrics to match design 2023-07-14 14:19:04 +09:00
Dean Herbert
ebaf63b764 Apply NRT to timeline related classes 2023-07-14 14:04:12 +09:00
Dean Herbert
56acc9e3dd Change BeatDivisorControl to retrive bindable divisor via DI 2023-07-14 14:03:25 +09:00
Bartłomiej Dach
9eec1337b3
Use slightly different condition for better UX 2023-07-01 21:39:08 +02:00
Bartłomiej Dach
183777f8df
Fix edge cases where selection buttons go outside playfield bounds
Addresses
https://github.com/ppy/osu/discussions/23599#discussioncomment-6300885.
2023-07-01 21:27:17 +02:00
Bartłomiej Dach
e4e08c0f5f
Fix selection handlers eating hotkey presses they didn't handle 2023-06-28 20:48:22 +02:00
Dean Herbert
29376ffcc0 Trigger state change when flipping via hotkey in the editor
This will trigger a change even if nothing happens. But I think that's
okay (not easy to avoid) because the change handler should be aware that
nothing changed, if anything.

Closes https://github.com/ppy/osu/issues/24065.
2023-06-28 13:52:51 +09:00
Bartłomiej Dach
9be2d9d62e
Fix hotkey presses generating unnecessary undo history
The buttons don't check whether the operation they correspond to is
possible to perform in the current state of the selection box, so not
checking `Can{Reverse,Rotate}` causes superfluous undo states to be
added without any real changes if an attempt is made to reverse or
rotate a selection that cannot be reversed or rotated.
2023-06-27 22:25:04 +02:00
Bartłomiej Dach
17ed45d07c
Mention hotkeys in button tooltips 2023-06-27 22:04:15 +02:00
Bartłomiej Dach
54280f06be
Switch to == true 2023-06-27 22:02:15 +02:00
Bartłomiej Dach
ad3a470eaf
Enable NRT in SelectionBox 2023-06-27 22:01:44 +02:00