From f891c37ac88bc6acfca1dc2b159a941ce75729c8 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 20 Jun 2018 10:59:19 -0700 Subject: [PATCH] fix particle entity --- .../src/RenderableParticleEffectEntityItem.cpp | 13 ++++++++++++- .../src/RenderableParticleEffectEntityItem.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 881c39c0bd..104af39c99 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -125,6 +125,14 @@ void ParticleEffectEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePoi }); } } + + void* key = (void*)this; + AbstractViewStateInterface::instance()->pushPostUpdateLambda(key, [this] () { + withWriteLock([&] { + updateModelTransform(); + _renderTransform = getModelTransform(); + }); + }); } void ParticleEffectEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) { @@ -324,7 +332,10 @@ void ParticleEffectEntityRenderer::doRender(RenderArgs* args) { // In trail mode, the particles are created in world space. // so we only set a transform if they're not in trail mode if (!_particleProperties.emission.shouldTrail) { - transform = getModelTransform(); + + withReadLock([&] { + transform = _renderTransform; + }); transform.setScale(vec3(1)); } batch.setModelTransform(transform); diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h index be2641c0c9..0b121a6dda 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h @@ -103,6 +103,7 @@ private: BufferPointer _particleBuffer{ std::make_shared() }; BufferView _uniformBuffer; quint64 _lastSimulated { 0 }; + Transform _renderTransform; NetworkTexturePointer _networkTexture; ScenePointer _scene;