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
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
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
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