MCPcopy Create free account
hub / github.com/carbonengine/trinity / Pick

Method Pick

trinity/Tr2DebugRenderer.cpp:745–826  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

743}
744
745void Tr2DebugRenderer::Pick( EvePendingPickingReadback& readback, bool synchronize, Tr2RenderContext& renderContext )
746{
747 auto shader = m_pickingEffect->GetShaderStateInterface();
748 if( !shader )
749 {
750 return;
751 }
752 if( m_objectLineOffsets.empty() && m_objectTriangleOffsets.empty() )
753 {
754 return;
755 }
756
757 Tr2PickBuffer& pickBuffer = readback.m_debugPickBuffer;
758 pickBuffer.SetClearColor( 0 );
759 pickBuffer.PrepareResources();
760
761 if( !pickBuffer.BeginRendering( 0.f, renderContext ) )
762 {
763 return;
764 }
765
766 auto handle = GetVertexDeclarationHandle( renderContext );
767
768 shader->ApplyAllStateForPass( 0, 0, renderContext );
769 m_pickingEffect->ApplyMaterialDataForPass( 0, 0, renderContext );
770 renderContext.m_esm.ApplyVertexDeclaration( handle );
771
772 if( !m_objectLineOffsets.empty() )
773 {
774
775 std::vector<Tr2DebugObjectReference>& lineObjects = readback.m_debugLineObjects;
776 lineObjects.reserve( m_objectLineOffsets.size() );
777
778 renderContext.SetTopology( Tr2RenderContextEnum::TOP_LINES );
779
780 for( size_t i = 0; i < m_objectLineOffsets.size(); ++i )
781 {
782 auto object = m_objectLineOffsets[i].first;
783
784 lineObjects.push_back( object );
785
786 if( !object )
787 {
788 continue;
789 }
790 auto begin = m_objectLineOffsets[i].second;
791 auto end = i + 1 < m_objectLineOffsets.size() ? m_objectLineOffsets[i + 1].second : m_lines.size();
792 renderContext.DrawPrimitiveUP( uint32_t( ( end - begin ) / 2 ), &m_lines[begin], uint32_t( sizeof( Vertex ) ) );
793 }
794 }
795
796 if( !m_objectTriangleOffsets.empty() )
797 {
798
799 std::vector<Tr2DebugObjectReference>& triangleObjects = readback.m_debugTriangleObjects;
800 triangleObjects.reserve( m_objectTriangleOffsets.size() );
801
802 renderContext.SetTopology( Tr2RenderContextEnum::TOP_TRIANGLES );

Callers 1

PerformPickingMethod · 0.80

Calls 14

emptyMethod · 0.80
SetClearColorMethod · 0.80
PrepareResourcesMethod · 0.80
ApplyAllStateForPassMethod · 0.80
sizeMethod · 0.80
EndRenderingMethod · 0.80
MapDebugMethod · 0.80
BeginRenderingMethod · 0.45

Tested by

no test coverage detected