void Snapshot::applyClip(const ClipBase* recordedClip, const Matrix4& transform) { if (CC_UNLIKELY(recordedClip && recordedClip->intersectWithRoot)) { // current clip is being replaced, but must intersect with clip root *mClipArea = *(getClipRoot(this)->mClipArea); } mClipArea->applyClip(recordedClip, transform); }
const ClipBase* Snapshot::serializeIntersectedClip(LinearAllocator& allocator, const ClipBase* recordedClip, const Matrix4& recordedClipTransform) { auto target = this; if (CC_UNLIKELY(recordedClip && recordedClip->intersectWithRoot)) { // Clip must be intersected with root, instead of current clip. target = getClipRoot(this); } return target->mClipArea->serializeIntersectedClip(allocator, recordedClip, recordedClipTransform); }