diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp
index 193e974484..8817ea3d05 100755
--- a/interface/src/avatar/MyAvatar.cpp
+++ b/interface/src/avatar/MyAvatar.cpp
@@ -1127,8 +1127,8 @@ void MyAvatar::setEnableDebugDrawIKChains(bool isEnabled) {
}
void MyAvatar::setEnableMeshVisible(bool isEnabled) {
- // TODO: This should tell the main MetaRenderItem of the Avatar to be hidden to control vsisiblity since the model is culled by the MetaRI.
_skeletonModel->setVisibleInScene(isEnabled, qApp->getMain3DScene(), render::ItemKey::TAG_BITS_0 | render::ItemKey::TAG_BITS_1, true);
+ Avatar::setEnableMeshVisible(isEnabled);
}
void MyAvatar::setEnableInverseKinematics(bool isEnabled) {
diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h
index 154e2e4d09..5e78d508fe 100644
--- a/interface/src/avatar/MyAvatar.h
+++ b/interface/src/avatar/MyAvatar.h
@@ -1159,7 +1159,7 @@ public slots:
* @function MyAvatar.getEnableMeshVisible
* @returns {boolean} true
if your avatar's mesh is visible, otherwise false
.
*/
- bool getEnableMeshVisible() const { return _skeletonModel->isVisible(); }
+ bool getEnableMeshVisible() const override { return _skeletonModel->isVisible(); }
/**jsdoc
* Set whether or not your avatar mesh is visible.
@@ -1171,7 +1171,7 @@ public slots:
* MyAvatar.setEnableMeshVisible(true);
* }, 10000);
*/
- void setEnableMeshVisible(bool isEnabled);
+ void setEnableMeshVisible(bool isEnabled) override;
/**jsdoc
* @function MyAvatar.setEnableInverseKinematics
diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp
index 38828a5163..858318746c 100644
--- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp
+++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp
@@ -765,6 +765,20 @@ void Avatar::render(RenderArgs* renderArgs) {
}
}
+
+void Avatar::setEnableMeshVisible(bool isEnabled) {
+ render::Transaction transaction;
+ if (render::Item::isValidID(_renderItemID)) {
+ transaction.updateItem>(_renderItemID, [](render::Payload& p) {
+ });
+ }
+ qApp->getMain3DScene()->enqueueTransaction(transaction);
+}
+
+bool Avatar::getEnableMeshVisible() const {
+ return true;
+}
+
void Avatar::fixupModelsInScene(const render::ScenePointer& scene) {
bool canTryFade{ false };
diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h
index 01114b5f6d..06bc1b174c 100644
--- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h
+++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h
@@ -356,6 +356,10 @@ public:
virtual void setAvatarEntityDataChanged(bool value) override;
+ // Show hide the model representation of the avatar
+ virtual void setEnableMeshVisible(bool isEnabled);
+ virtual bool getEnableMeshVisible() const;
+
void addMaterial(graphics::MaterialLayer material, const std::string& parentMaterialName) override;
void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName) override;