#pragma once #include "IAnimReader.hpp" namespace urde { class CAnimTreeNode : public IAnimReader { protected: std::string x4_name; public: CAnimTreeNode(std::string_view name) : x4_name(name) {} bool IsCAnimTreeNode() const {return true;} static std::shared_ptr Cast(std::unique_ptr&& ptr) { if (ptr->IsCAnimTreeNode()) return std::static_pointer_cast(std::shared_ptr(std::move(ptr))); return {}; } virtual u32 Depth() const=0; virtual CAnimTreeEffectiveContribution VGetContributionOfHighestInfluence() const=0; virtual u32 VGetNumChildren() const=0; virtual std::shared_ptr VGetBestUnblendedChild() const=0; virtual void VGetWeightedReaders(rstl::reserved_vector>, 16>& out, float w) const=0; void GetWeightedReaders(rstl::reserved_vector>, 16>& out, float w) const { VGetWeightedReaders(out, w); } CAnimTreeEffectiveContribution GetContributionOfHighestInfluence() const; u32 GetNumChildren() const; std::shared_ptr GetBestUnblendedChild() const; std::string_view GetName() const { return x4_name; } }; }