d4286255a0
Expose and set GameplayStartTime
directly, rather than via Reset
parameter
2022-04-13 13:58:44 +09:00
808f0ecb74
Ensure running state is updated before performing Seek
in GameplayClockContainer.Reset
2022-04-11 14:10:50 +09:00
f09a946722
Start GameplayClockContainer
paused for better state control
2022-03-18 15:28:22 +09:00
e3ab5de8cd
Tidy up constructor logic overlap with gameplayStartTime
2022-03-18 01:35:50 +09:00
a4a0241800
Use a more explicit flow to set and reset GameplayClockContainer
start time
2022-03-17 20:57:30 +09:00
3ec193d47e
Fix spectator clock container incorrectly starting catch-up clock
2022-01-30 01:46:10 +03:00
9a1db04920
Resolve GameplayClockContainer
instead of Player
2021-09-20 10:28:58 -04:00
3b876a43c2
Merge branch 'master' into multiplayer-spectator-screen
2021-04-26 14:12:35 +09:00
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
fdb5490e51
Attempt to explain source initialisation better
2021-04-23 21:56:08 +02:00
ae2fd2f2e1
Ensure source is set on reset
2021-04-23 18:46:59 +09:00
f32d00c0d9
Fix post-merge errors
2021-04-21 17:13:01 +09:00
e78ef05fcf
Merge branch 'gcc-abstraction' into multiplayer-spectator-screen
2021-04-21 17:11:14 +09:00
ec080fcb32
Move seekOffset back to MasterGameplayClockContainer
2021-04-20 18:25:46 +09:00
a683e5ec34
Seek using local method
2021-04-20 17:40:11 +09:00
97fb90d9f4
Move clock processing to base.Seek()
2021-04-20 17:35:59 +09:00
3d6d26039a
Remove unused usings
2021-04-20 14:09:54 +09:00
88ded95e75
Ensure clock is set in GCC.Start()
2021-04-20 13:56:13 +09:00
a92ae8ce76
Fix Reset() potentially not resetting to the intended start position
2021-04-20 13:01:42 +09:00
acbf4580a4
Only set initial source in Reset()
2021-04-19 19:57:00 +09:00
c7183f92f7
Rename Restart() -> Reset()
2021-04-19 19:57:00 +09:00
c8d38f9983
Merge branch 'gcc-abstraction' into multiplayer-spectator-screen
2021-04-16 20:51:00 +09:00
3a78c19f96
More refactoring/xmldocs
2021-04-16 20:33:29 +09:00
6301111fa3
Remove ClockToProcess, always process underlying clock
2021-04-16 20:17:21 +09:00
a7aa3cb263
Merge branch 'gcc-abstraction' into multiplayer-spectator-screen
2021-04-16 20:16:26 +09:00
f98ffbb1b3
Remove ClockToProcess, always process underlying clock
2021-04-16 20:15:42 +09:00
fe3ba2b80e
Implement IAdjustableClock on GameplayClockContainer
2021-04-15 19:07:25 +09:00
f56125bd68
Update clock from base class
2021-04-14 21:15:14 +09:00
18c69cdaf7
Split out files
2021-04-14 19:50:22 +09:00
b53b30c1a9
Fix incorrect offset due to another intermediate Decoupleable clock
2021-04-14 19:33:55 +09:00
2935f87e70
Fix IsPaused not being bound
2021-04-14 18:29:34 +09:00
1aa36818df
Abstractify GameplayClockContainer
2021-04-14 17:47:11 +09:00
20d04d6933
Fix Storyboard's FirstEventTime not finding the true earliest event
2021-01-04 15:16:01 +09:00
2dd5911256
Rename method to better match purpose
2020-12-11 14:44:01 +09:00
01bd765384
Simplify pause handling by moving transform logic to bindable change event
2020-12-10 17:42:47 +09:00
679a550d83
Fix single threaded seeking not working due to unnecessary seek call
2020-12-10 17:42:28 +09:00
b7696c85ad
Add more xmldocs
2020-11-01 15:23:03 +01:00
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
e3eaba7b2c
Move ISampleDisabler implementation to Player and FrameStabilityContainer
2020-10-14 19:39:48 +09:00
b0f8e11bd4
Fix incorrect caching
2020-09-30 17:34:14 +09:00
7f579850dd
Merge branch 'master' into fix-editor-silence-on-seek
2020-09-30 17:03:23 +09:00
c5f6b77bba
Add missing cached type
2020-09-29 13:42:17 +09:00
26ba7d3100
Remove unused method (was moved to a more local location)
2020-09-25 13:20:19 +09:00
508278505f
Make local clock private
2020-09-21 19:40:57 +09:00
3f788da06d
Fix SPM changing incorrectly with playback rate changes
2020-09-21 19:39:54 +09:00
93a8bc3d5a
Remove local reset method in GameplayClockContainer
2020-08-17 22:36:09 +09:00
d9debef156
Add explicit LoadTrack method
2020-08-17 15:38:16 +09:00
c0031955c9
Update with further framework changes
2020-08-12 01:50:18 +09:00
e47a1eb313
Use adjustable ITrack
2020-08-12 01:41:21 +09:00
eec94e1f53
Make track not-null in GameplayClockContainer/FailAnimation
2020-08-12 00:51:43 +09:00