aboutsummaryrefslogtreecommitdiff
path: root/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp')
-rw-r--r--tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp b/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp
index d51101f..b72c3b0 100644
--- a/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp
+++ b/tools/ArtistTools/source/BlastPlugin/SampleBase/renderer/Renderable.cpp
@@ -50,6 +50,33 @@ void Renderable::setMaterial(RenderMaterial& material)
void Renderable::render(Renderer& renderer, bool depthStencilOnly) const
{
+ if (renderer.bFetchSelection)
+ {
+ RenderMaterial::InstancePtr materialInstance = renderer.getSelectionRenderMaterialInstance();
+ if (!materialInstance->isValid())
+ {
+ PX_ALWAYS_ASSERT();
+ return;
+ }
+
+ materialInstance->bind(*renderer.m_context, 0);
+
+ // setup object CB
+ {
+ D3D11_MAPPED_SUBRESOURCE mappedResource;
+ renderer.m_context->Map(renderer.m_objectCB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
+ Renderer::CBObject* objectBuffer = (Renderer::CBObject*)mappedResource.pData;
+ objectBuffer->worldMatrix = PxMat44ToXMMATRIX(getModelMatrix());
+ // use selected to store mUniqueId
+ objectBuffer->selected = m_mesh.mUniqueId;
+ renderer.m_context->Unmap(renderer.m_objectCB, 0);
+ }
+
+ m_mesh.render(*renderer.m_context);
+
+ return;
+ }
+
if (!m_materialInstance->isValid())
{
PX_ALWAYS_ASSERT();