summaryrefslogtreecommitdiffstats
path: root/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp')
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
index d6fb3b1b..7c2603f6 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
@@ -696,9 +696,19 @@ namespace render {
{
if (inRenderableObject.m_RenderableFlags.IsText()) {
STextRenderable &theRenderable = static_cast<STextRenderable &>(inRenderableObject);
- if (&theRenderable.m_Text == &inNode)
+ if (&theRenderable.m_Text == &inNode) {
return inPickRay.GetRelativeXY(inRenderableObject.m_GlobalTransform,
inRenderableObject.m_Bounds);
+ }
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ } else if (inRenderableObject.m_RenderableFlags.isDistanceField()) {
+ SDistanceFieldRenderable &theRenderable = static_cast<SDistanceFieldRenderable &>(
+ inRenderableObject);
+ if (&theRenderable.m_text == &inNode) {
+ return inPickRay.GetRelativeXY(inRenderableObject.m_GlobalTransform,
+ inRenderableObject.m_Bounds);
+ }
+#endif
} else if (inRenderableObject.m_RenderableFlags.IsDefaultMaterialMeshSubset()) {
SSubsetRenderable &theRenderable = static_cast<SSubsetRenderable &>(inRenderableObject);
if (&theRenderable.m_ModelContext.m_Model == &inNode)
@@ -964,14 +974,15 @@ namespace render {
}
// This doesn't have to be cheap.
- void Qt3DSRendererImpl::RunLayerRender(SLayer &inLayer, const QT3DSMat44 &inViewProjection)
+ void Qt3DSRendererImpl::RunLayerRender(SLayer &inLayer, const QT3DSMat44 &inProjection,
+ const QT3DSMat44 &inViewProjection)
{
SLayerRenderData *theData = GetOrCreateLayerRenderDataForNode(inLayer);
if (theData == NULL || theData->m_Camera == NULL) {
QT3DS_ASSERT(false);
return;
}
- theData->PrepareAndRender(inViewProjection);
+ theData->PrepareAndRender(inProjection, inViewProjection);
}
void Qt3DSRendererImpl::AddRenderWidget(IRenderWidget &inWidget)
@@ -1356,6 +1367,10 @@ namespace render {
&static_cast<SSubsetRenderable *>(&inRenderableObject)->m_ModelContext.m_Model;
else if (inRenderableObject.m_RenderableFlags.IsText())
thePickObject = &static_cast<STextRenderable *>(&inRenderableObject)->m_Text;
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ else if (inRenderableObject.m_RenderableFlags.isDistanceField())
+ thePickObject = &static_cast<SDistanceFieldRenderable *>(&inRenderableObject)->m_text;
+#endif
else if (inRenderableObject.m_RenderableFlags.IsCustomMaterialMeshSubset())
thePickObject = &static_cast<SCustomMaterialRenderable *>(&inRenderableObject)
->m_ModelContext.m_Model;