mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 10:49:33 +02:00
try to cull wearables with avatars
This commit is contained in:
parent
e77cdfc0d2
commit
935d827421
2 changed files with 19 additions and 6 deletions
|
@ -75,10 +75,22 @@ namespace render {
|
||||||
}
|
}
|
||||||
template <> uint32_t metaFetchMetaSubItems(const AvatarSharedPointer& avatar, ItemIDs& subItems) {
|
template <> uint32_t metaFetchMetaSubItems(const AvatarSharedPointer& avatar, ItemIDs& subItems) {
|
||||||
auto avatarPtr = static_pointer_cast<Avatar>(avatar);
|
auto avatarPtr = static_pointer_cast<Avatar>(avatar);
|
||||||
if (avatarPtr->getSkeletonModel()) {
|
if (avatarPtr) {
|
||||||
auto& metaSubItems = avatarPtr->getSkeletonModel()->fetchRenderItemIDs();
|
uint32_t total = 0;
|
||||||
subItems.insert(subItems.end(), metaSubItems.begin(), metaSubItems.end());
|
if (avatarPtr->getSkeletonModel()) {
|
||||||
return (uint32_t) metaSubItems.size();
|
auto& metaSubItems = avatarPtr->getSkeletonModel()->fetchRenderItemIDs();
|
||||||
|
subItems.insert(subItems.end(), metaSubItems.begin(), metaSubItems.end());
|
||||||
|
total += (uint32_t)metaSubItems.size();
|
||||||
|
}
|
||||||
|
auto& attachmentModels = avatarPtr->getAttachmentModels();
|
||||||
|
for (auto& attachmentModel : attachmentModels) {
|
||||||
|
if (attachmentModel && attachmentModel->isRenderable()) {
|
||||||
|
auto& metaSubItems = attachmentModel->fetchRenderItemIDs();
|
||||||
|
subItems.insert(subItems.end(), metaSubItems.begin(), metaSubItems.end());
|
||||||
|
total += (uint32_t)metaSubItems.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return total;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -629,7 +641,7 @@ void Avatar::addToScene(AvatarSharedPointer self, const render::ScenePointer& sc
|
||||||
for (auto& attachmentModel : _attachmentModels) {
|
for (auto& attachmentModel : _attachmentModels) {
|
||||||
attachmentModel->addToScene(scene, transaction);
|
attachmentModel->addToScene(scene, transaction);
|
||||||
attachmentModel->setTagMask(render::hifi::TAG_ALL_VIEWS);
|
attachmentModel->setTagMask(render::hifi::TAG_ALL_VIEWS);
|
||||||
attachmentModel->setGroupCulled(false);
|
attachmentModel->setGroupCulled(true);
|
||||||
attachmentModel->setCanCastShadow(true);
|
attachmentModel->setCanCastShadow(true);
|
||||||
attachmentModel->setVisibleInScene(_isMeshVisible, scene);
|
attachmentModel->setVisibleInScene(_isMeshVisible, scene);
|
||||||
}
|
}
|
||||||
|
@ -861,7 +873,7 @@ void Avatar::fixupModelsInScene(const render::ScenePointer& scene) {
|
||||||
attachmentModel->addToScene(scene, transaction);
|
attachmentModel->addToScene(scene, transaction);
|
||||||
|
|
||||||
attachmentModel->setTagMask(render::hifi::TAG_ALL_VIEWS);
|
attachmentModel->setTagMask(render::hifi::TAG_ALL_VIEWS);
|
||||||
attachmentModel->setGroupCulled(false);
|
attachmentModel->setGroupCulled(true);
|
||||||
attachmentModel->setCanCastShadow(true);
|
attachmentModel->setCanCastShadow(true);
|
||||||
attachmentModel->setVisibleInScene(_isMeshVisible, scene);
|
attachmentModel->setVisibleInScene(_isMeshVisible, scene);
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,6 +149,7 @@ public:
|
||||||
void removeAvatarEntitiesFromTree();
|
void removeAvatarEntitiesFromTree();
|
||||||
virtual void simulate(float deltaTime, bool inView) = 0;
|
virtual void simulate(float deltaTime, bool inView) = 0;
|
||||||
virtual void simulateAttachments(float deltaTime);
|
virtual void simulateAttachments(float deltaTime);
|
||||||
|
const std::vector<std::shared_ptr<Model>>& getAttachmentModels() const { return _attachmentModels; }
|
||||||
|
|
||||||
virtual void render(RenderArgs* renderArgs);
|
virtual void render(RenderArgs* renderArgs);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue