82 bool binkDoubleSize =
false);
84 [[
nodiscard]] std::shared_ptr<const data::ResourceSnapshot>
resources()
const noexcept;
87 std::vector<SequenceDescription> descriptions_;
88 std::shared_ptr<const data::ResourceSnapshot> resources_;
181 std::optional<data::Sequence2DBoundingBoxAttribute>
bounds;
237 std::optional<data::Sequence2DBoundingBoxAttribute>
bounds2D;
282 std::shared_ptr<const SequenceProgram> program,
284 std::optional<SequenceTransform> initialTransform = std::nullopt,
285 std::uint8_t labelOverride = 0);
303 [[
nodiscard]] std::expected<void, RuntimeError>
309 std::uint16_t
priority,
bool wholeTree =
false)
const;
311 std::uint16_t
priority,
bool wholeTree =
false);
314 bool wholeTree =
false);
317 bool wholeTree =
false);
320 bool wholeTree =
false);
323 bool wholeTree =
false);
326 bool wholeTree =
false);
328 std::uint16_t
priority,
bool wholeTree =
false);
334 std::uint16_t
priority,
bool wholeTree =
false)
const;
339 bool wholeTree =
false)
const;
351 [[
nodiscard]] std::vector<SequenceScrollingWorldView>
359 std::uint8_t
label)
const;
364 std::uint8_t
label)
const;
378 std::
uint8_t labelOverride = 0);
381 void destroyChildren(Node& node);
383 void erase(Node& node);
385 void forceAncestors(Node& node);
386 void forceDescendants(Node& node);
387 void clearRedrawFlags();
389 void updatePosition(Node& node);
400 std::size_t liveNodes_{};
401 std::size_t births_{};
402 std::int32_t parentClock_{};
403 bool clockStarted_{};
407 std::array<SequenceNodeId, 256> labelOwners_{};
std::shared_ptr< const data::HmdTextureImage > source
std::span< const SequenceDescription > descriptions() const noexcept
std::shared_ptr< const data::ResourceSnapshot > resources() const noexcept
static std::expected< std::shared_ptr< const SequenceProgram >, RuntimeError > rawBitmap(data::DataId id, data::LegacyDataType sourceType, DescriptionLimits limits={})
static std::expected< std::shared_ptr< const SequenceProgram >, RuntimeError > load(const data::DataSource &source, data::DataId id, std::size_t offset=0, DescriptionLimits limits={})
static std::expected< std::shared_ptr< const SequenceProgram >, RuntimeError > runtimeVideo(data::DataId id, std::string fileName, data::SequenceVideoData options, data::Sequence2DBoundingBoxAttribute bounds, bool binkDoubleSize=false)
std::expected< void, RuntimeError > setEndingAction(SequenceNodeId node, std::uint8_t action)
std::expected< void, RuntimeError > setVolume(SequenceNodeId node, std::uint8_t volume)
std::vector< SequenceScrollingWorldView > scrollingWorldInstances() const
SequenceRuntime(const SequenceRuntime &)=delete
SequenceRuntime & operator=(const SequenceRuntime &)=delete
bool isSequenceFinished(data::DataId id, std::uint16_t priority, bool wholeTree=false) const
std::vector< SequenceVideoInstanceView > videoInstances() const
std::vector< SequenceNodeId > matching(data::DataId id, std::uint16_t priority, bool wholeTree=false) const
std::size_t setPitchMatching(data::DataId id, std::uint16_t priority, std::uint16_t pitch, bool wholeTree=false)
std::expected< void, RuntimeError > requestSoundClock(SequenceNodeId id, std::int32_t mediaClock)
std::size_t forceRedrawMatching(data::DataId id, std::uint16_t priority, bool wholeTree=false)
std::expected< void, RuntimeError > setPaused(SequenceNodeId node, bool paused)
std::expected< void, RuntimeError > update(std::int32_t parentClock)
std::expected< void, RuntimeError > requestVideoClock(SequenceNodeId node, std::int32_t mediaClock, std::int32_t duration, bool ended)
std::optional< Matrix3D > childMeshWorldMatrix(data::DataId id, std::uint16_t priority) const
std::size_t moveMatching(data::DataId id, std::uint16_t priority, const SequenceTransform &transform, bool wholeTree=false)
std::expected< void, RuntimeError > stop(SequenceNodeId node)
std::optional< SequenceCamera2DView > camera2DForLabel(std::uint8_t label) const
std::size_t setPanningMatching(data::DataId id, std::uint16_t priority, std::int8_t panning, bool wholeTree=false)
std::expected< void, RuntimeError > setPitch(SequenceNodeId node, std::uint16_t pitch)
std::size_t stopMatching(data::DataId id, std::uint16_t priority, bool wholeTree=false)
std::vector< SequenceNodeId > roots() const
std::expected< std::size_t, RuntimeError > setEndingActionMatching(data::DataId id, std::uint16_t priority, std::uint8_t action, bool wholeTree=false)
std::vector< SequenceBitmapInstanceView > bitmapInstances() const
std::expected< SequenceNodeId, RuntimeError > start(std::shared_ptr< const SequenceProgram > program, std::uint16_t priority=0, ClockStartOptions options={}, std::optional< SequenceTransform > initialTransform=std::nullopt, std::uint8_t labelOverride=0)
std::vector< SequenceSoundInstanceView > soundInstances() const
std::size_t liveNodeCount() const noexcept
std::size_t setVolumeMatching(data::DataId id, std::uint16_t priority, std::uint8_t volume, bool wholeTree=false)
std::span< const SequenceEvent > events() const noexcept
std::expected< void, RuntimeError > requestSoundFailure(SequenceNodeId id)
std::expected< void, RuntimeError > setScrollingWorldVisibility(SequenceNodeId node, bool onScreen)
std::vector< SequenceCamera3DView > cameraInstances() const
std::vector< SequenceMeshInstanceView > meshInstances() const
std::optional< SequenceInfoView > info(data::DataId id, std::uint16_t priority, bool wholeTree=false) const
std::expected< void, RuntimeError > setPanning(SequenceNodeId node, std::int8_t panning)
std::expected< void, RuntimeError > seek(SequenceNodeId node, std::int32_t time)
std::optional< SequenceCamera3DView > cameraForLabel(std::uint8_t label) const
std::optional< SequenceNodeView > inspect(SequenceNodeId node) const
std::variant< std::monostate, Matrix2D, Matrix3D > SequenceTransform
std::uint64_t SequenceNodeId
std::size_t maximumReferences
std::size_t maximumDescriptions
std::variant< std::monostate, data::DataError, data::ChunkError, data::SequenceError, ClockError > cause
std::size_t maximumBirthsPerOperation
std::size_t maximumLiveNodes
data::DataId contentsDataId
data::DataId rootSequenceDataId
SequenceNodeId rootSequenceNode
std::uint16_t rootSequencePriority
std::optional< data::Sequence2DBoundingBoxAttribute > bounds
std::array< float, 3 > minimum
std::array< float, 3 > maximum
auto operator<=>(const SequenceBounds3D &) const =default
data::Sequence2DBoundingBoxAttribute bounds
std::optional< float > scale
SequenceChildSchedule children
std::vector< std::size_t > childDescriptions
data::LegacySequenceAttributes attributes
std::optional< data::DataId > contentsDataId
data::LegacySequenceRecord record
std::uint8_t sequenceType
std::uint8_t endingAction
std::int32_t sequenceClock
std::uint8_t dimensionality
std::optional< Matrix3D > sequenceToWorldTransformation
auto operator<=>(const SequenceMeshChoice3D &) const =default
data::DataId rootSequenceDataId
std::optional< data::DataId > textureMapDataId
std::optional< data::DataId > jointPositionsDataId
SequenceMeshChoice3D meshChoice
std::uint16_t rootSequencePriority
std::optional< SequenceBounds3D > bounds
data::DataId contentsDataId
SequenceTransform localTransform
bool tweekerTransformApplied
SequenceTransform worldTransform
bool explicitlyPositioned
SequenceTransform tweekerTransform
std::uint8_t timeMultiple
std::vector< SequenceNodeId > children
std::uint8_t dimensionality
std::optional< data::DataId > contentsDataId
SequenceMeshChoice3D meshChoice
std::optional< SequenceSpatial2DView > spatial2D
std::optional< std::uint8_t > volumeOverride
std::uint64_t seekGeneration
std::uint8_t dimensionality
std::optional< std::int8_t > panningOverride
std::optional< std::int32_t > screenCenterX2D
data::DataId contentsDataId
std::uint8_t endingAction
std::uint64_t movementRevision
data::Sequence2DBoundingBoxAttribute bounds
std::optional< data::Sequence2DBoundingBoxAttribute > boundingBox
std::int32_t elapsedParentClock
std::uint8_t endingAction
data::SequenceVideoData video