Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Dean Herbert
d4286255a0
Expose and set GameplayStartTime
directly, rather than via Reset
parameter
2022-04-13 13:58:44 +09:00
Dean Herbert
808f0ecb74
Ensure running state is updated before performing Seek
in GameplayClockContainer.Reset
2022-04-11 14:10:50 +09:00
Dean Herbert
f09a946722
Start GameplayClockContainer
paused for better state control
2022-03-18 15:28:22 +09:00
Dean Herbert
e3ab5de8cd
Tidy up constructor logic overlap with gameplayStartTime
2022-03-18 01:35:50 +09:00
Dean Herbert
a4a0241800
Use a more explicit flow to set and reset GameplayClockContainer
start time
2022-03-17 20:57:30 +09:00
Salman Ahmed
3ec193d47e
Fix spectator clock container incorrectly starting catch-up clock
2022-01-30 01:46:10 +03:00
sh0ckR6
9a1db04920
Resolve GameplayClockContainer
instead of Player
2021-09-20 10:28:58 -04:00
Dean Herbert
3b876a43c2
Merge branch 'master' into multiplayer-spectator-screen
2021-04-26 14:12:35 +09:00
Bartłomiej Dach
e937b778f6
Fix potential failure in ensureSourceClockSet()
...
`ensureSourceClockSet()` was intended to only run when the adjustable
source hasn't been set at all yet. As it turns out permitting it to run
unconditionally can break the state of the underlying interpolated
clock. This is caused by the following factors:
* While the decoupleable clock is running, its `CurrentTime` does not
come from either the source clock, or the internal stopwatch; it is
instead calculated using the base `InterpolatingFramedClock` logic.
* A source change of a decoupleable clock seeks the provided source
clock to the decoupleable's current time.
* When an interpolating clock is seeked (decoupleable clock is also
an interpolating one), its interpolation state
(`{Last,Current}InterpolatedTime`) are reset to 0.
* If the interpolating clock determines that its current time is too
far away from the source's time (which was set when the source is
changed), it will ignore the source and instead continue to use
its current time until the source clock has caught up.
Overall, the source change is not really necessary if a source is
already there. The only reason to ensure it was set was to make sure
the first seek of the gameplay clock wasn't performed in decoupled
mode. Therefore, add a guard to make sure the source is only set if
there isn't one already.
2021-04-24 14:19:39 +02:00
Bartłomiej Dach
fdb5490e51
Attempt to explain source initialisation better
2021-04-23 21:56:08 +02:00
smoogipoo
ae2fd2f2e1
Ensure source is set on reset
2021-04-23 18:46:59 +09:00
smoogipoo
f32d00c0d9
Fix post-merge errors
2021-04-21 17:13:01 +09:00
smoogipoo
e78ef05fcf
Merge branch 'gcc-abstraction' into multiplayer-spectator-screen
2021-04-21 17:11:14 +09:00
smoogipoo
ec080fcb32
Move seekOffset back to MasterGameplayClockContainer
2021-04-20 18:25:46 +09:00
smoogipoo
a683e5ec34
Seek using local method
2021-04-20 17:40:11 +09:00
smoogipoo
97fb90d9f4
Move clock processing to base.Seek()
2021-04-20 17:35:59 +09:00
smoogipoo
3d6d26039a
Remove unused usings
2021-04-20 14:09:54 +09:00
smoogipoo
88ded95e75
Ensure clock is set in GCC.Start()
2021-04-20 13:56:13 +09:00
smoogipoo
a92ae8ce76
Fix Reset() potentially not resetting to the intended start position
2021-04-20 13:01:42 +09:00
smoogipoo
acbf4580a4
Only set initial source in Reset()
2021-04-19 19:57:00 +09:00
smoogipoo
c7183f92f7
Rename Restart() -> Reset()
2021-04-19 19:57:00 +09:00
smoogipoo
c8d38f9983
Merge branch 'gcc-abstraction' into multiplayer-spectator-screen
2021-04-16 20:51:00 +09:00
smoogipoo
3a78c19f96
More refactoring/xmldocs
2021-04-16 20:33:29 +09:00
smoogipoo
6301111fa3
Remove ClockToProcess, always process underlying clock
2021-04-16 20:17:21 +09:00
smoogipoo
a7aa3cb263
Merge branch 'gcc-abstraction' into multiplayer-spectator-screen
2021-04-16 20:16:26 +09:00
smoogipoo
f98ffbb1b3
Remove ClockToProcess, always process underlying clock
2021-04-16 20:15:42 +09:00
smoogipoo
fe3ba2b80e
Implement IAdjustableClock on GameplayClockContainer
2021-04-15 19:07:25 +09:00
smoogipoo
f56125bd68
Update clock from base class
2021-04-14 21:15:14 +09:00
smoogipoo
18c69cdaf7
Split out files
2021-04-14 19:50:22 +09:00
smoogipoo
b53b30c1a9
Fix incorrect offset due to another intermediate Decoupleable clock
2021-04-14 19:33:55 +09:00
smoogipoo
2935f87e70
Fix IsPaused not being bound
2021-04-14 18:29:34 +09:00
smoogipoo
1aa36818df
Abstractify GameplayClockContainer
2021-04-14 17:47:11 +09:00
Dean Herbert
20d04d6933
Fix Storyboard's FirstEventTime not finding the true earliest event
2021-01-04 15:16:01 +09:00
Dean Herbert
2dd5911256
Rename method to better match purpose
2020-12-11 14:44:01 +09:00
Dean Herbert
01bd765384
Simplify pause handling by moving transform logic to bindable change event
2020-12-10 17:42:47 +09:00
Dean Herbert
679a550d83
Fix single threaded seeking not working due to unnecessary seek call
2020-12-10 17:42:28 +09:00
Bartłomiej Dach
b7696c85ad
Add more xmldocs
2020-11-01 15:23:03 +01:00
Dean Herbert
42b3aa3359
Fix spectating when starting from a point that isn't at the beginning of the beatmap
2020-10-27 18:58:37 +09:00
Dean Herbert
e3eaba7b2c
Move ISampleDisabler implementation to Player and FrameStabilityContainer
2020-10-14 19:39:48 +09:00
Dean Herbert
b0f8e11bd4
Fix incorrect caching
2020-09-30 17:34:14 +09:00
Dean Herbert
7f579850dd
Merge branch 'master' into fix-editor-silence-on-seek
2020-09-30 17:03:23 +09:00
Dean Herbert
c5f6b77bba
Add missing cached type
2020-09-29 13:42:17 +09:00
Dean Herbert
26ba7d3100
Remove unused method (was moved to a more local location)
2020-09-25 13:20:19 +09:00
Dean Herbert
508278505f
Make local clock private
2020-09-21 19:40:57 +09:00
Dean Herbert
3f788da06d
Fix SPM changing incorrectly with playback rate changes
2020-09-21 19:39:54 +09:00
Dean Herbert
93a8bc3d5a
Remove local reset method in GameplayClockContainer
2020-08-17 22:36:09 +09:00
Dean Herbert
d9debef156
Add explicit LoadTrack method
2020-08-17 15:38:16 +09:00
smoogipoo
c0031955c9
Update with further framework changes
2020-08-12 01:50:18 +09:00
smoogipoo
e47a1eb313
Use adjustable ITrack
2020-08-12 01:41:21 +09:00
smoogipoo
eec94e1f53
Make track not-null in GameplayClockContainer/FailAnimation
2020-08-12 00:51:43 +09:00
smoogipoo
2e3ecf71c7
Pass track from Player to components
2020-08-06 18:31:08 +09:00
smoogipoo
5c05fe3988
Expose track from MusicController
2020-08-06 16:24:14 +09:00
smoogipoo
6e42b8219c
Move track to MusicController, compiles
2020-08-06 16:24:14 +09:00
Dean Herbert
0d53d0ffc8
Fix back-to-front math
2020-06-15 00:46:20 +09:00
Dean Herbert
7b95c55afb
Fix HardwareCorrectionOffsetClock breaking ElapsedTime readings
2020-06-14 11:33:59 +09:00
Dean Herbert
9b6525bb03
Fix applied platform/user offsets being incorrect when rate adjust mods are active
2020-05-15 18:44:47 +09:00
smoogipoo
2e4adc056f
Fix potential deadlock during gameplay tests
2020-03-03 13:42:05 +09:00
Dean Herbert
b7996f91fc
Update the windows platform offset to match stable
2020-02-07 17:51:38 +09:00
Dean Herbert
7fd52c21f5
Update mods and user adjust to use adjustments
2019-12-09 19:41:31 +09:00
Dean Herbert
d650bfb6d6
Remove unnecessary cast
2019-12-09 18:05:14 +09:00
Dean Herbert
eb074b7058
Allow mods to apply to track, not clock
2019-12-09 17:44:45 +09:00
Dean Herbert
48c6279e8b
Only undo adjustments in GameplayClockContainer if applied at least once
2019-12-06 13:49:22 +09:00
Huo Yaoyuan
eba8657d38
Remove newly introduced redundant this
.
2019-11-26 18:41:19 +08:00
Dean Herbert
83080c3b5f
Fix merge regression
2019-11-22 14:14:18 +09:00
Dean Herbert
ffd0e17826
Merge branch 'skip-multiple-times' into lead-in-fixes
2019-11-21 19:01:28 +09:00
Dean Herbert
46a94821d4
Add support for consecutive skips
2019-11-21 18:59:55 +09:00
Dean Herbert
2dd2e3d861
Add correct AudioLeadIn support
2019-11-21 16:55:18 +09:00
Dean Herbert
8369be90f2
Allow skip button to actuate more than once
2019-11-21 15:19:06 +09:00
Dean Herbert
eee5902851
Merge remote-tracking branch 'upstream/master' into lead-in-fixes
2019-11-15 14:05:31 +09:00
Dean Herbert
cd1dd0f898
Fix adjustments not being removed correctly on retry from pause
2019-11-06 10:38:04 +09:00
Dean Herbert
ac02bb005d
Fix GameplayClockContainer operating on beatmap's track after scren exited
2019-11-01 14:11:18 +09:00
Dean Herbert
5c2ea0b1a7
Move dispose to end of file
2019-06-10 01:14:46 +09:00
Dean Herbert
d964f6ba9e
Tween track frequency on pause
2019-06-10 00:56:35 +09:00
Dean Herbert
a2fbcb2bd3
Fix rebase regressions
2019-05-31 15:58:46 +09:00
Dean Herbert
e03a664970
Fix lead-in logic to match stable
...
Also adds storyboard event priority support.
2019-05-31 15:51:19 +09:00
Dean Herbert
651706b10e
Account for user/system offsets when deciding on an initial seek time
...
Closes #3043
Remove "AllowLeadIn" flag
2019-05-31 15:50:46 +09:00
Dean Herbert
bb69330e9f
Call ProcessFrame on the userOffsetClock after a seek
...
Without doing this, GameplayClock can be left in an incorrect state after a seek (due to the userOffsetClock being its own FramedClock).
2019-04-24 15:28:14 +09:00
Dean Herbert
efaedafc08
Fix (legacy) AudioLeadIn being used incorrectly.
...
This lead-in is intended to specify a value before zero, not a value before the start time.
Also removes an unnecessary ProcessFrame call (it happens within Seek itself).
2019-04-24 15:28:14 +09:00
Dean Herbert
6856571f17
Fix incorrect seek target
2019-04-22 18:45:58 +09:00
Dean Herbert
55c5ef898d
Remove delay on entering player
2019-04-22 18:29:58 +09:00
Dean Herbert
908eee9942
Fix pause tests
2019-04-22 18:29:51 +09:00
smoogipoo
0222424aef
Make mods IReadOnlyList<Mod> gamewide
...
Prevents potential multiple evaluations of enumerable.
2019-04-10 17:20:36 +09:00
smoogipoo
85d3ff4846
Merge remote-tracking branch 'origin/master' into no-workingbeatmap-mods
...
# Conflicts:
# osu.Game/Screens/Play/GameplayClockContainer.cs
2019-04-10 12:06:51 +09:00
smoogipoo
c584967eb1
Remove mods from workingbeatmap
2019-04-09 12:59:32 +09:00
Dean Herbert
efd7bea771
Add further xmldoc
2019-04-03 17:01:11 +09:00
Dean Herbert
50f8ab3dfb
Fix gameplay offset handling on seeks
2019-04-03 16:58:20 +09:00
Dean Herbert
202a0086cc
Merge branch 'master' into better-player-flags
2019-03-29 13:45:45 +09:00
Dean Herbert
83863d35c3
Remove AllowLeadIn flag
2019-03-26 16:35:00 +09:00
Dean Herbert
b4d785c76c
Don't update gameplay loop while paused
2019-03-26 13:36:17 +09:00
Dean Herbert
bcaff9f7b4
Add basic pause tests
2019-03-18 20:33:43 +09:00
Dean Herbert
465c95e952
Refactor pause logic so GameplayClockContainer is in control
2019-03-18 20:33:43 +09:00
Dean Herbert
c1a356161f
Allow use rate adjust to fallback to clock rate adjust
2019-03-12 18:14:01 +09:00
Dean Herbert
cdeaa80fea
Call ResetSpeedAdjustments before adjusting clock
2019-03-12 11:35:25 +09:00
Dean Herbert
13b3036ec6
Fix "wind" mods adjusting rate twice
...
This is a hotfix for incorrect framework behaviour.
Closes #4442
2019-03-12 02:45:45 +09:00
Dean Herbert
42efea1e06
Apply review
2019-03-08 15:05:45 +09:00
Dean Herbert
58ef397f4f
Move all clock related gameplay logic inside GameplayClockContainer
2019-03-07 16:02:24 +09:00