2c6fd1ec6e
Fix `GameplayClockContainer potentially resetting external seeks
2022-08-18 18:54:10 +09:00
6003afafc7
Use FramedBeatmapClock
in GameplayClockContainer
2022-08-18 18:54:10 +09:00
61a8873266
Ensure GameplayClockContainer
's FramedClock
is always non-null
2022-08-15 20:22:36 +09:00
1696a905ba
Reduce exposed properties in GameplayClockContainer
2022-08-15 20:22:36 +09:00
704568ae3b
Remove remaining usage of GameplayClock
2022-08-15 20:22:36 +09:00
27569e2ed5
Remove FrameStableClock
(and redirect usages to FrameStabilityContainer
)
2022-08-15 19:19:19 +09:00
cc982d374c
Cache self rather than GameplayClock
2022-08-15 18:30:53 +09:00
c5f8529d20
Mark unused methods as NotImplemented
for safety
2022-08-15 18:30:53 +09:00
f81c7644b4
Make GameplayClockContainer
also an IGameplayClock
and expose to remaining tests
2022-08-15 18:30:53 +09:00
c8764cb333
Move all usage of GameplayClock
to IGameplayClock
2022-08-15 18:30:53 +09:00
6d78218142
Update usages of GameplayClockContainer.GameplayClock
to access properties directly
2022-08-15 18:08:49 +09:00
224f3eaa84
Make GameplayClockContainer
non-abstract
and use in MultiSpectatorPlayer
2022-08-15 18:08:49 +09:00
905bbdc8ee
Remove caching of GameplayClockContainer
in favour of GameplayClock
...
Also fixes `SongProgress` being displayed in skin editor on non-gameplay
screens, due to `GameplayClock` not marked as a required dependency.
2022-07-29 16:45:29 +03:00
3f72e76348
Expose StartTime
from gameplay clock
2022-07-29 16:18:05 +03:00
6bfd351dec
Add logging of GameplayClockContainer
seeks
2022-06-28 15:23:29 +09:00
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
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