SpiecsEngine
 
Loading...
Searching...
No Matches

◆ Render()

void Spices::WorldPickRenderer::Render ( TimeStep & ts,
FrameInfo & frameInfo )
overridevirtual

The interface is inherited from Renderer.

Parameters
[in]tsTimeStep.
[in]frameInfoThe current frame data.

Implements Spices::Renderer.

Definition at line 56 of file WorldPickRenderer.cpp.

57 {
59
60 RenderBehaveBuilder builder{ this ,frameInfo.m_FrameIndex, frameInfo.m_ImageIndex };
61
62 builder.BeginRenderPass();
63
64 builder.BindDescriptorSet(DescriptorSetManager::GetByName("PreRenderer"));
65
66 builder.BindDescriptorSet(DescriptorSetManager::GetByName({ m_Pass->GetName(), "WorldPick" }));
67
68 static std::function<void(Entity)> drawSelected = [&](Entity e) {
69
70 if (e.HasComponent<MeshComponent>())
71 {
72 MeshComponent& meshComp = e.GetComponent<MeshComponent>();
73
74 meshComp.GetMesh()->Draw(m_VulkanState.m_GraphicCommandBuffer[frameInfo.m_FrameIndex], [&](uint32_t meshpackId, auto meshPack) {
75 builder.BindPipeline("WorldPickRenderer.WorldPick.Default");
76
77 builder.UpdatePushConstant<uint64_t>([&](auto& push) {
78 push = meshPack->GetMeshDesc().GetBufferAddress();
79 });
80 });
81 }
82
83 if (e.HasComponent<SpriteComponent>())
84 {
85 SpriteComponent& meshComp = e.GetComponent<SpriteComponent>();
86
87 meshComp.GetMesh()->Draw(m_VulkanState.m_GraphicCommandBuffer[frameInfo.m_FrameIndex], [&](uint32_t meshpackId, auto meshPack) {
88 builder.BindPipeline("WorldPickRenderer.WorldPick.Default");
89
90 builder.UpdatePushConstant<uint64_t>([&](auto& push) {
91 push = meshPack->GetMeshDesc().GetBufferAddress();
92 });
93 });
94 }
95 };
96
97 frameInfo.m_PickEntityID.for_each([&](const auto& k, const auto& v) {
98
99 Entity e = frameInfo.m_World->QueryEntitybyID(k);
100
101 drawSelected(e);
102
103 if (e.HasComponent<EntityComponent>())
104 {
105 EntityComponent& entityComp = e.GetComponent<EntityComponent>();
106
107 for (auto& entity : entityComp.GetEntities())
108 {
109 Entity child = frameInfo.m_World->QueryEntitybyID(entity);
110 drawSelected(child);
111 }
112 }
113
114 return false;
115 });
116
117 builder.EndRenderPass();
118 }
#define SPICES_PROFILE_ZONE
static DescriptorSetInfo & GetByName(const String2 &name)
Get a DescriptorSetInfo by owner's name.
std::shared_ptr< RendererPass > m_Pass
RendererPass.
Definition Renderer.h:2012
VulkanState & m_VulkanState
This variable is passed while renderer instanced.
Definition Renderer.h:1992
std::array< VkCommandBuffer, MaxFrameInFlight > m_GraphicCommandBuffer

References Spices::Renderer::RenderBehaveBuilder::BeginRenderPass(), Spices::Renderer::RenderBehaveBuilder::EndRenderPass(), Spices::FrameInfo::m_FrameIndex, and Spices::FrameInfo::m_ImageIndex.