From ee1340706610e99aaa605610e85a03cd27a769f4 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 29 Jun 2015 17:04:30 -0700 Subject: [PATCH] Fix smart pointer casts --- interface/src/Application.cpp | 12 ++++++------ interface/src/Application.h | 2 +- interface/src/avatar/Avatar.cpp | 4 ++-- interface/src/avatar/MyAvatar.cpp | 4 ++-- interface/src/devices/Faceshift.cpp | 4 ++-- interface/src/ui/overlays/Overlays.cpp | 18 +++++++++--------- .../entities/src/EntityScriptingInterface.cpp | 6 +++--- libraries/render/src/render/Scene.h | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4b9d97ee08..c39a08bd27 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2230,8 +2230,8 @@ void Application::shrinkMirrorView() { const float HEAD_SPHERE_RADIUS = 0.1f; -bool Application::isLookingAtMyAvatar(Avatar* avatar) { - glm::vec3 theirLookAt = avatar->getHead()->getLookAtPosition(); +bool Application::isLookingAtMyAvatar(AvatarSharedPointer avatar) { + glm::vec3 theirLookAt = dynamic_pointer_cast(avatar)->getHead()->getLookAtPosition(); glm::vec3 myEyePosition = _myAvatar->getHead()->getEyePosition(); if (pointInSphere(theirLookAt, myEyePosition, HEAD_SPHERE_RADIUS * _myAvatar->getScale())) { return true; @@ -2303,17 +2303,17 @@ void Application::updateMyAvatarLookAtPosition() { // If a face tracker is active, look at the eye for the side my gaze is biased toward if (tracker->getEstimatedEyeYaw() > _myAvatar->getHead()->getFinalYaw()) { // Look at their right eye - lookAtSpot = static_cast(lookingAt.get())->getHead()->getRightEyePosition(); + lookAtSpot = static_pointer_cast(lookingAt)->getHead()->getRightEyePosition(); } else { // Look at their left eye - lookAtSpot = static_cast(lookingAt.get())->getHead()->getLeftEyePosition(); + lookAtSpot = static_pointer_cast(lookingAt)->getHead()->getLeftEyePosition(); } } else { // Need to add randomly looking back and forth between left and right eye for case with no tracker if (_myAvatar->isLookingAtLeftEye()) { - lookAtSpot = static_cast(lookingAt.get())->getHead()->getLeftEyePosition(); + lookAtSpot = static_pointer_cast(lookingAt)->getHead()->getLeftEyePosition(); } else { - lookAtSpot = static_cast(lookingAt.get())->getHead()->getRightEyePosition(); + lookAtSpot = static_pointer_cast(lookingAt)->getHead()->getRightEyePosition(); } } } else { diff --git a/interface/src/Application.h b/interface/src/Application.h index 8dd987fbcd..e5e49187f3 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -322,7 +322,7 @@ public: QStringList getRunningScripts() { return _scriptEnginesHash.keys(); } ScriptEngine* getScriptEngine(QString scriptHash) { return _scriptEnginesHash.contains(scriptHash) ? _scriptEnginesHash[scriptHash] : NULL; } - bool isLookingAtMyAvatar(Avatar* avatar); + bool isLookingAtMyAvatar(AvatarSharedPointer avatar); float getRenderResolutionScale() const; int getRenderAmbientLight() const; diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 6ff8fb52df..8d72e1a78c 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -65,10 +65,10 @@ namespace render { return ItemKey::Builder::opaqueShape(); } template <> const Item::Bound payloadGetBound(const AvatarSharedPointer& avatar) { - return static_cast(avatar.get())->getBounds(); + return static_pointer_cast(avatar)->getBounds(); } template <> void payloadRender(const AvatarSharedPointer& avatar, RenderArgs* args) { - Avatar* avatarPtr = static_cast(avatar.get()); + auto avatarPtr = static_pointer_cast(avatar); bool renderLookAtVectors = Menu::getInstance()->isOptionChecked(MenuOption::RenderLookAtVectors); avatarPtr->setDisplayingLookatVectors(renderLookAtVectors); diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index c6a4ae39aa..b1703c2a23 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -882,7 +882,7 @@ void MyAvatar::updateLookAtTargetAvatar() { int howManyLookingAtMe = 0; foreach (const AvatarSharedPointer& avatarPointer, DependencyManager::get()->getAvatarHash()) { - Avatar* avatar = static_cast(avatarPointer.get()); + auto avatar = static_pointer_cast(avatarPointer); bool isCurrentTarget = avatar->getIsLookAtTarget(); float distanceTo = glm::length(avatar->getHead()->getEyePosition() - cameraPosition); avatar->setIsLookAtTarget(false); @@ -912,7 +912,7 @@ void MyAvatar::updateLookAtTargetAvatar() { } auto avatarPointer = _lookAtTargetAvatar.lock(); if (avatarPointer) { - static_cast(avatarPointer.get())->setIsLookAtTarget(true); + static_pointer_cast(avatarPointer)->setIsLookAtTarget(true); } } diff --git a/interface/src/devices/Faceshift.cpp b/interface/src/devices/Faceshift.cpp index b517f9d67b..33124858c5 100644 --- a/interface/src/devices/Faceshift.cpp +++ b/interface/src/devices/Faceshift.cpp @@ -208,7 +208,7 @@ void Faceshift::receive(const QByteArray& buffer) { for (fsMsgPtr msg; (msg = _stream.get_message()); ) { switch (msg->id()) { case fsMsg::MSG_OUT_TRACKING_STATE: { - const fsTrackingData& data = static_cast(msg.get())->tracking_data(); + const fsTrackingData& data = static_pointer_cast(msg)->tracking_data(); if ((_tracking = data.m_trackingSuccessful)) { glm::quat newRotation = glm::quat(data.m_headRotation.w, -data.m_headRotation.x, data.m_headRotation.y, -data.m_headRotation.z); @@ -256,7 +256,7 @@ void Faceshift::receive(const QByteArray& buffer) { break; } case fsMsg::MSG_OUT_BLENDSHAPE_NAMES: { - const vector& names = static_cast(msg.get())->blendshape_names(); + const vector& names = static_pointer_cast(msg)->blendshape_names(); for (size_t i = 0; i < names.size(); i++) { if (names[i] == "EyeBlink_L") { _leftBlinkIndex = i; diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index dc49478f38..3948b208b0 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -207,7 +207,7 @@ bool Overlays::editOverlay(unsigned int id, const QScriptValue& properties) { if (thisOverlay) { if (thisOverlay->is3D()) { - Base3DOverlay* overlay3D = static_cast(thisOverlay.get()); + auto overlay3D = std::static_pointer_cast(thisOverlay); bool oldDrawOnHUD = overlay3D->getDrawOnHUD(); thisOverlay->setProperties(properties); @@ -269,15 +269,15 @@ unsigned int Overlays::getOverlayAtPoint(const glm::vec2& point) { i.previous(); unsigned int thisID = i.key(); if (i.value()->is3D()) { - Base3DOverlay* thisOverlay = static_cast(i.value().get()); - if (!thisOverlay->getIgnoreRayIntersection()) { + auto thisOverlay = std::dynamic_pointer_cast(i.value()); + if (thisOverlay && !thisOverlay->getIgnoreRayIntersection()) { if (thisOverlay->findRayIntersection(origin, direction, distance, thisFace)) { return thisID; } } } else { - Overlay2D* thisOverlay = static_cast(i.value().get()); - if (thisOverlay->getVisible() && thisOverlay->isLoaded() && + auto thisOverlay = std::dynamic_pointer_cast(i.value()); + if (thisOverlay && thisOverlay->getVisible() && thisOverlay->isLoaded() && thisOverlay->getBoundingRect().contains(pointCopy.x, pointCopy.y, false)) { return thisID; } @@ -341,8 +341,8 @@ RayToOverlayIntersectionResult Overlays::findRayIntersection(const PickRay& ray) while (i.hasPrevious()) { i.previous(); unsigned int thisID = i.key(); - Base3DOverlay* thisOverlay = static_cast(i.value().get()); - if (thisOverlay->getVisible() && !thisOverlay->getIgnoreRayIntersection() && thisOverlay->isLoaded()) { + auto thisOverlay = std::dynamic_pointer_cast(i.value()); + if (thisOverlay && thisOverlay->getVisible() && !thisOverlay->getIgnoreRayIntersection() && thisOverlay->isLoaded()) { float thisDistance; BoxFace thisFace; QString thisExtraInfo; @@ -458,13 +458,13 @@ QSizeF Overlays::textSize(unsigned int id, const QString& text) const { Overlay::Pointer thisOverlay = _overlaysHUD[id]; if (thisOverlay) { if (typeid(*thisOverlay) == typeid(TextOverlay)) { - return static_cast(thisOverlay.get())->textSize(text); + return std::dynamic_pointer_cast(thisOverlay)->textSize(text); } } else { thisOverlay = _overlaysWorld[id]; if (thisOverlay) { if (typeid(*thisOverlay) == typeid(Text3DOverlay)) { - return static_cast(thisOverlay.get())->textSize(text); + return std::dynamic_pointer_cast(thisOverlay)->textSize(text); } } } diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index c9f7378bc8..4de03053bb 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -411,7 +411,7 @@ bool EntityScriptingInterface::setVoxels(QUuid entityID, return false; } - EntityItemPointer entity = static_cast(_entityTree->findEntityByEntityItemID(entityID)); + EntityItemPointer entity = _entityTree->findEntityByEntityItemID(entityID); if (!entity) { qCDebug(entities) << "EntityScriptingInterface::setVoxelSphere no entity with ID" << entityID; return false; @@ -424,7 +424,7 @@ bool EntityScriptingInterface::setVoxels(QUuid entityID, auto now = usecTimestampNow(); - PolyVoxEntityItem* polyVoxEntity = static_cast(entity.get()); + auto polyVoxEntity = std::dynamic_pointer_cast(entity); _entityTree->lockForWrite(); actor(*polyVoxEntity); entity->setLastEdited(now); @@ -460,7 +460,7 @@ bool EntityScriptingInterface::setPoints(QUuid entityID, std::function(entity.get()); + auto lineEntity = std::static_pointer_cast(entity); _entityTree->lockForWrite(); bool success = actor(*lineEntity); entity->setLastEdited(now); diff --git a/libraries/render/src/render/Scene.h b/libraries/render/src/render/Scene.h index 5ec9f0c951..ae5a5b0f23 100644 --- a/libraries/render/src/render/Scene.h +++ b/libraries/render/src/render/Scene.h @@ -314,7 +314,7 @@ protected: DataPointer _data; // Update mechanics - virtual void update(const UpdateFunctorPointer& functor) { static_cast(functor.get())->_func((*_data)); } + virtual void update(const UpdateFunctorPointer& functor) { std::static_pointer_cast(functor)->_func((*_data)); } friend class Item; };