From fa1a9d04e07e945cffb35de8685f10f5c49eecb7 Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 26 Jun 2018 13:18:26 -0700 Subject: [PATCH] everything working before trying to move otheravatar to interface --- interface/src/avatar/AvatarManager.cpp | 40 ++++++++++++++++++- interface/src/avatar/AvatarManager.h | 2 + .../src/avatars-renderer/Avatar.cpp | 9 +---- .../src/avatars-renderer/Avatar.h | 4 +- .../src/avatars-renderer/OtherAvatar.cpp | 2 + libraries/avatars/src/AvatarData.h | 2 + 6 files changed, 48 insertions(+), 11 deletions(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 0b03a660bc..8866ae68f9 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -196,7 +196,7 @@ void AvatarManager::updateOtherAvatars(float deltaTime) { //if the geometry is loaded then turn off the orb if (avatar->getSkeletonModel()->isLoaded()) { //remove the orb if it is there - avatar->removeOrb(); + removeOrb(avatar->_purpleOrbMeshPlaceholderID); } else { avatar->updateOrbPosition(); } @@ -325,7 +325,34 @@ void AvatarManager::simulateAvatarFades(float deltaTime) { } AvatarSharedPointer AvatarManager::newSharedAvatar() { - return AvatarSharedPointer(new OtherAvatar(qApp->thread()), [](OtherAvatar* ptr) { ptr->deleteLater(); }); + + auto newOtherAvatar = AvatarSharedPointer(new OtherAvatar(qApp->thread()), [](OtherAvatar* ptr) { ptr->deleteLater(); }); + + //add the purple orb + /* + if (newOtherAvatar->_purpleOrbMeshPlaceholderID == UNKNOWN_OVERLAY_ID || + !qApp->getOverlays().isAddedOverlay(newOtherAvatar->_purpleOrbMeshPlaceholderID)) { + newOtherAvatar->_purpleOrbMeshPlaceholder = std::make_shared(); + newOtherAvatar->_purpleOrbMeshPlaceholder->setAlpha(1.0f); + newOtherAvatar->_purpleOrbMeshPlaceholder->setColor({ 0xFF, 0x00, 0xFF }); + newOtherAvatar->_purpleOrbMeshPlaceholder->setIsSolid(false); + newOtherAvatar->_purpleOrbMeshPlaceholder->setPulseMin(0.5); + newOtherAvatar->_purpleOrbMeshPlaceholder->setPulseMax(1.0); + newOtherAvatar->_purpleOrbMeshPlaceholder->setColorPulse(1.0); + newOtherAvatar->_purpleOrbMeshPlaceholder->setIgnoreRayIntersection(true); + newOtherAvatar->_purpleOrbMeshPlaceholder->setDrawInFront(false); + newOtherAvatar->_purpleOrbMeshPlaceholderID = qApp->getOverlays().addOverlay(newOtherAvatar->_purpleOrbMeshPlaceholder); + // Position focus + newOtherAvatar->_purpleOrbMeshPlaceholder->setWorldOrientation(glm::quat(0.0f, 0.0f, 0.0f, 1.0)); + newOtherAvatar->_purpleOrbMeshPlaceholder->setWorldPosition(glm::vec3(476.0f, 500.0f, 493.0f)); + newOtherAvatar->_purpleOrbMeshPlaceholder->setDimensions(glm::vec3(0.5f, 0.5f, 0.5f)); + newOtherAvatar->_purpleOrbMeshPlaceholder->setVisible(true); + } + */ + + + + return newOtherAvatar; } void AvatarManager::handleRemovedAvatar(const AvatarSharedPointer& removedAvatar, KillAvatarReason removalReason) { @@ -621,3 +648,12 @@ void AvatarManager::setAvatarSortCoefficient(const QString& name, const QScriptV DependencyManager::get()->broadcastToNodes(std::move(packet), NodeSet() << NodeType::AvatarMixer); } } + +void AvatarManager::removeOrb(OverlayID orbID) { + if (qApp->getOverlays().isAddedOverlay(orbID)) { + qApp->getOverlays().deleteOverlay(orbID); + //qCWarning(avatars_renderer) << "remove the purple orb***************************"; + } +} + + diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index 6a3d0355f6..600da65b85 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -158,6 +158,8 @@ public: float getMyAvatarSendRate() const { return _myAvatarSendRate.rate(); } + void removeOrb(OverlayID orbID); + public slots: /**jsdoc diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 6d23b524d3..4fc987d6dd 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1891,16 +1891,11 @@ void Avatar::processMaterials() { } } } -void Avatar::removeOrb() { - if (qApp->getOverlays().isAddedOverlay(_purpleOrbMeshPlaceholderID)) { - qApp->getOverlays().deleteOverlay(_purpleOrbMeshPlaceholderID); - qCWarning(avatars_renderer) << "remove the purple orb***************************"; - } -} void Avatar::updateOrbPosition() { _purpleOrbMeshPlaceholder->setWorldPosition(getHead()->getPosition()); -} +} + scriptable::ScriptableModelBase Avatar::getScriptableModel() { if (!_skeletonModel || !_skeletonModel->isLoaded()) { return scriptable::ScriptableModelBase(); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index c480c5905e..e4052865dd 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -367,10 +367,10 @@ public: void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName) override; virtual scriptable::ScriptableModelBase getScriptableModel() override; - void removeOrb(); + void updateOrbPosition(); std::shared_ptr _purpleOrbMeshPlaceholder{ nullptr }; - OverlayID _purpleOrbMeshPlaceholderID{ UNKNOWN_OVERLAY_ID }; + OverlayID _purpleOrbMeshPlaceholderID{ UNKNOWN_OVERLAY_ID }; public slots: // FIXME - these should be migrated to use Pose data instead diff --git a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp index 11281334eb..a6c69d24f6 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/OtherAvatar.cpp @@ -19,6 +19,7 @@ OtherAvatar::OtherAvatar(QThread* thread) : Avatar(thread) { connect(_skeletonModel.get(), &Model::rigReset, this, &Avatar::rigReset); //add the purple orb + if (_purpleOrbMeshPlaceholderID == UNKNOWN_OVERLAY_ID || !qApp->getOverlays().isAddedOverlay(_purpleOrbMeshPlaceholderID)) { _purpleOrbMeshPlaceholder = std::make_shared(); _purpleOrbMeshPlaceholder->setAlpha(1.0f); @@ -36,4 +37,5 @@ OtherAvatar::OtherAvatar(QThread* thread) : Avatar(thread) { _purpleOrbMeshPlaceholder->setDimensions(glm::vec3(0.5f, 0.5f, 0.5f)); _purpleOrbMeshPlaceholder->setVisible(true); } + } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 51b3257ba2..2d150609d1 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -55,6 +55,8 @@ #include "PathUtils.h" #include +//#include "Overlays.h" +//#include "Sphere3DOverlay.h" using AvatarSharedPointer = std::shared_ptr; using AvatarWeakPointer = std::weak_ptr;