From 3f922240d05eddbd02e52078cb6f5ac3c16312dd Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 10 Feb 2016 16:42:13 -0800 Subject: [PATCH] clean up handling of success flag and some debugging prints --- libraries/shared/src/SpatiallyNestable.cpp | 43 +++++++++++++++++++--- libraries/shared/src/SpatiallyNestable.h | 2 + 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/libraries/shared/src/SpatiallyNestable.cpp b/libraries/shared/src/SpatiallyNestable.cpp index 95e8f62d21..31654ca718 100644 --- a/libraries/shared/src/SpatiallyNestable.cpp +++ b/libraries/shared/src/SpatiallyNestable.cpp @@ -101,11 +101,13 @@ SpatiallyNestablePointer SpatiallyNestable::getParentPointer(bool& success) cons // we have a _parentID but no parent pointer, or our parent pointer was to the wrong thing QSharedPointer parentFinder = DependencyManager::get(); if (!parentFinder) { + qDebug() << "SpatiallyNestable::getParentPointer -- no parentFinder"; success = false; return nullptr; } _parent = parentFinder->find(parentID, success); if (!success) { + qDebug() << "parentFinder failed for " << parentID; return nullptr; } @@ -118,6 +120,7 @@ SpatiallyNestablePointer SpatiallyNestable::getParentPointer(bool& success) cons if (parent || parentID.isNull()) { success = true; } else { + qDebug() << "SpatiallyNestable::getParentPointer -- couldn't resolve parent: " << parentID; success = false; } @@ -392,9 +395,15 @@ void SpatiallyNestable::setOrientation(const glm::quat& orientation) { } glm::vec3 SpatiallyNestable::getVelocity(bool& success) const { - glm::vec3 parentVelocity = getParentVelocity(success); - Transform parentTransform = getParentTransform(success); glm::vec3 result; + glm::vec3 parentVelocity = getParentVelocity(success); + if (!success) { + return result; + } + Transform parentTransform = getParentTransform(success); + if (!success) { + return result; + } _velocityLock.withReadLock([&] { // TODO: take parent angularVelocity into account. result = parentVelocity + parentTransform.getRotation() * _velocity; @@ -431,16 +440,25 @@ void SpatiallyNestable::setVelocity(const glm::vec3& velocity) { glm::vec3 SpatiallyNestable::getParentVelocity(bool& success) const { glm::vec3 result; SpatiallyNestablePointer parent = getParentPointer(success); - if (success && parent) { + if (!success) { + return result; + } + if (parent) { result = parent->getVelocity(success); } return result; } glm::vec3 SpatiallyNestable::getAngularVelocity(bool& success) const { - glm::vec3 parentAngularVelocity = getParentAngularVelocity(success); - Transform parentTransform = getParentTransform(success); glm::vec3 result; + glm::vec3 parentAngularVelocity = getParentAngularVelocity(success); + if (!success) { + return result; + } + Transform parentTransform = getParentTransform(success); + if (!success) { + return result; + } _angularVelocityLock.withReadLock([&] { result = parentAngularVelocity + parentTransform.getRotation() * _angularVelocity; }); @@ -475,7 +493,10 @@ void SpatiallyNestable::setAngularVelocity(const glm::vec3& angularVelocity) { glm::vec3 SpatiallyNestable::getParentAngularVelocity(bool& success) const { glm::vec3 result; SpatiallyNestablePointer parent = getParentPointer(success); - if (success && parent) { + if (!success) { + return result; + } + if (parent) { result = parent->getAngularVelocity(success); } return result; @@ -672,6 +693,16 @@ QList SpatiallyNestable::getChildren() const { return children; } +bool SpatiallyNestable::hasChildren() const { + bool result = false; + _childrenLock.withReadLock([&] { + if (_children.size() > 0) { + result = true; + } + }); + return result; +} + const Transform SpatiallyNestable::getAbsoluteJointTransformInObjectFrame(int jointIndex) const { Transform jointTransformInObjectFrame; glm::vec3 position = getAbsoluteJointTranslationInObjectFrame(jointIndex); diff --git a/libraries/shared/src/SpatiallyNestable.h b/libraries/shared/src/SpatiallyNestable.h index 0c43aff20d..2a8976b38f 100644 --- a/libraries/shared/src/SpatiallyNestable.h +++ b/libraries/shared/src/SpatiallyNestable.h @@ -116,6 +116,8 @@ public: virtual void setLocalScale(const glm::vec3& scale); QList getChildren() const; + bool hasChildren() const; + NestableType getNestableType() const { return _nestableType; } // this object's frame