载入中...
搜索中...
未找到
MontageCoordinator.cpp
浏览该文件的文档.
44Result<MontageHandle> MontageCoordinator::play(std::size_t layer, action::ActionTimeline timeline,
47 if (layer > static_cast<std::size_t>(std::numeric_limits<MontageHandle::index_type>::max() / 2U))
81 MontageHandle(static_cast<MontageHandle::index_type>(handleIndex(layer, nextIndex)), next.generation),
94const MontageCoordinator::Slot* MontageCoordinator::slotFor(MontageHandle handle) const noexcept {
102 Diagnostic::error(DiagnosticCode::StaleHandle, "montage handle is invalid or stale", "handle"));
106Result<std::reference_wrapper<const MontagePlayer>> MontageCoordinator::resolve(MontageHandle handle) const {
110 Diagnostic::error(DiagnosticCode::StaleHandle, "montage handle is invalid or stale", "handle"));
121Result<void> MontageCoordinator::advanceBlendOuts(Duration delta, SimulationTick tick, MontageHandle except) {
125 const MontageHandle handle(static_cast<MontageHandle::index_type>(&layer - layers_.data()) * 2U +
143Result<void> MontageCoordinator::setLayerBoneMask(std::size_t layer, std::vector<float> weights) {
144 if (layer > static_cast<std::size_t>(std::numeric_limits<MontageHandle::index_type>::max() / 2U))
155 DiagnosticCode::InvalidArgument, "montage layer mask weights must be finite and within [0,1]", "weights"));
175 if (layers_[layer].boneMask.empty()) return Result<void>::success(Status::success(StatusCode::NoOp));
188 if (layer > static_cast<std::size_t>(std::numeric_limits<MontageHandle::index_type>::max() / 2U))
193 DiagnosticCode::InvalidArgument, "montage layer weight must be finite and within [0,1]", "weight"));
195 if (layers_[layer].weight == weight) return Result<void>::success(Status::success(StatusCode::NoOp));
208 if (layer > static_cast<std::size_t>(std::numeric_limits<MontageHandle::index_type>::max() / 2U))
212 if (layers_[layer].additive == additive) return Result<void>::success(Status::success(StatusCode::NoOp));
226 if (layer > static_cast<std::size_t>(std::numeric_limits<MontageHandle::index_type>::max() / 2U))
249Result<void> MontageCoordinator::setLayerRootMotionPolicy(std::size_t layer, const RootMotionPolicy& policy) {
250 if (layer > static_cast<std::size_t>(std::numeric_limits<MontageHandle::index_type>::max() / 2U))
323 DiagnosticCode::InvalidArgument, "montage base pose must match the coordinator skeleton", "basePose"));
330 const float maskWeight = layer.boneMask.empty() ? 1.0f : layer.boneMask[static_cast<std::size_t>(bone)];
334 applyAdditiveTRS(composedPose_->local(bone), layer.rawPose->local(bone), skeleton_.bindLocal(bone),
Layered dual-slot montage ownership and stable handles.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Process-local slot identity tagged by the registry that owns it.
Definition RuntimeHandle.h:116
constexpr std::optional< RuntimeHandle > nextGeneration() const noexcept
Returns this slot at its next generation.
Definition RuntimeHandle.h:170
detail::HandleCoordinates::index_type index_type
Unsigned owner-local slot index type.
Definition RuntimeHandle.h:119
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
Per-bone weights used by override and additive animation layers.
Definition AnimLayerMixer.h:20
Evaluated local (and optional world) pose for an AnimSkeleton. Script type: AnimPose.
Definition AnimPose.h:17
3D bone hierarchy + bind-pose local TRS for skeletal animation. Independent of ik::Skeleton3D (FABRIK...
Definition AnimSkeleton.h:16
void applyBindPose(class AnimPose *pose) const
Fill pose locals with bind pose.
Definition AnimSkeleton.cpp:132
Optional receiver for filtered per-step root motion.
Definition MontagePlayer.h:76
Result< void > clearLayerRootMotionPolicy(std::size_t layer)
Clear a layer-owned root-motion policy so future slots use MontagePlayer defaults.
Definition MontageCoordinator.cpp:266
Result< void > clearLayerRootMotionReceiver(std::size_t layer)
Clear the borrowed root-motion receiver from current and future slots of a layer.
Definition MontageCoordinator.cpp:237
Result< void > setLayerAdditive(std::size_t layer, bool additive)
Select bind-pose-relative additive or ordered override composition for one layer.
Definition MontageCoordinator.cpp:207
Result< std::reference_wrapper< MontagePlayer > > resolve(MontageHandle handle)
Resolve a live handle for immediate synchronous use.
Definition MontageCoordinator.cpp:98
void collectFinished() noexcept
Reclaim finished slots and invalidate their handles.
Definition MontageCoordinator.cpp:345
Result< std::vector< float > > layerBoneMask(std::size_t layer) const
Return an owning copy of one configured layer mask.
Definition MontageCoordinator.cpp:180
Result< void > setLayerBoneMask(std::size_t layer, std::vector< float > weights)
Atomically replace one layer's owning per-bone blend weights.
Definition MontageCoordinator.cpp:143
Result< void > setLayerRootMotionReceiver(std::size_t layer, IMontageRootMotionReceiver &receiver)
Install one root-motion receiver shared by current and future slots of a layer.
Definition MontageCoordinator.cpp:224
Result< MontageHandle > play(std::size_t layer, action::ActionTimeline timeline, std::vector< MontageClipAsset > &&clips, action::ActionExecutionId executionId, SimulationTick tick)
Prepare and play a montage in the opposite slot of a layer.
Definition MontageCoordinator.cpp:44
Result< void > clearLayerBoneMask(std::size_t layer)
Remove one layer's bone mask so subsequent composition affects every bone.
Definition MontageCoordinator.cpp:171
Result< float > layerWeight(std::size_t layer) const
Return one configured layer's global influence, or NotFound for an absent layer.
Definition MontageCoordinator.cpp:200
MontageCoordinator(AnimSkeleton &skeleton)
Construct over a skeleton that must outlive this coordinator.
Definition MontageCoordinator.cpp:17
Result< MontageAdvance > stop(MontageHandle handle, Duration blendOut, SimulationTick tick)
Stop one live slot with a continuous blend-out.
Definition MontageCoordinator.cpp:137
Result< void > setLayerRootMotionPolicy(std::size_t layer, const RootMotionPolicy &policy)
Install a root-motion policy for current and future slots of a layer.
Definition MontageCoordinator.cpp:249
Result< std::reference_wrapper< AnimPose > > compose(const AnimPose &basePose)
Compose every configured montage layer over an immediate borrowed base pose.
Definition MontageCoordinator.cpp:320
Result< void > setLayerWeight(std::size_t layer, float weight)
Set one layer's finite global influence.
Definition MontageCoordinator.cpp:187
Result< std::reference_wrapper< AnimPose > > pose(std::size_t layer)
Borrow the normalized full layer pose; invalid layers return a structured failure.
Definition MontageCoordinator.cpp:302
Result< void > advanceBlendOuts(Duration delta, SimulationTick tick, MontageHandle except=MontageHandle::invalid())
Advance every fading slot except an optional slot already advanced by its owner.
Definition MontageCoordinator.cpp:121
Result< bool > layerAdditive(std::size_t layer) const
Return whether one configured layer uses additive composition, or NotFound for an absent layer.
Definition MontageCoordinator.cpp:217
Result< MontageAdvance > present(MontageHandle handle, const action::ActionAdvance &advance, SimulationTick tick)
Present one authoritative action advance through a live slot.
Definition MontageCoordinator.cpp:114
Definition Animation.cpp:58
TransformTRS blendTRS(const TransformTRS &a, const TransformTRS &b, float t)
Blend trs.
Definition AnimMath.h:79
eve::Result< void > validateRootMotionPolicy(const RootMotionPolicy &policy)
Validate policy fields.
Definition RootMotionPolicy.cpp:48
void applyAdditiveTRS(TransformTRS &base, const TransformTRS &sample, const TransformTRS &reference, float weight)
Apply an additive sample onto base using reference.
Definition AnimMath.h:114
RuntimeHandle< MontageHandleTag > MontageHandle
Generation-qualified identity owned by one MontageCoordinator.
Definition MontageCoordinator.h:24
@ InvalidArgument
@ NotFound
@ Failed
@ StaleHandle
@ NoOp
@ Applied
Definition Container.h:602
Duration defaultBlendIn
Definition ActionTimeline.h:41
Canonical action timeline asset shared by runtime and editor.
Definition ActionTimeline.h:178
Policy applied after raw root-bone delta extraction. @ownership Value type; owned by AnimPlayer or th...
Definition RootMotionPolicy.h:62