1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-16 03:47:26 +08:00
Commit Graph

3024 Commits

Author SHA1 Message Date
Dean Herbert
b5bb94e4ec
Merge branch 'master' into file-mounting-v3 2024-07-11 15:54:54 +09:00
Dan Balasescu
00cab0ec0a
Merge pull request #28809 from bdach/mania-timeline-zooms-composer
Match mania editor playfield time range with timeline zoom
2024-07-11 15:41:26 +09:00
Dean Herbert
bdbdc3592e
Move full export async flow inside screen and add error handling 2024-07-11 14:27:12 +09:00
Dean Herbert
599a765fd1
Add confirmation before saving for external edit 2024-07-11 12:20:33 +09:00
Dean Herbert
cd6b0e875a
Simplify save dialogs 2024-07-11 12:15:17 +09:00
Dean Herbert
b0d6c8ca6d
Abort operation on save failure 2024-07-11 11:42:06 +09:00
Bartłomiej Dach
92dc125d39
Match mania editor playfield time range with timeline zoom 2024-07-10 17:36:39 +02:00
Dean Herbert
b58ba5f5f1
Just give in to silly code quality inspection 2024-07-10 23:02:19 +09:00
Bartłomiej Dach
c8a64c5950
Remove setup screen controls that do nothing useful
Before I go with a hammer to redesign these, I want to remove stuff that
does nothing first.

Hard-breaks API to allow rulesets to specify an enumerable of custom
sections rather than two specific weird ones.

For specific rulesets:

- osu!:
  - Stack leniency slider merged into difficulty section.
- osu!taiko:
  - Approach rate and circle size sliders removed.
  - Colours section removed.
- osu!catch:
  - No functional changes.
- osu!mania:
  - Special style toggle merged into difficulty section.
  - Colours section removed.
2024-07-10 14:53:16 +02:00
Salman Ahmed
ce93455aa8 Extend behaviour to sample edit popover 2024-07-10 15:16:10 +03:00
Dean Herbert
b6741ee4ea
Fix back-to-front exit blocking conditionals 2024-07-10 20:00:34 +09:00
Dean Herbert
1381b3c0c5
Merge pull request #28801 from bdach/break-generation-caching
Improve performance of automatic break regeneration
2024-07-10 19:21:16 +09:00
Bartłomiej Dach
b881c25b17
Pool summary timeline break visualisations to reduce allocations 2024-07-10 11:42:28 +02:00
Bartłomiej Dach
343090e3b1
Do not regenerate breaks unless meaningful change to object start/end times is detected
Tangentially found when profiling https://github.com/ppy/osu/pull/28792.

For reproduction, import https://osu.ppy.sh/beatmapsets/972#osu/9007,
move any object on the playfield, and observe a half-second freeze
when ending the drag.
2024-07-10 11:42:25 +02:00
Dean Herbert
aa16c72e06
Add test coverage of external editing 2024-07-10 18:34:47 +09:00
Dean Herbert
3beca64cc5
Attempt to stay on correct difficulty 2024-07-10 18:34:46 +09:00
Dean Herbert
27ab54882b
Add loading segments and tidy things up 2024-07-10 18:34:46 +09:00
Dean Herbert
74aa05fa6e
Improve UX and styling of external edit screen 2024-07-10 18:34:45 +09:00
Dean Herbert
118162c631
Add sub screen to limit user interactions 2024-07-10 18:34:45 +09:00
Dean Herbert
d3c66e2404
Add basic flow for mounting beatmaps for external editing 2024-07-10 18:29:51 +09:00
Bartłomiej Dach
95783bd6c2
Merge pull request #28789 from peppy/fix-deletes-reappearing
Fix deleted beatmap sets potentially reappearing due to pending update requests
2024-07-10 09:14:10 +02:00
Dean Herbert
0e2e44a2f5
Add failing test case showing editor save then delete failure 2024-07-09 20:41:22 +09:00
OliBomby
306dc37ab5 Make hit object and sample point seek keybinds configurable 2024-07-09 12:28:23 +02:00
Bartłomiej Dach
ca4c0aa7e2
Remove unused using 2024-07-09 10:57:21 +02:00
Bartłomiej Dach
5d5dd0de00
Redesign bottom timeline pieces to match stable better 2024-07-09 09:25:22 +02:00
Bartłomiej Dach
29b8948609
Slim down bottom timeline
This removes the BPM display, which is commonly cited to have
no functional purpose by users, and reduces the height of the bottom bar
in exchange for more space for the playfield.
2024-07-09 09:25:22 +02:00
Bartłomiej Dach
50818da166
Ensure timeline ticks aren't hidden by other pieces
Addresses https://github.com/ppy/osu/issues/28667.
2024-07-09 09:25:22 +02:00
Dean Herbert
aadcc5384d
Adjust editor transparent tweens to be less "flashy"
Touched on in https://github.com/ppy/osu/discussions/28581.

After a bit more usage of the editor I do agree with this and think that
making the fades a bit more gentle helps a lot.
2024-07-09 16:16:19 +09:00
Dan Balasescu
9c2a0576fb
Merge pull request #28776 from bdach/fix-composer-disappearing
Fix composer disappearing when undoing change to control points
2024-07-09 00:54:38 +09:00
Bartłomiej Dach
275b959c02
Fix composer disappearing when undoing change to control points
As mentioned in https://github.com/ppy/osu/issues/28752.
Regressed in https://github.com/ppy/osu/pull/28444.
2024-07-08 16:28:54 +02:00
Bartłomiej Dach
877b5768fc
Merge branch 'master' into sorted-breaks 2024-07-08 15:59:32 +02:00
Salman Ahmed
b33e54d064 Enforce IBeatmap.Breaks to be sorted chronologically 2024-07-08 16:06:38 +03:00
Bartłomiej Dach
2cad8d3684
Merge branch 'master' into time-accurate 2024-07-08 14:19:57 +02:00
OliBomby
2822ba2377 Fix CurrentTimeAccurate being inaccurate if seeking smoothly in the same frame and a transform is already active 2024-07-08 13:30:11 +02:00
Bartłomiej Dach
0fe2c45e1d
Fix editor playback control not removing correct adjustment
Closes https://github.com/ppy/osu/issues/28768.

great job past me 🤦🤦🤦🤦🤦🤦🤦🤦🤦🤦🤦
2024-07-08 13:21:42 +02:00
Dan Balasescu
b2bdb67a3e
Merge pull request #28765 from bdach/editor-menu-max-height
Fix editor menus overflowing off screen
2024-07-08 19:13:30 +09:00
Bartłomiej Dach
db7774485a
Fix editor player crashing with UR counter present in skin
Closes https://github.com/ppy/osu/issues/28764.
2024-07-08 11:14:32 +02:00
Bartłomiej Dach
2ceedb0f93
Fix editor menus overflowing off screen
Closes https://github.com/ppy/osu/issues/28750.

Yes this is not the perfect change to fix this (which would probably be
some framework change to take bounds of the parenting input manager into
account). I really do not want to go there and would like to just fix
this locally and move on. Due to the game-wide scaling container this
sorta works for any resolution anyhow.
2024-07-08 11:05:39 +02:00
OliBomby
f36321a8ea allow alt scroll for volume in editor 2024-07-07 21:33:43 +02:00
OliBomby
ba44757c86 clarify logic 2024-07-05 15:24:39 +02:00
OliBomby
c05f48979b fix naming violation 2024-07-05 14:33:05 +02:00
OliBomby
8d46d6c697 always seek on click 2024-07-05 14:18:17 +02:00
OliBomby
7d6ade7e84 shift alt seek to open next sample edit popover 2024-07-05 14:16:51 +02:00
OliBomby
98610f4f6d alt left/right or scroll to seek to neighbouring hit objects 2024-07-05 12:41:50 +02:00
Bartłomiej Dach
4c59ec1d94
Fix incorrect ternary state computation for bank toggles
Closes https://github.com/ppy/osu/issues/28741.

Regressed in a7b066f3ee.

The intent of the original change there was to ensure that addition
banks being set will put the ternary state toggles in indeterminate
state (to at least provide a visual indication that the selection does
not use a single bank). This would previously not be the case due to
the use of `.All()` in the original condition (a single object/node
was considered to have a bank enabled if and only if *all* samples
within it used it). However the attempt to fix that via switching
to `Any()` was not correct.

The logic used in the offending commit operates on extracted `Samples`
and `NodeSamples` from the selection, and would consider the ternary
toggle:

- fully off if none of the samples/node samples contained a sample with
  the given bank,
- indeterminate if the some of the samples/node samples contained a
  sample with the given bank,
- fully on if at least one sample from every samples/node samples
  contained a sample with the given bank.

This is a *two-tiered* process, as in first a *binary* on/off state is
extracted from each object's samples/node samples, and *then* a ternary
state is extracted from all objects/nodes. This is insufficient to
express the *desired* behaviour, which is that the toggle should be:

- fully off if *none of the individual samples in the selection* use
  the given bank,
- indeterminate if *at least one individual sample in the selection*
  uses the given bank,
- fully on if *all individual samples in the selection* use the given
  bank.

The second wording is flattened, and no longer tries to consider "nodes"
or "objects", it just looks at all of the samples in the selection
without concern as to whether they're from separate objects/nodes
or not.

To explain why this discrepancy caused the bug, consider a single object
with a `soft` normal bank and `drum` addition bank. Selecting the object
would cause a ternary button state update; as per the incorrect logic,
there were two samples on the object and each had its own separate
banks, so two ternary toggles would have their state set to `True`
(rather than the correct `Indeterminate`), thus triggering a bindable
feedback loop that would cause one of these banks to win and actually
overwrite the other.

Note that the addition indeterminate state computation *still* needs
to do the two-tiered process, because there it actually makes sense (for
a selection to have an addition fully on rather than indeterminate,
*every* object/node *must* contain that addition).
2024-07-05 09:27:21 +02:00
Salman Ahmed
207ee8a2ee Fix editor not updating ruleset when switching difficulty 2024-07-04 14:06:36 +03:00
OliBomby
b9c6674a58 Allow seeking to sample point on double-click 2024-07-04 11:47:45 +02:00
Dean Herbert
a4c575f77a
Merge pull request #28521 from bdach/tempo-adjust-editor
Change editor speed adjustment back to adjusting tempo
2024-07-04 16:42:55 +09:00
Dean Herbert
3f138489a1
Merge pull request #28509 from bdach/slider-anchor-type-switching
Add ability to cycle slider control point types via keyboard
2024-07-04 16:11:37 +09:00
Dean Herbert
73d71d3d77
Merge pull request #28705 from bdach/editor-test-play
Reimplement missing gameplay test hotkeys from stable
2024-07-04 13:44:25 +09:00
Dean Herbert
88375694a3
Merge branch 'master' into slider-anchor-type-switching 2024-07-03 22:36:57 +09:00
Bartłomiej Dach
e73faaefd2
Merge branch 'master' into editor-test-play 2024-07-03 13:54:47 +02:00
Dean Herbert
56cdd83451
Adjust padding and round corners of hover layer 2024-07-03 20:42:34 +09:00
Dean Herbert
5f56ed6872
Merge branch 'master' into navigate-to-timestamp 2024-07-03 20:42:32 +09:00
Bartłomiej Dach
17ce9cd162
Merge branch 'master' into grids-2 2024-07-03 10:57:05 +02:00
Dean Herbert
824a00b018
Merge pull request #28707 from bdach/remove-breaks
Add option to remove breaks via timeline context menu
2024-07-03 16:29:25 +09:00
Dean Herbert
abfcac7466
Fix nullability 2024-07-03 15:31:46 +09:00
Dean Herbert
b6dc483fc1
Add missing change handler to ensure undo/redo works for break removal 2024-07-03 14:23:31 +09:00
Salman Ahmed
cb350470e5
Merge branch 'master' into update-framework-has-flag 2024-07-03 07:06:13 +03:00
Dean Herbert
5350945340
Update HasFlag usages 2024-07-03 00:19:04 +09:00
Bartłomiej Dach
a7b066f3ee
Include node samples when changing additions and banks 2024-07-02 16:22:15 +02:00
Bartłomiej Dach
9414aec8bf
Add capability to remove breaks via context menu 2024-07-02 14:55:04 +02:00
Bartłomiej Dach
d85c467856
Implement quick exit hotkeys for editor test play 2024-07-02 14:34:36 +02:00
Bartłomiej Dach
e28befb98d
Implement quick pause toggle for editor test play 2024-07-02 14:34:35 +02:00
Bartłomiej Dach
1e4db77925
Implement autoplay toggle for editor test play
Contains some hacks to fix weird behaviours like rewinding to the start
on enabling autoplay, or gameplay cursor hiding.
2024-07-02 14:34:31 +02:00
Dan Balasescu
31edca866c
Remove unused code 2024-07-02 12:21:24 +09:00
Dan Balasescu
04da1209f7
Revert "Change breaks list to IReadOnlyList"
This reverts commit 2c3b411bb5.
2024-07-02 12:16:11 +09:00
Dean Herbert
2c3b411bb5
Change breaks list to IReadOnlyList 2024-07-02 11:59:24 +09:00
Dean Herbert
005af280f2
Isolate bindable breaks list to EditorBeatmap 2024-07-02 11:31:55 +09:00
Dan Balasescu
f942595829
Fix ManiaModInvert permanently messing up the beatmap 2024-07-01 15:02:00 +09:00
Dean Herbert
8bb51d5a4f
Fix summary timeline not correctly updating after changes to breaks
Closes https://github.com/ppy/osu/issues/28678.

Oops.
2024-06-30 20:32:16 +09:00
Bartłomiej Dach
a3ea36d2b2
Fix formatting 2024-06-28 09:45:45 +02:00
Bartłomiej Dach
7ac5bd4d37
Ensure past drawable objects also get their results populated in editor test play 2024-06-28 09:37:10 +02:00
Bartłomiej Dach
b36e0f0875
Merge branch 'master' into fix/editor-test-exit 2024-06-28 09:17:40 +02:00
Bartłomiej Dach
1b741dada3
Show distance in pixels to previous/next object in osu! hitobject inspector 2024-06-27 14:46:57 +02:00
Bartłomiej Dach
e35744118c
Merge pull request #28638 from OliBomby/beat-divisor
Fix editor not loading arbitrary beat divisors
2024-06-27 13:31:44 +02:00
OliBomby
29412bb29b Fix editor setting arbitrary beat divisor 2024-06-27 12:22:00 +02:00
Dean Herbert
76a1f19233
Merge pull request #28613 from bdach/control-point-table-is-bad
Improve performance of editor tables
2024-06-27 18:22:56 +09:00
Bartłomiej Dach
9384cbcdd8
Fix scroll-into-view on control point table not working as it is supposed to 2024-06-27 09:46:35 +02:00
Bartłomiej Dach
a5aedded16
Remove commented code 2024-06-27 09:44:55 +02:00
Bartłomiej Dach
b1baa49459
Add note about implicit reliance on sort by start time 2024-06-27 07:56:57 +02:00
Bartłomiej Dach
ef952bcd65
Use GetLastObjectTime() for safety
Due to other circumstances this has no real effect, but may as well.
2024-06-27 07:48:06 +02:00
Dean Herbert
7ef7e5f163
Fix break generation not accounting for concurrent hitobjects correctly 2024-06-27 12:10:26 +09:00
Bartłomiej Dach
9dfd6cf9ef
Remove EditorTable
Begone, foul beast.
2024-06-26 10:40:02 +02:00
Bartłomiej Dach
b12db8fbe2
Rewrite IssueTable to use virtualised list 2024-06-26 10:40:02 +02:00
Bartłomiej Dach
5c2d446767
Rewrite ControlPointTable to use virtualised list 2024-06-26 10:40:02 +02:00
Bartłomiej Dach
2fda45cad4
Fix crashes when opening scale/rotation popovers during selection box operations 2024-06-25 15:20:59 +02:00
Bartłomiej Dach
fae6dcfffa
Remove manual breaks at the start/end of beatmap
This is the secondary cause of https://github.com/ppy/osu/issues/28577,
because you could do the following:

- Have a break autogenerate itself
- Adjust either end of it to make it mark itself as manually-adjusted
- Remove all objects before or after said break

to end up in a state wherein there are no objects before or after a
break.

The direct fix is still correct because it is still technically possible
to end up in a state wherein a break is before or after all objects
(obvious one is manual `.osu` editing), but this behaviour is also
undesirable for the autogeneration logic.
2024-06-25 12:49:17 +02:00
Bartłomiej Dach
03cdfd0660
Fix timeline break piece crashing on drag if there are no objects before start or after end
This fixes the direct cause of https://github.com/ppy/osu/issues/28577.
2024-06-25 12:25:37 +02:00
Olivier Schipper
74399542d2
Use math instead of hardcoded constant values
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2024-06-20 17:27:15 +02:00
Dean Herbert
57774ae767
Merge branch 'master' into slider-anchor-type-switching 2024-06-20 19:01:22 +09:00
Dean Herbert
14104e57d4
Merge branch 'master' into timeline-drag-selection-crash 2024-06-20 15:16:10 +09:00
Dean Herbert
0eb533f2fd
Merge pull request #28444 from bdach/scrolling-ruleset-editor-reloads
Reload scrolling hitobject composer on control point changes
2024-06-20 15:15:26 +09:00
Dean Herbert
a718af8af5
Adjust break colours to match closer to stable 2024-06-19 22:02:10 +08:00
Bartłomiej Dach
617c1341d7
Make (Manual)BreakPeriod a class again
CodeFileSanity doesn't like records and it being a record wasn't doing
much anymore anyway.
2024-06-19 14:53:09 +02:00
Dean Herbert
00443403b6
Merge branch 'master' into break-autogeneration 2024-06-19 21:49:17 +09:00
Dean Herbert
32a7885f10
Merge pull request #28523 from bdach/break-display-and-adjustment
Display breaks on editor timeline & allow manually adjusting their duration
2024-06-19 21:48:54 +09:00
Dean Herbert
00a866b699
Change colour to match bottom timeline (and adjust tween sligthly) 2024-06-19 20:30:43 +08:00
Bartłomiej Dach
2d9c3fbed2
Remove no-longer-necessary null propagation 2024-06-19 11:21:57 +02:00
Bartłomiej Dach
7311a7ffd7
Purge manual breaks if they intersect with an actual hitobject 2024-06-19 10:51:37 +02:00
Bartłomiej Dach
7ed587b783
Fix summary timeline not reloading properly on break addition/removal 2024-06-19 10:26:01 +02:00
Bartłomiej Dach
58701b17f8
Add patcher support for breaks 2024-06-19 10:22:14 +02:00
Bartłomiej Dach
4022a8b06c
Implement automatic break period generation 2024-06-19 10:22:06 +02:00
Bartłomiej Dach
1f692f5fc7
Make BreakPeriod a struct 2024-06-19 09:01:33 +02:00
Bartłomiej Dach
6a6ccbc09f
Make list of breaks bindable 2024-06-19 07:44:03 +02:00
Bartłomiej Dach
8836b98070
Fix new inspection after framework bump 2024-06-18 18:32:58 +02:00
Bartłomiej Dach
5551bae7ce
Merge branch 'master' into navigate-to-timestamp 2024-06-18 18:32:33 +02:00
Bartłomiej Dach
f88f05717a
Fix bottom timeline break visualisations not updating 2024-06-18 15:54:34 +02:00
Bartłomiej Dach
814f1e552f
Implement ability to manually adjust breaks 2024-06-18 15:51:29 +02:00
Bartłomiej Dach
a9e662a2b6
Add break display to editor timeline 2024-06-18 14:55:59 +02:00
Bartłomiej Dach
e1827ac28d
Address review feedback 2024-06-18 13:07:18 +02:00
Bartłomiej Dach
1b4a3b0e2e
Change editor speed adjustment back to adjusting tempo
- Partially reverts https://github.com/ppy/osu/pull/12080
- Addresses https://github.com/ppy/osu/discussions/27830,
  https://github.com/ppy/osu/discussions/23789,
  https://github.com/ppy/osu/discussions/15368, et al.

The important distinction here is that to prevent misuse when timing,
the control will revert to 1.0x speed and disable when moving to timing
screen, with a tooltip explaining why.
2024-06-18 09:46:00 +02:00
Bartłomiej Dach
310265c43f
Add slider placement binding description in tooltip 2024-06-18 08:16:25 +02:00
Bartłomiej Dach
659505f711
Adjust calls to GetContainingInputManager() 2024-06-18 07:41:19 +02:00
Bartłomiej Dach
8a4ae5d23d
Null-propagate all calls to GetContainingFocusManager() 2024-06-18 07:30:46 +02:00
Dean Herbert
316125d47a
Merge pull request #23443 from OliBomby/edit-nodesample
Make NodeSamples editable
2024-06-18 11:12:02 +09:00
Bartłomiej Dach
5652a558f9
Allow to jump to a specific timestamp via bottom bar in editor
Apparently this is a stable feature and is helpful for modding.
2024-06-17 17:07:55 +02:00
Bartłomiej Dach
7cfe8d8df2
Reduce editor opacity of several editor components when hovering over composer
Addresses https://github.com/ppy/osu/discussions/24384.
2024-06-17 12:14:28 +02:00
Bartłomiej Dach
07f1994a13
Align beat snap control width with right toolbox 2024-06-17 11:47:37 +02:00
Bartłomiej Dach
f7910f774d
Remove redundant type spec 2024-06-17 10:54:52 +02:00
Bartłomiej Dach
03049d45bb
Remove stuff that looks bad after moving timeline toggle controls 2024-06-17 10:23:00 +02:00
Bartłomiej Dach
b42752c9f0
Move timeline toggle controls to "view" menu 2024-06-17 10:16:40 +02:00
Bartłomiej Dach
bdeea37a44
Commit active placement when starting drag selection via timeline
This was reported in https://github.com/ppy/osu/pull/28474, albeit the
code changes proposed there did not fix the issue at all.

See 8b6385f7d0 for demonstration of the
crash scenario. Basically what is happening there is:

- The starting premise is that there is a spinner placement active.
- At this time, a drag selection is started via the timeline.
- Once the drag selection finds at least one suitable object to select,
  it mutates `SelectedItems`.
- When selection changes for any reason, the `HitObjectComposer`
  decides to switch to the "select" tool, regardless of why
  the selection changed.
- Changing the active tool causes the current placement - if any -
  to be committed, which mutates the beatmap.
- Back at the drag box selection code, this causes a "collection
  modified when enumerating" exception.

The proposed fix here is to eagerly commit active placement - if any -
when drag selection is initiated via the timeline, which avoids this
issue. This also appears to vaguely match stable behaviour and is sort
of consistent with the logic of committing any outstanding changes upon
switching to the selection tool.
2024-06-14 09:32:40 +02:00
Bartłomiej Dach
51c598627a
Move out section header component from editor
This sort of thing has been showing up on flyte designs more and more
so I want to start using it more over that rather ugly "overlined" text
that's there on multiplayer screens right now.
2024-06-12 11:43:40 +02:00
Dean Herbert
90481223dd
Merge pull request #28445 from bdach/mania-key-count-change-force-reload
Attempt full editor reload on key count change
2024-06-12 14:42:59 +09:00
Dan Balasescu
39b219bacc
Merge pull request #28441 from bdach/fix-editor-stacking-not-applying-immediately
Fix stack leniency not applying immediately after change
2024-06-12 12:24:28 +09:00
OliBomby
869cd40195 Fixed samples without additions contributing to common addition bank while not having an editable addition bank 2024-06-11 21:31:18 +02:00
OliBomby
12dd60736a remove code already covered by updatePrimaryBankState 2024-06-11 21:20:42 +02:00
Bartłomiej Dach
922837dd3a
Reload scrolling composer on control point changes 2024-06-11 12:01:35 +02:00
Bartłomiej Dach
da53a11d3c
Attempt full editor reload on key count change 2024-06-11 11:31:49 +02:00
Bartłomiej Dach
3afe98612c
Add RestoreState() to IEditorChangeHandler 2024-06-11 11:31:30 +02:00
Bartłomiej Dach
25b2dfa601
Fix stack leniency not applying immediately after change 2024-06-10 14:34:22 +02:00
Bartłomiej Dach
7d5dc750e5
Use slightly lighter shade of pink for alternative colour 2024-06-10 12:04:52 +02:00
Bartłomiej Dach
0efa028e0a
Restructure popover updates to be more centralised 2024-06-10 11:55:51 +02:00
Bartłomiej Dach
1d6b7e9c9b
Refactor further to address code quality complaints 2024-06-10 10:30:30 +02:00
Bartłomiej Dach
e13e9abda9
Disallow running save-related operations concurrently
Closes https://github.com/ppy/osu/issues/25426.

Different approach to prior ones, this just disables the relevant
actions when something related to save/export is going on. Still ends up
being convoluted because many things you wouldn't expect to touch save
do touch save, so it's not just a concern between export and save
specifically.
2024-06-07 08:13: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
ecfcf7a2c0
Add xmldoc mention about performance overhead of PerformOnSelection() 2024-06-04 10:36:30 +02: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
Dean Herbert
fdb47f8dfa
Fix incorrect handling of nested objects when inside parent object's duration 2024-05-29 23:30:47 +09:00
Dean Herbert
126837fadd
Apply results rather than fake a replay frame 2024-05-29 23:28:37 +09:00
Dean Herbert
3b5b7b2f88
Fix the majority of cases where gameplay stil doesn't end due to judgement count mismatch 2024-05-29 22:57:17 +09:00