From 749b02cfb80527188ff2bbe38df72d63b51a2270 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 30 Sep 2018 15:12:49 -0700 Subject: [PATCH 1/4] get asan to not complain about invalid downcast of CauterizedMeshPartPayload UpdateFunctor --- libraries/render-utils/src/CauterizedModel.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index ffb652f923..2f1ad445fd 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -226,8 +226,9 @@ void CauterizedModel::updateRenderItems() { bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, - isWireframe, renderItemKeyGlobalFlags, enableCauterization](CauterizedMeshPartPayload& data) { + transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, + isWireframe, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { + CauterizedMeshPartPayload& data = dynamic_cast(mmppData); if (useDualQuaternionSkinning) { data.updateClusterBuffer(meshState.clusterDualQuaternions, cauterizedMeshState.clusterDualQuaternions); From f784b33eed24cba47afcc7bc7b9e6ad09d6a293b Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 30 Sep 2018 15:25:21 -0700 Subject: [PATCH 2/4] get asan to not complain about invalid downcast of EntityRenderer UpdateFunctor --- libraries/entities-renderer/src/RenderableEntityItem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index a183101fff..aa335bb7d5 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -305,7 +305,7 @@ void EntityRenderer::updateInScene(const ScenePointer& scene, Transaction& trans } doRenderUpdateSynchronous(scene, transaction, _entity); - transaction.updateItem(_renderItemID, [this](EntityRenderer& self) { + transaction.updateItem(_renderItemID, [this](PayloadProxyInterface& self) { if (!isValidRenderItem()) { return; } From e30497595ca2fec35841d6be293cd87faa827da7 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 30 Sep 2018 15:49:42 -0700 Subject: [PATCH 3/4] static_cast can be used here rather than dynamic --- libraries/render-utils/src/CauterizedModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 2f1ad445fd..353942ed49 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -228,7 +228,7 @@ void CauterizedModel::updateRenderItems() { transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, isWireframe, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { - CauterizedMeshPartPayload& data = dynamic_cast(mmppData); + CauterizedMeshPartPayload& data = static_cast(mmppData); if (useDualQuaternionSkinning) { data.updateClusterBuffer(meshState.clusterDualQuaternions, cauterizedMeshState.clusterDualQuaternions); From 90d9af35b59f596e5dd05eb15151dc3b1b0efb67 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 30 Sep 2018 16:05:08 -0700 Subject: [PATCH 4/4] minimize diff --- libraries/render-utils/src/CauterizedModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 353942ed49..d52b7854ea 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -227,7 +227,7 @@ void CauterizedModel::updateRenderItems() { bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, - isWireframe, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { + isWireframe, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { CauterizedMeshPartPayload& data = static_cast(mmppData); if (useDualQuaternionSkinning) { data.updateClusterBuffer(meshState.clusterDualQuaternions,