Combines a borrowed base pose source with ordered override/additive layers. 更多...
#include <AnimLayerMixer.h>
Public 成员函数 | |
| AnimLayerMixer (AnimSkeleton *skeleton) | |
| Create an empty mixer for a skeleton; the skeleton is not owned. | |
| eve::Result< void > | setBaseSource (IAnimPoseSource *source) |
| Set the borrowed base pose source evaluated before layers. | |
| bool | setBasePlayer (AnimPlayer *player) |
| Compatibility facade over setBaseSource(AnimPlayer*). | |
| bool | setBaseGraph (AnimGraph *graph) |
| Compatibility facade over setBaseSource(AnimGraph*). | |
| bool | setBaseStateMachine (AnimStateMachine *stateMachine) |
| Compatibility facade over setBaseSource(AnimStateMachine*). | |
| IAnimPoseSource * | getBaseSource () const |
| Return the borrowed base source, or null. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction. | |
| AnimPlayer * | getBasePlayer () const |
| Return the base when it is an AnimPlayer; otherwise null. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction. | |
| eve::Result< int > | addPoseLayer (const std::string &name, IAnimPoseSource *source, AnimBoneMask *mask, const std::string &mode) |
| Append a pose layer. mode is "override" or "additive". A null mask affects every bone. Additive layers default to BindPose reference. | |
| int | addLayer (const std::string &name, AnimPlayer *player, AnimBoneMask *mask, const std::string &mode) |
| Compatibility facade over addPoseLayer(AnimPlayer*). | |
| int | addGraphLayer (const std::string &name, AnimGraph *graph, AnimBoneMask *mask, const std::string &mode) |
| Compatibility facade over addPoseLayer(AnimGraph*). | |
| int | addStateMachineLayer (const std::string &name, AnimStateMachine *stateMachine, AnimBoneMask *mask, const std::string &mode) |
| Compatibility facade over addPoseLayer(AnimStateMachine*). | |
| bool | removeLayer (const std::string &name) |
| Remove a layer by name. | |
| bool | setLayerWeight (const std::string &name, float weight) |
| Set a layer's global clamped weight. | |
| bool | setLayerEnabled (const std::string &name, bool enabled) |
| Enable or disable a layer without removing it. Disabled layers still advance. | |
| eve::Result< void > | setLayerAdditiveReference (const std::string &name, const std::string &reference) |
| Set additive reference for an additive layer: "bind" or "identity". | |
| bool | setLayerAdditiveReferenceCompat (const std::string &name, const std::string &reference) |
| Compatibility facade over setLayerAdditiveReference. | |
| int | getLayerCount () const |
| Return the number of configured layers. | |
| std::string | getLayerName (int index) const |
| Return a layer name, or empty for an invalid index. | |
| float | getLayerWeight (const std::string &name) const |
| Return a layer weight, or zero for an unknown name. | |
| bool | getLayerEnabled (const std::string &name) const |
| Return whether a layer is enabled; false for unknown names. | |
| std::string | getLayerMode (const std::string &name) const |
| Return "override" / "additive", or empty for unknown names. | |
| std::string | getLayerAdditiveReference (const std::string &name) const |
| Return "bind" / "identity", or empty for unknown names. | |
| eve::Result< void > | advance (const eve::SimulationStep &step) override |
| Advance all referenced sources (including disabled layers) and compose. | |
| void | update (float dt) |
| Legacy seconds facade; explicitly forwards to advance(). | |
| AnimPose * | getPose () override |
| Return the most recently combined pose. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction. | |
| AnimSkeleton * | getSkeleton () const override |
| Return the mixer skeleton. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction. | |
| bool | hasCurrentTick () const noexcept override |
| True when current tick. | |
| eve::SimulationTick | currentTick () const noexcept override |
| Current tick. | |
| int | getEventCount () const override |
| Returns the event count. | |
| std::string | getEventName (int index) const override |
| Returns the event name. | |
| std::string | getEventPayload (int index) const override |
| Returns the event payload. | |
| std::string | getEventLayer (int index) const |
| Source layer name; "base" identifies the base source. | |
| void | clearEvents () |
| Clear events collected by the most recent update. | |
Public 成员函数 继承自 eve::animation::IAnimPoseSource | |
| virtual | ~IAnimPoseSource ()=default |
| Releases IAnimPoseSource resources. | |
详细描述
Combines a borrowed base pose source with ordered override/additive layers.
Pose sources such as AnimPlayer, AnimGraph, AnimStateMachine, or a nested mixer, plus masks/clips/skeleton, are referenced but not owned. The mixer owns the evaluation boundary: call advance once per tick and do not advance attached sources separately.
在文件 AnimLayerMixer.h 第 53 行定义.
构造及析构函数说明
◆ AnimLayerMixer()
|
explicit |
Create an empty mixer for a skeleton; the skeleton is not owned.
在文件 AnimLayerMixer.cpp 第 72 行定义.
引用了 eve::animation::AnimSkeleton::applyBindPose(), eve::animation::AnimSkeleton::getBoneCount() , 以及 eve::animation::AnimPose::resize().
成员函数说明
◆ addGraphLayer()
| int eve::animation::AnimLayerMixer::addGraphLayer | ( | const std::string & | name, |
| AnimGraph * | graph, | ||
| AnimBoneMask * | mask, | ||
| const std::string & | mode | ||
| ) |
Compatibility facade over addPoseLayer(AnimGraph*).
在文件 AnimLayerMixer.cpp 第 182 行定义.
引用了 addPoseLayer(), graph, mask , 以及 name.
◆ addLayer()
| int eve::animation::AnimLayerMixer::addLayer | ( | const std::string & | name, |
| AnimPlayer * | player, | ||
| AnimBoneMask * | mask, | ||
| const std::string & | mode | ||
| ) |
Compatibility facade over addPoseLayer(AnimPlayer*).
在文件 AnimLayerMixer.cpp 第 173 行定义.
引用了 addPoseLayer(), mask , 以及 name.
◆ addPoseLayer()
| eve::Result< int > eve::animation::AnimLayerMixer::addPoseLayer | ( | const std::string & | name, |
| IAnimPoseSource * | source, | ||
| AnimBoneMask * | mask, | ||
| const std::string & | mode | ||
| ) |
Append a pose layer. mode is "override" or "additive". A null mask affects every bone. Additive layers default to BindPose reference.
在文件 AnimLayerMixer.cpp 第 152 行定义.
引用了 eve::animation::BindPose, eve::Conflict, eve::Diagnostic::error(), eve::Result< T >::failure(), eve::InvalidArgument, mask, name, source , 以及 eve::Result< T >::success().
被这些函数引用 addGraphLayer(), addLayer() , 以及 addStateMachineLayer().
◆ addStateMachineLayer()
| int eve::animation::AnimLayerMixer::addStateMachineLayer | ( | const std::string & | name, |
| AnimStateMachine * | stateMachine, | ||
| AnimBoneMask * | mask, | ||
| const std::string & | mode | ||
| ) |
Compatibility facade over addPoseLayer(AnimStateMachine*).
在文件 AnimLayerMixer.cpp 第 192 行定义.
引用了 addPoseLayer(), mask , 以及 name.
◆ advance()
|
overridevirtual |
Advance all referenced sources (including disabled layers) and compose.
实现了 eve::animation::IAnimPoseSource.
在文件 AnimLayerMixer.cpp 第 333 行定义.
引用了 eve::animation::IAnimPoseSource::advance(), eve::Applied, eve::Conflict, eve::animation::IAnimPoseSource::currentTick(), eve::Diagnostic::error(), eve::Result< T >::failure(), eve::animation::IAnimPoseSource::hasCurrentTick(), layer, eve::animation::detail::secondsForStep(), step, eve::Status::success() , 以及 eve::Result< T >::success().
被这些函数引用 update().
◆ clearEvents()
|
inline |
Clear events collected by the most recent update.
在文件 AnimLayerMixer.h 第 153 行定义.
◆ currentTick()
|
inlineoverridevirtualnoexcept |
◆ getBasePlayer()
| AnimPlayer * eve::animation::AnimLayerMixer::getBasePlayer | ( | ) | const |
Return the base when it is an AnimPlayer; otherwise null. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction.
在文件 AnimLayerMixer.cpp 第 150 行定义.
◆ getBaseSource()
|
inline |
Return the borrowed base source, or null. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction.
在文件 AnimLayerMixer.h 第 74 行定义.
◆ getEventCount()
|
inlineoverridevirtual |
Returns the event count.
重载 eve::animation::IAnimPoseSource .
在文件 AnimLayerMixer.h 第 144 行定义.
被这些函数引用 eve::avatar::AvatarInstance::getAnimationEventCount(), getEventLayer(), getEventName() , 以及 getEventPayload().
◆ getEventLayer()
| std::string eve::animation::AnimLayerMixer::getEventLayer | ( | int | index | ) | const |
Source layer name; "base" identifies the base source.
在文件 AnimLayerMixer.cpp 第 372 行定义.
引用了 getEventCount(), index , 以及 layer.
被这些函数引用 eve::avatar::AvatarInstance::getAnimationEventLayer().
◆ getEventName()
|
overridevirtual |
Returns the event name.
重载 eve::animation::IAnimPoseSource .
在文件 AnimLayerMixer.cpp 第 377 行定义.
引用了 getEventCount(), index , 以及 name.
被这些函数引用 eve::avatar::AvatarInstance::getAnimationEventName().
◆ getEventPayload()
|
overridevirtual |
Returns the event payload.
重载 eve::animation::IAnimPoseSource .
在文件 AnimLayerMixer.cpp 第 382 行定义.
引用了 getEventCount(), index , 以及 payload.
被这些函数引用 eve::avatar::AvatarInstance::getAnimationEventPayload().
◆ getLayerAdditiveReference()
| std::string eve::animation::AnimLayerMixer::getLayerAdditiveReference | ( | const std::string & | name | ) | const |
Return "bind" / "identity", or empty for unknown names.
在文件 AnimLayerMixer.cpp 第 280 行定义.
◆ getLayerCount()
|
inline |
◆ getLayerEnabled()
| bool eve::animation::AnimLayerMixer::getLayerEnabled | ( | const std::string & | name | ) | const |
Return whether a layer is enabled; false for unknown names.
在文件 AnimLayerMixer.cpp 第 269 行定义.
◆ getLayerMode()
| std::string eve::animation::AnimLayerMixer::getLayerMode | ( | const std::string & | name | ) | const |
Return "override" / "additive", or empty for unknown names.
在文件 AnimLayerMixer.cpp 第 274 行定义.
◆ getLayerName()
| std::string eve::animation::AnimLayerMixer::getLayerName | ( | int | index | ) | const |
Return a layer name, or empty for an invalid index.
在文件 AnimLayerMixer.cpp 第 259 行定义.
引用了 getLayerCount(), index , 以及 name.
◆ getLayerWeight()
| float eve::animation::AnimLayerMixer::getLayerWeight | ( | const std::string & | name | ) | const |
Return a layer weight, or zero for an unknown name.
在文件 AnimLayerMixer.cpp 第 264 行定义.
◆ getPose()
|
inlineoverridevirtual |
Return the most recently combined pose. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction.
实现了 eve::animation::IAnimPoseSource.
在文件 AnimLayerMixer.h 第 132 行定义.
◆ getSkeleton()
|
inlineoverridevirtual |
Return the mixer skeleton. @ownership Borrowed @lifetime Valid while the owning animation object remains alive; do not retain across destruction.
实现了 eve::animation::IAnimPoseSource.
在文件 AnimLayerMixer.h 第 138 行定义.
◆ hasCurrentTick()
|
inlineoverridevirtualnoexcept |
◆ removeLayer()
| bool eve::animation::AnimLayerMixer::removeLayer | ( | const std::string & | name | ) |
◆ setBaseGraph()
| bool eve::animation::AnimLayerMixer::setBaseGraph | ( | AnimGraph * | graph | ) |
Compatibility facade over setBaseSource(AnimGraph*).
在文件 AnimLayerMixer.cpp 第 132 行定义.
引用了 graph , 以及 setBaseSource().
◆ setBasePlayer()
| bool eve::animation::AnimLayerMixer::setBasePlayer | ( | AnimPlayer * | player | ) |
Compatibility facade over setBaseSource(AnimPlayer*).
在文件 AnimLayerMixer.cpp 第 123 行定义.
引用了 setBaseSource().
◆ setBaseSource()
| eve::Result< void > eve::animation::AnimLayerMixer::setBaseSource | ( | IAnimPoseSource * | source | ) |
Set the borrowed base pose source evaluated before layers.
- 返回
- Applied on success; Conflict/InvalidArgument on failure.
在文件 AnimLayerMixer.cpp 第 102 行定义.
引用了 eve::Applied, eve::Conflict, eve::Diagnostic::error(), eve::Result< T >::failure(), eve::InvalidArgument, layer, eve::NoOp, source, eve::Status::success() , 以及 eve::Result< T >::success().
被这些函数引用 setBaseGraph(), setBasePlayer() , 以及 setBaseStateMachine().
◆ setBaseStateMachine()
| bool eve::animation::AnimLayerMixer::setBaseStateMachine | ( | AnimStateMachine * | stateMachine | ) |
Compatibility facade over setBaseSource(AnimStateMachine*).
在文件 AnimLayerMixer.cpp 第 141 行定义.
引用了 setBaseSource().
◆ setLayerAdditiveReference()
| eve::Result< void > eve::animation::AnimLayerMixer::setLayerAdditiveReference | ( | const std::string & | name, |
| const std::string & | reference | ||
| ) |
Set additive reference for an additive layer: "bind" or "identity".
- 返回
- Applied on success; NotFound/InvalidArgument otherwise.
在文件 AnimLayerMixer.cpp 第 236 行定义.
引用了 eve::Applied, eve::Diagnostic::error(), eve::Result< T >::failure(), eve::InvalidArgument, layer, name, eve::NotFound, reference, eve::Status::success() , 以及 eve::Result< T >::success().
被这些函数引用 setLayerAdditiveReferenceCompat().
◆ setLayerAdditiveReferenceCompat()
| bool eve::animation::AnimLayerMixer::setLayerAdditiveReferenceCompat | ( | const std::string & | name, |
| const std::string & | reference | ||
| ) |
Compatibility facade over setLayerAdditiveReference.
在文件 AnimLayerMixer.cpp 第 250 行定义.
引用了 name, reference , 以及 setLayerAdditiveReference().
◆ setLayerEnabled()
| bool eve::animation::AnimLayerMixer::setLayerEnabled | ( | const std::string & | name, |
| bool | enabled | ||
| ) |
Enable or disable a layer without removing it. Disabled layers still advance.
在文件 AnimLayerMixer.cpp 第 229 行定义.
◆ setLayerWeight()
| bool eve::animation::AnimLayerMixer::setLayerWeight | ( | const std::string & | name, |
| float | weight | ||
| ) |
Set a layer's global clamped weight.
在文件 AnimLayerMixer.cpp 第 222 行定义.
引用了 eve::animation::clampf(), layer, name , 以及 weight.
◆ update()
| void eve::animation::AnimLayerMixer::update | ( | float | dt | ) |
Legacy seconds facade; explicitly forwards to advance().
在文件 AnimLayerMixer.cpp 第 363 行定义.
引用了 advance(), eve::Result< void >::ignore(), eve::animation::detail::legacyStep() , 以及 step.
该类的文档由以下文件生成:
- src/modules/animation/AnimLayerMixer.h
- src/modules/animation/AnimLayerMixer.cpp
Public 成员函数 继承自