bool GridEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const { bool needsUpdate = resultWithReadLock<bool>([&] { if (_color != entity->getColor()) { return true; } if (_alpha != entity->getAlpha()) { return true; } if (_followCamera != entity->getFollowCamera()) { return true; } if (_majorGridEvery != entity->getMajorGridEvery()) { return true; } if (_minorGridEvery != entity->getMinorGridEvery()) { return true; } if (_pulseProperties != entity->getPulseProperties()) { return true; } return false; }); return needsUpdate; }
void GridEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) { withWriteLock([&] { _color = entity->getColor(); _alpha = entity->getAlpha(); _pulseProperties = entity->getPulseProperties(); _followCamera = entity->getFollowCamera(); _majorGridEvery = entity->getMajorGridEvery(); _minorGridEvery = entity->getMinorGridEvery(); }); void* key = (void*)this; AbstractViewStateInterface::instance()->pushPostUpdateLambda(key, [this, entity]() { withWriteLock([&] { _dimensions = entity->getScaledDimensions(); updateModelTransformAndBound(); _renderTransform = getModelTransform(); }); }); }