5#include <ozz/base/containers/vector.h>
6#include <ozz/animation/runtime/sampling_job.h>
7#include <ozz/base/memory/unique_ptr.h>
9#include "mathtypes.hpp"
11namespace ozz::animation {
35 virtual bool Sample(
float t,
float start,
38 ozz::vector<ozz::math::SoaTransform>& output,
39 ozz::animation::SamplingJob::Context& cache,
50 void SampleDirect(
float t,
const ozz::animation::Animation* anim, ozz::animation::SamplingJob::Context& cache, ozz::vector<ozz::math::SoaTransform>& locals)
const;
56class AnimationAsset :
public IAnimGraphable{
59 ozz::unique_ptr<ozz::animation::Animation> anim;
61 AnimationAsset(
const std::string& name);
69 bool Sample(
float t,
float start,
float speed,
bool looping, ozz::vector<ozz::math::SoaTransform>&, ozz::animation::SamplingJob::Context& cache,
const ozz::animation::Skeleton* skeleton)
const override;
74 constexpr inline const decltype(anim)& GetAnim()
const{
78 float duration_seconds;
85 BoneTransforms(
decltype(transforms) t) : transforms(t){}
88 struct SingleTransform{
93 SingleTransform GetBone(uint32_t index)
const;
94 void SetBone(uint32_t index,
const SingleTransform&);
100class CustomSkeletonAnimation :
public IAnimGraphable {
102 bool Sample(
float t,
float start,
float speed,
bool looping, ozz::vector<ozz::math::SoaTransform>&, ozz::animation::SamplingJob::Context& cache,
const ozz::animation::Skeleton* skeleton)
const override;
108 CustomSkeletonAnimation(
const decltype(mutateBonesHook)& hook) : mutateBonesHook(hook) {}
111struct CustomSkeletonAnimationFunction {
122 virtual bool operator()(BoneTransforms transforms,
const ozz::animation::Skeleton* skeleton,
float t,
float start,
float end,
bool loop) = 0;
128class AnimationAssetSegment :
public IAnimGraphable{
130 float start_ticks, end_ticks;
131 Ref<AnimationAsset> anim_asset;
138 AnimationAssetSegment(
decltype(anim_asset) asset,
float start,
float end = 0) : anim_asset(asset), start_ticks(start), end_ticks(end){}
140 bool Sample(
float global_time,
float last_globalplaytime,
float speed,
bool looping, ozz::vector<ozz::math::SoaTransform>&, ozz::animation::SamplingJob::Context& cache,
const ozz::animation::Skeleton* skeleton)
const override;
143class AnimationClip :
public IAnimGraphable{
146 ozz::vector<ozz::math::SoaTransform> locals;
148 locked_hashmap<Ref<IAnimGraphable>,Sampler, SpinLock> influence;
154 inline void SetAnimationInfluence(Ref<IAnimGraphable> asset,
float inf = 1){
155 influence[asset].influence = inf;
162 inline void RemoveAnimation(Ref<IAnimGraphable> asset){
163 influence.erase(asset);
170 inline bool IsEmpty()
const{
171 return influence.empty();
180 bool Sample(
float t,
float start,
float speed,
bool looping, ozz::vector<ozz::math::SoaTransform>&, ozz::animation::SamplingJob::Context& cache,
const ozz::animation::Skeleton* skeleton)
const override;
Definition animation.h:62
GLM_FUNC_DECL qua< T, Q > rotation(vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
Definition quaternion.inl:122
Definition Animation.hpp:6
Definition type_quat.hpp:20
Definition qualifier.hpp:35