Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / rive-cpp / src / bones / tendon.cpp
1 #include "rive/bones/tendon.hpp"
2 #include "rive/bones/bone.hpp"
3 #include "rive/bones/skin.hpp"
4 #include "rive/core_context.hpp"
5
6 using namespace rive;
7
8 StatusCode Tendon::onAddedDirty(CoreContext* context) {
9     Mat2D bind;
10     bind[0] = xx();
11     bind[1] = xy();
12     bind[2] = yx();
13     bind[3] = yy();
14     bind[4] = tx();
15     bind[5] = ty();
16
17     if (!bind.invert(&m_InverseBind)) {
18         return StatusCode::FailedInversion;
19     }
20
21     StatusCode code = Super::onAddedDirty(context);
22     if (code != StatusCode::Ok) {
23         return code;
24     }
25     auto coreObject = context->resolve(boneId());
26     if (coreObject == nullptr || !coreObject->is<Bone>()) {
27         return StatusCode::MissingObject;
28     }
29
30     m_Bone = reinterpret_cast<Bone*>(coreObject);
31
32     return StatusCode::Ok;
33 }
34
35 StatusCode Tendon::onAddedClean(CoreContext* context) {
36     if (!parent()->is<Skin>()) {
37         return StatusCode::MissingObject;
38     }
39
40     parent()->as<Skin>()->addTendon(this);
41
42     return StatusCode::Ok;
43 }