载入中...
搜索中...
未找到
ActionTimelinePayloadEditor.cpp
浏览该文件的文档.
23std::optional<PayloadItem> findPayloadItem(const action::ActionTimeline& timeline, const LogicalId& itemId) {
28 return PayloadItem{track.id, notify->type, action::ActionTimelineEventKind::Notify, notify->time,
33 return PayloadItem{track.id, state->type, action::ActionTimelineEventKind::StateEnter, state->start,
44 return eve::editing::failed<Value::Object>(EditorStatus::Rejected, RuleId("editor.action.timeline.payload-item-missing"), "Editable action-block payload was not found");
51 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.payload-item-missing"), "Editable action-block payload was not found");
54 action::ActionTimelineEvent event{item->kind, item->trackId, itemId, item->type, item->time, merged};
63 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.payload-item-missing"), "Editable action-block payload was not found");
66 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.clip-fit-type"), "Only VFX states can fit a block to a clip");
67 auto binding = action::ActionVfxBinding::fromPayload(item->payload, action::ActionVfxShape::State);
69 auto duration = Duration::fromSeconds(binding.value().clipEndTime - binding.value().clipStartTime);
73 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.clip-fit-overflow"), "Fitted VFX block time overflowed");
80 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.payload-item-missing"), "Editable action-block payload was not found");
83 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.clip-fit-type"), "Only VFX states can fit a clip to a block");
84 auto binding = action::ActionVfxBinding::fromPayload(item->payload, action::ActionVfxShape::State);
90 action::ActionTimelineEvent event{item->kind, item->trackId, itemId, item->type, item->time, merged};
100 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.payload-item-missing"), "Editable action-block payload was not found");
103 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.action.timeline.clip-fit-type"), "Only VFX states can use a resource's natural duration");
108 auto binding = action::ActionVfxBinding::fromPayload(item->payload, action::ActionVfxShape::State);
114 action::ActionTimelineEvent event{item->kind, item->trackId, itemId, item->type, item->time, merged};
Validated partial editing for action-block payloads.
Typed VFX action-block payload contract.
static Result< Duration > fromSeconds(double seconds)
Convert finite seconds to the nearest nanosecond.
Definition Time.cpp:16
static constexpr Duration fromNanoseconds(std::int64_t nanoseconds) noexcept
Construct an exact duration from nanoseconds.
Definition Time.h:55
double seconds() const noexcept
Return this duration as seconds for legacy/presentation APIs.
Definition Time.cpp:28
Human-readable, scoped identifier in the form namespace:name.
Definition Identity.h:411
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Result< void > validate(const ActionTimelineEvent &event) const
Validate type, shape and required payload fields.
Definition ActionNotifyRegistry.cpp:279
const ActionTimelineTarget & target() const noexcept
Borrow the authoritative target.
Definition ActionTimelineEditor.h:176
Result< void > editItem(const LogicalId &itemId, Duration start, Duration end, LogicalId type, Value::Object payload)
Atomically replace one item's timing, type and owning payload.
Definition ActionTimelineEditor.cpp:722
Result< void > updateItem(const LogicalId &itemId, LogicalId type, Value::Object payload)
Replace one item's type and owning payload through one undoable transaction.
Definition ActionTimelineEditor.cpp:626
Result< void > fitClipToBlock(const LogicalId &itemId)
Extend one VFX state's clip end so its authored interval matches the block duration.
Definition ActionTimelinePayloadEditor.cpp:77
Result< void > fitBlockToClip(const LogicalId &itemId)
Resize one VFX state to its authored clip interval at 1.0x playback.
Definition ActionTimelinePayloadEditor.cpp:60
Result< void > fitClipToNaturalDuration(const LogicalId &itemId, OptionalRef< const action::IActionVfxDurationProvider > provider)
Set one VFX state's clip end to the finite duration reported by its resource provider.
Definition ActionTimelinePayloadEditor.cpp:96
Result< void > patch(const LogicalId &itemId, Value::Object fields)
Merge fields into one payload and commit exactly one validated undo step.
Definition ActionTimelinePayloadEditor.cpp:48
Result< Value::Object > payload(const LogicalId &itemId) const
Return an owning copy of one editable notify or state payload.
Definition ActionTimelinePayloadEditor.cpp:41
const action::ActionTimeline & timeline() const noexcept
Borrow the authoritative timeline until the next mutation.
Definition ActionTimelineEditor.h:116
ActionTimelineEventKind
Boundary emitted by deterministic timeline sampling.
Definition ActionTimeline.h:138
@ StateEnter
Definition ActionPreviewController.cpp:6
std::optional< std::reference_wrapper< T > > OptionalRef
Optional borrowed reference; it does not extend T's lifetime.
Definition BorrowedRef.h:24
Owning event projection returned by the runtime sampler.
Definition ActionTimeline.h:146
static Result< ActionVfxBinding > fromPayload(const Value::Object &payload, ActionVfxShape shape)
Decode one dynamic VFX payload transactionally.
Definition ActionVfxBlock.cpp:29