MCPcopy Create free account
hub / github.com/IppClub/Dora-SSR / render

Method render

Source/Node/Label.cpp:724–817  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

722}
723
724void Label::render() {
725 if (_font && _font->getInfo().sdf && _effect) {
726 const auto& passes = _effect->getPasses();
727 if (!passes.empty()) {
728 passes.front()->set("u_smooth"sv, _smooth.x, _smooth.y, _outlineWidth, 0.0f);
729 passes.front()->set("u_outlineColor"sv, _outlineColor);
730 }
731 }
732
733 if (_flags.isOff(Label::TextBatched)) {
734 Node::render();
735 return;
736 }
737
738 if (_flags.isOn(Label::QuadDirty)) {
739 _flags.setOff(Label::QuadDirty);
740 updateVertTexCoord();
741 updateVertPosition();
742 _flags.setOff(Label::VertexColorDirty);
743 _flags.setOn(Label::VertexPosDirty);
744 }
745
746 if (_flags.isOn(Label::VertexColorDirty)) {
747 _flags.setOff(Label::VertexColorDirty);
748 updateVertColor();
749 }
750
751 if (SharedDirector.isFrustumCulling() && !_quadPos.empty()) {
752 float minX = _quadPos[0].lb.x;
753 float minY = _quadPos[0].lb.y;
754 float maxX = _quadPos[0].rt.x;
755 float maxY = _quadPos[0].rt.y;
756 for (size_t i = 1; i < _quadPos.size(); i++) {
757 const SpriteQuad::Position& quadPos = _quadPos[i];
758 minX = std::min(minX, quadPos.lb.x);
759 minY = std::min(minY, quadPos.lb.y);
760 maxX = std::max(maxX, quadPos.rt.x);
761 maxY = std::max(maxY, quadPos.rt.y);
762 }
763 AABB aabb;
764 Matrix::mulAABB(aabb, getWorld(), {
765 {minX, minY, 0},
766 {maxX, maxY, 0},
767 });
768 if (!SharedDirector.isInFrustum(aabb)) {
769 return;
770 }
771 }
772
773 if (_flags.isOn(Label::VertexPosDirty)) {
774 _flags.setOff(Label::VertexPosDirty);
775 Matrix transform;
776 Matrix::mulMtx(transform, SharedDirector.getViewProjection(), getWorld());
777 for (size_t i = 0; i < _quadPos.size(); i++) {
778 SpriteQuad& quad = _quads[i];
779 SpriteQuad::Position& quadPos = _quadPos[i];
780 Matrix::mulVec4(&quad.lt.x, transform, quadPos.lt);
781 Matrix::mulVec4(&quad.rt.x, transform, quadPos.rt);

Callers

nothing calls this directly

Calls 15

isOffMethod · 0.80
isOnMethod · 0.80
setOffMethod · 0.80
setOnMethod · 0.80
isFrustumCullingMethod · 0.80
isInFrustumMethod · 0.80
setCurrentMethod · 0.80
getTargetMethod · 0.80
setMethod · 0.65
getMethod · 0.65
pushMethod · 0.65
minFunction · 0.50

Tested by

no test coverage detected