Fix for one-frame lag in the tablet stylus.

This commit is contained in:
Anthony J. Thibault 2017-01-30 15:34:46 -08:00
parent 5a0990fbe4
commit 0962a15a06
4 changed files with 8 additions and 7 deletions

View file

@ -22,6 +22,7 @@ ModelOverlay::ModelOverlay()
_modelTextures(QVariantMap()) _modelTextures(QVariantMap())
{ {
_model->init(); _model->init();
_model->setSpatiallyNestableOverride(this);
_isLoaded = false; _isLoaded = false;
} }
@ -33,6 +34,7 @@ ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) :
_updateModel(false) _updateModel(false)
{ {
_model->init(); _model->init();
_model->setSpatiallyNestableOverride(this);
if (_url.isValid()) { if (_url.isValid()) {
_updateModel = true; _updateModel = true;
_isLoaded = false; _isLoaded = false;

View file

@ -508,7 +508,7 @@ ModelPointer RenderableModelEntityItem::getModel(QSharedPointer<EntityTreeRender
// If we don't have a model, allocate one *immediately* // If we don't have a model, allocate one *immediately*
if (!_model) { if (!_model) {
_model = _myRenderer->allocateModel(getModelURL(), renderer->getEntityLoadingPriority(*this)); _model = _myRenderer->allocateModel(getModelURL(), renderer->getEntityLoadingPriority(*this));
_model->setSpatiallyNestableOverride(shared_from_this()); _model->setSpatiallyNestableOverride(this);
_needsInitialSimulation = true; _needsInitialSimulation = true;
// If we need to change URLs, update it *after rendering* (to avoid access violations) // If we need to change URLs, update it *after rendering* (to avoid access violations)
} else if (QUrl(getModelURL()) != _model->getURL()) { } else if (QUrl(getModelURL()) != _model->getURL()) {

View file

@ -133,16 +133,15 @@ void Model::setRotation(const glm::quat& rotation) {
updateRenderItems(); updateRenderItems();
} }
void Model::setSpatiallyNestableOverride(SpatiallyNestablePointer override) { void Model::setSpatiallyNestableOverride(SpatiallyNestable* override) {
_spatiallyNestableOverride = override; _spatiallyNestableOverride = override;
updateRenderItems(); updateRenderItems();
} }
Transform Model::getTransform() const { Transform Model::getTransform() const {
SpatiallyNestablePointer spatiallyNestableOverride = _spatiallyNestableOverride.lock(); if (_spatiallyNestableOverride) {
if (spatiallyNestableOverride) {
bool success; bool success;
Transform transform = spatiallyNestableOverride->getTransform(success); Transform transform = _spatiallyNestableOverride->getTransform(success);
if (success) { if (success) {
transform.setScale(getScale()); transform.setScale(getScale());
return transform; return transform;

View file

@ -205,7 +205,7 @@ public:
void setTranslation(const glm::vec3& translation); void setTranslation(const glm::vec3& translation);
void setRotation(const glm::quat& rotation); void setRotation(const glm::quat& rotation);
void setSpatiallyNestableOverride(SpatiallyNestablePointer ptr); void setSpatiallyNestableOverride(SpatiallyNestable* ptr);
const glm::vec3& getTranslation() const { return _translation; } const glm::vec3& getTranslation() const { return _translation; }
const glm::quat& getRotation() const { return _rotation; } const glm::quat& getRotation() const { return _rotation; }
@ -297,7 +297,7 @@ protected:
glm::quat _rotation; glm::quat _rotation;
glm::vec3 _scale; glm::vec3 _scale;
SpatiallyNestableWeakPointer _spatiallyNestableOverride; SpatiallyNestable* _spatiallyNestableOverride { nullptr };
glm::vec3 _offset; glm::vec3 _offset;