mirror of
https://github.com/overte-org/overte.git
synced 2025-06-27 15:49:40 +02:00
fix model overlays visibility change
This commit is contained in:
parent
808b9cbc31
commit
c38ef77b26
2 changed files with 43 additions and 18 deletions
|
@ -594,47 +594,72 @@ void Model::calculateTriangleSets() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Model::setVisibleInScene(bool newValue, const render::ScenePointer& scene) {
|
void Model::setVisibleInScene(bool isVisible, const render::ScenePointer& scene) {
|
||||||
if (_isVisible != newValue) {
|
if (_isVisible != isVisible) {
|
||||||
_isVisible = newValue;
|
_isVisible = isVisible;
|
||||||
|
|
||||||
|
bool isLayeredInFront = _isLayeredInFront;
|
||||||
|
bool isLayeredInHUD = _isLayeredInHUD;
|
||||||
|
|
||||||
render::Transaction transaction;
|
render::Transaction transaction;
|
||||||
foreach (auto item, _modelMeshRenderItemsMap.keys()) {
|
foreach (auto item, _modelMeshRenderItemsMap.keys()) {
|
||||||
transaction.resetItem(item, _modelMeshRenderItemsMap[item]);
|
transaction.updateItem<ModelMeshPartPayload>(item, [isVisible, isLayeredInFront, isLayeredInHUD](ModelMeshPartPayload& data) {
|
||||||
|
data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
||||||
transaction.resetItem(item, _collisionRenderItemsMap[item]);
|
transaction.updateItem<ModelMeshPartPayload>(item, [isVisible, isLayeredInFront, isLayeredInHUD](ModelMeshPartPayload& data) {
|
||||||
|
data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
scene->enqueueTransaction(transaction);
|
scene->enqueueTransaction(transaction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Model::setLayeredInFront(bool layered, const render::ScenePointer& scene) {
|
void Model::setLayeredInFront(bool isLayeredInFront, const render::ScenePointer& scene) {
|
||||||
if (_isLayeredInFront != layered) {
|
if (_isLayeredInFront != isLayeredInFront) {
|
||||||
_isLayeredInFront = layered;
|
_isLayeredInFront = isLayeredInFront;
|
||||||
|
|
||||||
|
bool isVisible = _isVisible;
|
||||||
|
bool isLayeredInHUD = _isLayeredInFront;
|
||||||
|
|
||||||
render::Transaction transaction;
|
render::Transaction transaction;
|
||||||
foreach(auto item, _modelMeshRenderItemsMap.keys()) {
|
foreach(auto item, _modelMeshRenderItemsMap.keys()) {
|
||||||
transaction.resetItem(item, _modelMeshRenderItemsMap[item]);
|
transaction.updateItem<ModelMeshPartPayload>(item, [isVisible, isLayeredInFront, isLayeredInHUD](ModelMeshPartPayload& data) {
|
||||||
|
data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
|
||||||
|
data.setLayer(isLayeredInFront, isLayeredInHUD);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
||||||
transaction.resetItem(item, _collisionRenderItemsMap[item]);
|
transaction.updateItem<ModelMeshPartPayload>(item, [isVisible, isLayeredInFront, isLayeredInHUD](ModelMeshPartPayload& data) {
|
||||||
|
data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
|
||||||
|
data.setLayer(isLayeredInFront, isLayeredInHUD);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
scene->enqueueTransaction(transaction);
|
scene->enqueueTransaction(transaction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Model::setLayeredInHUD(bool layered, const render::ScenePointer& scene) {
|
void Model::setLayeredInHUD(bool isLayeredInHUD, const render::ScenePointer& scene) {
|
||||||
if (_isLayeredInHUD != layered) {
|
if (_isLayeredInHUD != isLayeredInHUD) {
|
||||||
_isLayeredInHUD = layered;
|
_isLayeredInHUD = isLayeredInHUD;
|
||||||
|
|
||||||
|
bool isVisible = _isVisible;
|
||||||
|
bool isLayeredInFront = isLayeredInFront;
|
||||||
|
|
||||||
render::Transaction transaction;
|
render::Transaction transaction;
|
||||||
foreach(auto item, _modelMeshRenderItemsMap.keys()) {
|
foreach(auto item, _modelMeshRenderItemsMap.keys()) {
|
||||||
transaction.resetItem(item, _modelMeshRenderItemsMap[item]);
|
transaction.updateItem<ModelMeshPartPayload>(item, [isVisible, isLayeredInFront, isLayeredInHUD](ModelMeshPartPayload& data) {
|
||||||
|
data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
|
||||||
|
data.setLayer(isLayeredInFront, isLayeredInHUD);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
||||||
transaction.resetItem(item, _collisionRenderItemsMap[item]);
|
transaction.updateItem<ModelMeshPartPayload>(item, [isVisible, isLayeredInFront, isLayeredInHUD](ModelMeshPartPayload& data) {
|
||||||
|
data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
|
||||||
|
data.setLayer(isLayeredInFront, isLayeredInHUD);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
scene->enqueueTransaction(transaction);
|
scene->enqueueTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,9 +82,9 @@ public:
|
||||||
const QUrl& getURL() const { return _url; }
|
const QUrl& getURL() const { return _url; }
|
||||||
|
|
||||||
// new Scene/Engine rendering support
|
// new Scene/Engine rendering support
|
||||||
void setVisibleInScene(bool newValue, const render::ScenePointer& scene);
|
void setVisibleInScene(bool isVisible, const render::ScenePointer& scene);
|
||||||
void setLayeredInFront(bool layered, const render::ScenePointer& scene);
|
void setLayeredInFront(bool isLayeredInFront, const render::ScenePointer& scene);
|
||||||
void setLayeredInHUD(bool layered, const render::ScenePointer& scene);
|
void setLayeredInHUD(bool isLayeredInHUD, const render::ScenePointer& scene);
|
||||||
bool needsFixupInScene() const;
|
bool needsFixupInScene() const;
|
||||||
|
|
||||||
bool needsReload() const { return _needsReload; }
|
bool needsReload() const { return _needsReload; }
|
||||||
|
|
Loading…
Reference in a new issue