LayerState::makeInstance to return unique_ptr
diff --git a/include/rive/animation/animation_state.hpp b/include/rive/animation/animation_state.hpp index aff5c3d..5cb0282 100644 --- a/include/rive/animation/animation_state.hpp +++ b/include/rive/animation/animation_state.hpp
@@ -15,7 +15,7 @@ public: const LinearAnimation* animation() const { return m_Animation; } - StateInstance* makeInstance(ArtboardInstance*) const override; + std::unique_ptr<StateInstance> makeInstance(ArtboardInstance*) const override; }; } // namespace rive
diff --git a/include/rive/animation/blend_state_1d.hpp b/include/rive/animation/blend_state_1d.hpp index 83d0695..e50c100 100644 --- a/include/rive/animation/blend_state_1d.hpp +++ b/include/rive/animation/blend_state_1d.hpp
@@ -12,7 +12,7 @@ StatusCode import(ImportStack& importStack) override; - StateInstance* makeInstance(ArtboardInstance*) const override; + std::unique_ptr<StateInstance> makeInstance(ArtboardInstance*) const override; }; } // namespace rive
diff --git a/include/rive/animation/blend_state_direct.hpp b/include/rive/animation/blend_state_direct.hpp index fd8f120..160f8de 100644 --- a/include/rive/animation/blend_state_direct.hpp +++ b/include/rive/animation/blend_state_direct.hpp
@@ -5,7 +5,7 @@ namespace rive { class BlendStateDirect : public BlendStateDirectBase { public: - StateInstance* makeInstance(ArtboardInstance*) const override; + std::unique_ptr<StateInstance> makeInstance(ArtboardInstance*) const override; }; } // namespace rive
diff --git a/include/rive/animation/layer_state.hpp b/include/rive/animation/layer_state.hpp index e957f9e..6e9b20b 100644 --- a/include/rive/animation/layer_state.hpp +++ b/include/rive/animation/layer_state.hpp
@@ -36,7 +36,7 @@ /// Make an instance of this state that can be advanced and applied by /// the state machine when it is active or being transitioned from. - virtual StateInstance* makeInstance(ArtboardInstance* instance) const; + virtual std::unique_ptr<StateInstance> makeInstance(ArtboardInstance* instance) const; }; } // namespace rive
diff --git a/src/animation/animation_state.cpp b/src/animation/animation_state.cpp index c279289..3d25d42 100644 --- a/src/animation/animation_state.cpp +++ b/src/animation/animation_state.cpp
@@ -7,10 +7,10 @@ using namespace rive; -StateInstance* AnimationState::makeInstance(ArtboardInstance* instance) const { +std::unique_ptr<StateInstance> AnimationState::makeInstance(ArtboardInstance* instance) const { if (animation() == nullptr) { // Failed to load at runtime/some new type we don't understand. - return new SystemStateInstance(this, instance); + return std::make_unique<SystemStateInstance>(this, instance); } - return new AnimationStateInstance(this, instance); + return std::make_unique<AnimationStateInstance>(this, instance); } \ No newline at end of file
diff --git a/src/animation/blend_state_1d.cpp b/src/animation/blend_state_1d.cpp index 3399c6e..0273fcb 100644 --- a/src/animation/blend_state_1d.cpp +++ b/src/animation/blend_state_1d.cpp
@@ -6,8 +6,8 @@ using namespace rive; -StateInstance* BlendState1D::makeInstance(ArtboardInstance* instance) const { - return new BlendState1DInstance(this, instance); +std::unique_ptr<StateInstance> BlendState1D::makeInstance(ArtboardInstance* instance) const { + return std::make_unique<BlendState1DInstance>(this, instance); } StatusCode BlendState1D::import(ImportStack& importStack) {
diff --git a/src/animation/blend_state_direct.cpp b/src/animation/blend_state_direct.cpp index cc421ac..b90ff03 100644 --- a/src/animation/blend_state_direct.cpp +++ b/src/animation/blend_state_direct.cpp
@@ -6,6 +6,6 @@ using namespace rive; -StateInstance* BlendStateDirect::makeInstance(ArtboardInstance* instance) const { - return new BlendStateDirectInstance(this, instance); +std::unique_ptr<StateInstance> BlendStateDirect::makeInstance(ArtboardInstance* instance) const { + return std::make_unique<BlendStateDirectInstance>(this, instance); } \ No newline at end of file
diff --git a/src/animation/layer_state.cpp b/src/animation/layer_state.cpp index 42327ac..45c0e8c 100644 --- a/src/animation/layer_state.cpp +++ b/src/animation/layer_state.cpp
@@ -46,6 +46,6 @@ void LayerState::addTransition(StateTransition* transition) { m_Transitions.push_back(transition); } -StateInstance* LayerState::makeInstance(ArtboardInstance* instance) const { - return new SystemStateInstance(this, instance); +std::unique_ptr<StateInstance> LayerState::makeInstance(ArtboardInstance* instance) const { + return std::make_unique<SystemStateInstance>(this, instance); } \ No newline at end of file
diff --git a/src/animation/state_machine_instance.cpp b/src/animation/state_machine_instance.cpp index 1176c6c..b5bfa84 100644 --- a/src/animation/state_machine_instance.cpp +++ b/src/animation/state_machine_instance.cpp
@@ -52,7 +52,7 @@ void init(const StateMachineLayer* layer, ArtboardInstance* instance) { m_ArtboardInstance = instance; assert(m_Layer == nullptr); - m_AnyStateInstance = layer->anyState()->makeInstance(instance); + m_AnyStateInstance = layer->anyState()->makeInstance(instance).release(); m_Layer = layer; changeState(m_Layer->entryState()); } @@ -124,7 +124,7 @@ if ((m_CurrentState == nullptr ? nullptr : m_CurrentState->state()) == stateTo) { return false; } - m_CurrentState = stateTo == nullptr ? nullptr : stateTo->makeInstance(m_ArtboardInstance); + m_CurrentState = stateTo == nullptr ? nullptr : stateTo->makeInstance(m_ArtboardInstance).release(); return true; }