Revert "Declare that animation-instance wants artboard-instance" This reverts commit 03c7cf24f94e9dfcfa20ee34d8580c73f1799769.
diff --git a/include/rive/animation/blend_state_instance.hpp b/include/rive/animation/blend_state_instance.hpp index 38c5083..9b1a120 100644 --- a/include/rive/animation/blend_state_instance.hpp +++ b/include/rive/animation/blend_state_instance.hpp
@@ -23,7 +23,7 @@ const T* blendAnimation() const { return m_BlendAnimation; } const LinearAnimationInstance* animationInstance() const { return &m_AnimationInstance; } - BlendStateAnimationInstance(const T* blendAnimation, ArtboardInstance* instance) : + BlendStateAnimationInstance(const T* blendAnimation, Artboard* instance) : m_BlendAnimation(blendAnimation), m_AnimationInstance(blendAnimation->animation(), instance) {}
diff --git a/include/rive/animation/linear_animation_instance.hpp b/include/rive/animation/linear_animation_instance.hpp index dcbdc67..d03b8db 100644 --- a/include/rive/animation/linear_animation_instance.hpp +++ b/include/rive/animation/linear_animation_instance.hpp
@@ -8,7 +8,7 @@ class LinearAnimationInstance { private: const LinearAnimation* m_Animation = nullptr; - ArtboardInstance* m_ArtboardInstance; + Artboard* m_ArtboardInstance; float m_Time; float m_TotalTime; float m_LastTotalTime; @@ -18,7 +18,7 @@ int m_LoopValue = -1; public: - LinearAnimationInstance(const LinearAnimation*, ArtboardInstance* instance); + LinearAnimationInstance(const LinearAnimation*, Artboard* instance); // Advance the animation by the specified time. Returns true if the // animation will continue to animate after this advance.
diff --git a/include/rive/animation/nested_linear_animation.hpp b/include/rive/animation/nested_linear_animation.hpp index e96df87..7940c51 100644 --- a/include/rive/animation/nested_linear_animation.hpp +++ b/include/rive/animation/nested_linear_animation.hpp
@@ -6,13 +6,12 @@ class LinearAnimationInstance; class NestedLinearAnimation : public NestedLinearAnimationBase { protected: - std::unique_ptr<LinearAnimationInstance> m_AnimationInstance; + LinearAnimationInstance* m_AnimationInstance = nullptr; public: - NestedLinearAnimation(); - ~NestedLinearAnimation() override; + ~NestedLinearAnimation(); - void initializeAnimation(ArtboardInstance*) override; + void initializeAnimation(Artboard* artboard) override; }; } // namespace rive
diff --git a/include/rive/animation/nested_remap_animation.hpp b/include/rive/animation/nested_remap_animation.hpp index f71c229..9303572 100644 --- a/include/rive/animation/nested_remap_animation.hpp +++ b/include/rive/animation/nested_remap_animation.hpp
@@ -7,7 +7,7 @@ public: void timeChanged() override; void advance(float elapsedSeconds) override; - void initializeAnimation(ArtboardInstance*) override; + void initializeAnimation(Artboard* artboard) override; }; } // namespace rive
diff --git a/include/rive/animation/nested_state_machine.hpp b/include/rive/animation/nested_state_machine.hpp index aa30f02..d96c07b 100644 --- a/include/rive/animation/nested_state_machine.hpp +++ b/include/rive/animation/nested_state_machine.hpp
@@ -3,12 +3,10 @@ #include "rive/generated/animation/nested_state_machine_base.hpp" #include <stdio.h> namespace rive { - class ArtboardInstance; - class NestedStateMachine : public NestedStateMachineBase { public: void advance(float elapsedSeconds) override; - void initializeAnimation(ArtboardInstance*) override; + void initializeAnimation(Artboard* artboard) override; }; } // namespace rive
diff --git a/include/rive/nested_animation.hpp b/include/rive/nested_animation.hpp index 1f4491b..bbc0a87 100644 --- a/include/rive/nested_animation.hpp +++ b/include/rive/nested_animation.hpp
@@ -3,8 +3,6 @@ #include "rive/generated/nested_animation_base.hpp" #include <stdio.h> namespace rive { - class ArtboardInstance; - class NestedAnimation : public NestedAnimationBase { public: StatusCode onAddedDirty(CoreContext* context) override; @@ -14,7 +12,7 @@ // Initialize the animation (make instances as necessary) from the // source artboard. - virtual void initializeAnimation(ArtboardInstance*) = 0; + virtual void initializeAnimation(Artboard* artboard) = 0; }; } // namespace rive
diff --git a/src/animation/linear_animation_instance.cpp b/src/animation/linear_animation_instance.cpp index 1c8badb..4e6e987 100644 --- a/src/animation/linear_animation_instance.cpp +++ b/src/animation/linear_animation_instance.cpp
@@ -6,7 +6,7 @@ using namespace rive; LinearAnimationInstance::LinearAnimationInstance(const LinearAnimation* animation, - ArtboardInstance* instance) : + Artboard* instance) : m_Animation(animation), m_ArtboardInstance(instance), m_Time(animation->enableWorkArea() ? (float)animation->workStart() / animation->fps() : 0),
diff --git a/src/animation/nested_linear_animation.cpp b/src/animation/nested_linear_animation.cpp index e425c4f..2d418d1 100644 --- a/src/animation/nested_linear_animation.cpp +++ b/src/animation/nested_linear_animation.cpp
@@ -3,10 +3,9 @@ using namespace rive; -NestedLinearAnimation::NestedLinearAnimation() {} -NestedLinearAnimation::~NestedLinearAnimation() {} +NestedLinearAnimation::~NestedLinearAnimation() { delete m_AnimationInstance; } -void NestedLinearAnimation::initializeAnimation(ArtboardInstance* artboard) { - m_AnimationInstance = std::make_unique<LinearAnimationInstance>(artboard->animation(animationId()), - artboard); +void NestedLinearAnimation::initializeAnimation(Artboard* artboard) { + assert(m_AnimationInstance == nullptr); + m_AnimationInstance = new LinearAnimationInstance(artboard->animation(animationId()), artboard); } \ No newline at end of file
diff --git a/src/animation/nested_remap_animation.cpp b/src/animation/nested_remap_animation.cpp index 2af1522..fd146eb 100644 --- a/src/animation/nested_remap_animation.cpp +++ b/src/animation/nested_remap_animation.cpp
@@ -10,7 +10,7 @@ } } -void NestedRemapAnimation::initializeAnimation(ArtboardInstance* artboard) { +void NestedRemapAnimation::initializeAnimation(Artboard* artboard) { Super::initializeAnimation(artboard); timeChanged(); }
diff --git a/src/animation/nested_state_machine.cpp b/src/animation/nested_state_machine.cpp index 139572a..2b3ad7c 100644 --- a/src/animation/nested_state_machine.cpp +++ b/src/animation/nested_state_machine.cpp
@@ -4,4 +4,4 @@ void NestedStateMachine::advance(float elapsedSeconds) {} -void NestedStateMachine::initializeAnimation(ArtboardInstance*) {} \ No newline at end of file +void NestedStateMachine::initializeAnimation(Artboard* artboard) {} \ No newline at end of file
diff --git a/src/nested_artboard.cpp b/src/nested_artboard.cpp index 5eec148..156a9fd 100644 --- a/src/nested_artboard.cpp +++ b/src/nested_artboard.cpp
@@ -82,12 +82,9 @@ // does require that we always use an artboard instance (not just the source // artboard) when working with nested artboards, but in general this is good // practice for any loaded Rive file. - assert(m_NestedInstance == nullptr || m_NestedInstance->isInstance()); - - if (m_NestedInstance != nullptr && m_NestedInstance->isInstance()) { - auto abi = static_cast<ArtboardInstance*>(m_NestedInstance); + if (m_NestedInstance != nullptr) { for (auto animation : m_NestedAnimations) { - animation->initializeAnimation(abi); + animation->initializeAnimation(m_NestedInstance); } } return Super::onAddedClean(context);