From 984d6ae48f1579e2d2017d48d7674ff197c841d6 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 25 Mar 2016 10:46:14 -0700 Subject: [PATCH 1/4] fix model resizing bug --- libraries/entities-renderer/src/RenderableModelEntityItem.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 98559a56a4..c755bd6807 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -355,6 +355,7 @@ void RenderableModelEntityItem::updateModelBounds() { if ((movingOrAnimating || _needsInitialSimulation || _model->getTranslation() != getPosition() || + _model->getScaleToFitDimensions() != getDimensions() || _model->getRotation() != getRotation() || _model->getRegistrationPoint() != getRegistrationPoint()) && _model->isActive() && _dimensionsInitialized) { From 6c6131c7b35b99d3285d316efdcfb7970673fbe0 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 25 Mar 2016 11:22:54 -0700 Subject: [PATCH 2/4] fix the doppelganger --- libraries/entities-renderer/src/RenderableModelEntityItem.cpp | 3 +++ libraries/entities-renderer/src/RenderableModelEntityItem.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index c755bd6807..5be7f10470 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -354,6 +354,7 @@ void RenderableModelEntityItem::updateModelBounds() { bool movingOrAnimating = isMovingRelativeToParent() || isAnimatingSomething(); if ((movingOrAnimating || _needsInitialSimulation || + _needsJointSimulation || _model->getTranslation() != getPosition() || _model->getScaleToFitDimensions() != getDimensions() || _model->getRotation() != getRotation() || @@ -371,6 +372,7 @@ void RenderableModelEntityItem::updateModelBounds() { } _needsInitialSimulation = false; + _needsJointSimulation = false; } } @@ -772,6 +774,7 @@ bool RenderableModelEntityItem::setAbsoluteJointRotationInObjectFrame(int index, _absoluteJointRotationsInObjectFrameDirty[index] = true; result = true; } + _needsJointSimulation = true; }); return result; } diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index 069b7385b5..03e59e97c1 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -97,6 +97,8 @@ private: bool _showCollisionHull = false; bool getAnimationFrame(); + + bool _needsJointSimulation { false }; }; #endif // hifi_RenderableModelEntityItem_h From 759fac228cc6bc5e5fd5ea938b3392bd5e1a6db0 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 25 Mar 2016 11:29:14 -0700 Subject: [PATCH 3/4] fix the doppelganger --- libraries/entities-renderer/src/RenderableModelEntityItem.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 5be7f10470..2881682ad2 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -773,8 +773,8 @@ bool RenderableModelEntityItem::setAbsoluteJointRotationInObjectFrame(int index, _absoluteJointRotationsInObjectFrameSet[index] = true; _absoluteJointRotationsInObjectFrameDirty[index] = true; result = true; + _needsJointSimulation = true; } - _needsJointSimulation = true; }); return result; } @@ -789,6 +789,7 @@ bool RenderableModelEntityItem::setAbsoluteJointTranslationInObjectFrame(int ind _absoluteJointTranslationsInObjectFrameSet[index] = true; _absoluteJointTranslationsInObjectFrameDirty[index] = true; result = true; + _needsJointSimulation = true; } }); return result; From 4ebb114a8e5ba230c4aac16e1f914331c02afca1 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 25 Mar 2016 11:43:32 -0700 Subject: [PATCH 4/4] also fix joint simulation from 3rd party editors --- .../src/RenderableModelEntityItem.cpp | 21 +++++++++++++++++++ .../src/RenderableModelEntityItem.h | 5 +++++ libraries/entities/src/ModelEntityItem.h | 8 +++---- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 2881682ad2..312e1fcea5 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -795,6 +795,27 @@ bool RenderableModelEntityItem::setAbsoluteJointTranslationInObjectFrame(int ind return result; } +void RenderableModelEntityItem::setJointRotations(const QVector& rotations) { + ModelEntityItem::setJointRotations(rotations); + _needsJointSimulation = true; +} + +void RenderableModelEntityItem::setJointRotationsSet(const QVector& rotationsSet) { + ModelEntityItem::setJointRotationsSet(rotationsSet); + _needsJointSimulation = true; +} + +void RenderableModelEntityItem::setJointTranslations(const QVector& translations) { + ModelEntityItem::setJointTranslations(translations); + _needsJointSimulation = true; +} + +void RenderableModelEntityItem::setJointTranslationsSet(const QVector& translationsSet) { + ModelEntityItem::setJointTranslationsSet(translationsSet); + _needsJointSimulation = true; +} + + void RenderableModelEntityItem::locationChanged() { EntityItem::locationChanged(); if (_model && _model->isActive()) { diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index 03e59e97c1..ac82be83d8 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -69,6 +69,11 @@ public: virtual bool setAbsoluteJointRotationInObjectFrame(int index, const glm::quat& rotation) override; virtual bool setAbsoluteJointTranslationInObjectFrame(int index, const glm::vec3& translation) override; + virtual void setJointRotations(const QVector& rotations) override; + virtual void setJointRotationsSet(const QVector& rotationsSet) override; + virtual void setJointTranslations(const QVector& translations) override; + virtual void setJointTranslationsSet(const QVector& translationsSet) override; + virtual void loader() override; virtual void locationChanged() override; diff --git a/libraries/entities/src/ModelEntityItem.h b/libraries/entities/src/ModelEntityItem.h index 686fb1f72d..bce27f1cca 100644 --- a/libraries/entities/src/ModelEntityItem.h +++ b/libraries/entities/src/ModelEntityItem.h @@ -120,10 +120,10 @@ public: virtual glm::vec3 getJointPosition(int jointIndex) const { return glm::vec3(); } virtual glm::quat getJointRotation(int jointIndex) const { return glm::quat(); } - void setJointRotations(const QVector& rotations); - void setJointRotationsSet(const QVector& rotationsSet); - void setJointTranslations(const QVector& translations); - void setJointTranslationsSet(const QVector& translationsSet); + virtual void setJointRotations(const QVector& rotations); + virtual void setJointRotationsSet(const QVector& rotationsSet); + virtual void setJointTranslations(const QVector& translations); + virtual void setJointTranslationsSet(const QVector& translationsSet); QVector getJointRotations() const; QVector getJointRotationsSet() const; QVector getJointTranslations() const;