| 92 | , _listener(this) { } |
| 93 | |
| 94 | bool Spine::init() { |
| 95 | if (!Playable::init()) return false; |
| 96 | if (!_skeletonData) { |
| 97 | setAsManaged(); |
| 98 | return false; |
| 99 | } |
| 100 | _animationStateData = New<spine::AnimationStateData>(*_skeletonData->getSkel()); |
| 101 | _animationState = New<spine::AnimationState>(*_animationStateData.get()); |
| 102 | _skeleton = New<spine::Skeleton>(*_skeletonData->getSkel()); |
| 103 | _skeleton->updateWorldTransform(spine::Physics_Reset); |
| 104 | _clipper = New<spine::SkeletonClipping>(); |
| 105 | auto& slots = _skeleton->getSlots(); |
| 106 | for (size_t i = 0; i < slots.size(); i++) { |
| 107 | spine::Slot* slot = slots[i]; |
| 108 | if (!slot->getBone().isActive()) continue; |
| 109 | spine::Attachment* attachment = slot->getAppliedPose().getAttachment(); |
| 110 | if (attachment && !attachment->getRTTI().instanceOf(spine::BoundingBoxAttachment::rtti)) { |
| 111 | _bounds = New<spine::SkeletonBounds>(); |
| 112 | setHitTestEnabled(true); |
| 113 | break; |
| 114 | } |
| 115 | } |
| 116 | this->scheduleUpdate(); |
| 117 | return true; |
| 118 | } |
| 119 | |
| 120 | void Spine::setSpeed(float var) { |
| 121 | AssertIf(_flags.isOn(Node::Cleanup), "can not operate on an invalid Spine"); |
nothing calls this directly
no test coverage detected