[Adaptation Layer] Added rive-tizen adaptation layer class.
[platform/core/uifw/rive-tizen.git] / submodule / src / animation / layer_state.cpp
1 #include "animation/layer_state.hpp"
2 #include "animation/transition_bool_condition.hpp"
3 #include "importers/import_stack.hpp"
4 #include "importers/state_machine_layer_importer.hpp"
5 #include "generated/animation/state_machine_layer_base.hpp"
6 #include "animation/state_transition.hpp"
7 #include "animation/system_state_instance.hpp"
8
9 using namespace rive;
10
11 LayerState::~LayerState()
12 {
13         for (auto transition : m_Transitions)
14         {
15                 delete transition;
16         }
17 }
18
19 StatusCode LayerState::onAddedDirty(CoreContext* context)
20 {
21         StatusCode code;
22         for (auto transition : m_Transitions)
23         {
24                 if ((code = transition->onAddedDirty(context)) != StatusCode::Ok)
25                 {
26                         return code;
27                 }
28         }
29         return StatusCode::Ok;
30 }
31
32 StatusCode LayerState::onAddedClean(CoreContext* context)
33 {
34         StatusCode code;
35         for (auto transition : m_Transitions)
36         {
37                 if ((code = transition->onAddedClean(context)) != StatusCode::Ok)
38                 {
39                         return code;
40                 }
41         }
42         return StatusCode::Ok;
43 }
44
45 StatusCode LayerState::import(ImportStack& importStack)
46 {
47         auto layerImporter = importStack.latest<StateMachineLayerImporter>(
48             StateMachineLayerBase::typeKey);
49         if (layerImporter == nullptr)
50         {
51                 return StatusCode::MissingObject;
52         }
53         layerImporter->addState(this);
54         return Super::import(importStack);
55 }
56
57 void LayerState::addTransition(StateTransition* transition)
58 {
59         m_Transitions.push_back(transition);
60 }
61
62 StateInstance* LayerState::makeInstance() const
63 {
64         return new SystemStateInstance(this);
65 }