| 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 | { |
nothing calls this directly
no test coverage detected