64 [[
nodiscard]]
static std::expected<SequenceClock, ClockError>
start(
77 std::int32_t
mediaClock, std::int32_t duration,
bool ended);
82 {
return videoClock_ ? elapsedParentClock_ : clock_; }
102 std::optional<std::int32_t> lastParentClock_;
103 std::int32_t clock_{};
104 std::int32_t endTime_{};
105 std::uint8_t timeMultiple_{};
106 std::uint8_t endingAction_{};
110 struct VideoClockInput { std::int32_t clock{}, duration{};
bool ended{}; };
111 std::optional<VideoClockInput> pendingVideoClock_;
112 std::int32_t elapsedParentClock_{};
117 std::optional<std::int32_t> pendingSoundClock_;
std::expected< void, ClockError > supplySoundClock(std::int32_t mediaClock)
bool paused() const noexcept
std::int32_t endTime() const noexcept
std::int32_t clock() const noexcept
ClockUpdate seek(std::int32_t newTime, std::int32_t parentClock)
void hibernateScrollingWorld(std::int32_t parentClock) noexcept
std::expected< ClockUpdate, ClockError > update(std::int32_t parentClock, bool forceReevaluation=false)
static std::expected< SequenceClock, ClockError > start(const data::LegacySequenceRecord &record, ClockStartOptions options={})
std::uint8_t endingAction() const noexcept
std::expected< void, ClockError > setPaused(bool paused, std::int32_t parentClock)
std::int32_t elapsedParentClock() const noexcept
std::expected< void, ClockError > supplyVideoClock(std::int32_t mediaClock, std::int32_t duration, bool ended)
std::expected< void, ClockError > setEndingAction(std::uint8_t action)
static constexpr std::int32_t InfiniteEndTime
std::uint8_t timeMultiple() const noexcept
bool stopped() const noexcept
std::string_view clockErrorName(ClockError error) noexcept
@ UnsupportedScrollingWorld
@ UnsupportedSequenceType
@ ParentClockWentBackwards
std::optional< bool > dropFrames
std::optional< std::int32_t > endTimeOverride
std::uint8_t endingAction
std::optional< std::int32_t > parentClockAtBirth
std::int32_t initialClockOffset
std::uint8_t timeMultiple
std::optional< std::int32_t > previousClock