MCPcopy Create free account
hub / github.com/ddnet/ddnet / RenderQuadLayer

Method RenderQuadLayer

src/game/map/render_layer.cpp:934–1018  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

932}
933
934void CRenderLayerQuads::RenderQuadLayer(float Alpha, const CRenderLayerParams &Params)
935{
936 CQuadLayerVisuals &Visuals = m_VisualQuad.value();
937 if(Visuals.m_BufferContainerIndex == -1)
938 return; // no visuals were created
939
940 for(auto &QuadCluster : m_vQuadClusters)
941 {
942 if(!IsVisibleInClipRegion(QuadCluster.m_ClipRegion))
943 continue;
944
945 if(!QuadCluster.m_Grouped)
946 {
947 bool AnyVisible = false;
948 for(int QuadClusterId = 0; QuadClusterId < QuadCluster.m_NumQuads; ++QuadClusterId)
949 {
950 CQuad *pQuad = &m_pQuads[QuadCluster.m_StartIndex + QuadClusterId];
951
952 ColorRGBA Color = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
953 if(pQuad->m_ColorEnv >= 0)
954 {
955 m_pEnvelopeManager->EnvelopeEval()->EnvelopeEval(pQuad->m_ColorEnvOffset, pQuad->m_ColorEnv, Color, 4);
956 }
957 Color.a *= Alpha;
958
959 SQuadRenderInfo &QInfo = QuadCluster.m_vQuadRenderInfo[QuadClusterId];
960 if(Color.a < 0.0f)
961 Color.a = 0.0f;
962 QInfo.m_Color = Color;
963 const bool IsVisible = Color.a >= 0.0f;
964 AnyVisible |= IsVisible;
965
966 if(IsVisible)
967 {
968 ColorRGBA Position = ColorRGBA(0.0f, 0.0f, 0.0f, 0.0f);
969 m_pEnvelopeManager->EnvelopeEval()->EnvelopeEval(pQuad->m_PosEnvOffset, pQuad->m_PosEnv, Position, 3);
970 QInfo.m_Offsets.x = Position.r;
971 QInfo.m_Offsets.y = Position.g;
972 QInfo.m_Rotation = Position.b / 180.0f * pi;
973 }
974 }
975 if(AnyVisible)
976 Graphics()->RenderQuadLayer(Visuals.m_BufferContainerIndex, QuadCluster.m_vQuadRenderInfo.data(), QuadCluster.m_NumQuads, QuadCluster.m_StartIndex);
977 }
978 else
979 {
980 SQuadRenderInfo &QInfo = QuadCluster.m_vQuadRenderInfo[0];
981
982 ColorRGBA Color = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
983 if(QuadCluster.m_ColorEnv >= 0)
984 {
985 m_pEnvelopeManager->EnvelopeEval()->EnvelopeEval(QuadCluster.m_ColorEnvOffset, QuadCluster.m_ColorEnv, Color, 4);
986 }
987
988 Color.a *= Alpha;
989 if(Color.a <= 0.0f)
990 continue;
991 QInfo.m_Color = Color;

Callers

nothing calls this directly

Calls 6

GraphicsFunction · 0.85
str_formatFunction · 0.85
RenderMapFunction · 0.85
RenderDebugClipMethod · 0.80
ColorRGBAClass · 0.50
EnvelopeEvalMethod · 0.45

Tested by

no test coverage detected