MCPcopy Create free account
hub / github.com/OneLoneCoder/olcPixelGameEngine / adv_FlushLayer

Method adv_FlushLayer

olcPixelGameEngine.h:4713–4761  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4711 }
4712
4713 void PixelGameEngine::adv_FlushLayer(const size_t nLayerID)
4714 {
4715 auto& layer = vLayers[nLayerID];
4716
4717 if (layer.bShow)
4718 {
4719 if (layer.funcHook == nullptr)
4720 {
4721 renderer->ApplyTexture(layer.pDrawTarget.Decal()->id);
4722 if (!bSuspendTextureTransfer)
4723 {
4724 layer.pDrawTarget.Decal()->Update();
4725 layer.bUpdate = false;
4726 }
4727
4728 // Can't use this as it assumes full screen coords
4729 // renderer->DrawLayerQuad(layer.vOffset, layer.vScale, layer.tint);
4730 // Instead, render a textured decal
4731
4732 olc::vf2d vScreenSpacePos =
4733 {
4734 (layer.vOffset.x * vInvScreenSize.x) * 2.0f - 1.0f,
4735 ((layer.vOffset.y * vInvScreenSize.y) * 2.0f - 1.0f) * -1.0f
4736 };
4737
4738 olc::vf2d vScreenSpaceDim =
4739 {
4740 vScreenSpacePos.x + (2.0f * (float(layer.pDrawTarget.Sprite()->width) * vInvScreenSize.x)) * layer.vScale.x,
4741 vScreenSpacePos.y - (2.0f * (float(layer.pDrawTarget.Sprite()->height) * vInvScreenSize.y)) * layer.vScale.y
4742 };
4743
4744 DecalInstance di;
4745 di.decal = layer.pDrawTarget.Decal();
4746 di.points = 4;
4747 di.tint = { olc::WHITE, olc::WHITE, olc::WHITE, olc::WHITE };
4748 di.pos = { { vScreenSpacePos.x, vScreenSpacePos.y }, { vScreenSpacePos.x, vScreenSpaceDim.y }, { vScreenSpaceDim.x, vScreenSpaceDim.y }, { vScreenSpaceDim.x, vScreenSpacePos.y } };
4749 di.uv = { { 0.0f, 0.0f}, {0.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, 0.0f} };
4750 di.w = { 1, 1, 1, 1 };
4751 di.mode = DecalMode::NORMAL;
4752 di.structure = DecalStructure::FAN;
4753 renderer->DrawDecal(di);
4754 }
4755 else
4756 {
4757 // Mwa ha ha.... Have Fun!!!
4758 layer.funcHook();
4759 }
4760 }
4761 }
4762
4763 void PixelGameEngine::adv_FlushLayerDecals(const size_t nLayerID)
4764 {

Callers

nothing calls this directly

Calls 5

DecalMethod · 0.80
ApplyTextureMethod · 0.45
UpdateMethod · 0.45
SpriteMethod · 0.45
DrawDecalMethod · 0.45

Tested by

no test coverage detected