3
0
Fork 0
mirror of https://github.com/JulianGro/overte.git synced 2025-04-29 12:23:00 +02:00

Add Item::INVALID_ITEM_ID and use in overlays

This commit is contained in:
Ryan Huffman 2015-05-29 13:43:49 -07:00
parent b4db787837
commit 667dccbb87
4 changed files with 24 additions and 9 deletions
interface/src/ui/overlays
libraries/render/src/render

View file

@ -16,6 +16,7 @@
#include <NumericalConstants.h>
Overlay::Overlay() :
_renderItemID(render::Item::INVALID_ITEM_ID),
_isLoaded(true),
_alpha(DEFAULT_ALPHA),
_glowLevel(0.0f),
@ -35,6 +36,7 @@ Overlay::Overlay() :
}
Overlay::Overlay(const Overlay* overlay) :
_renderItemID(render::Item::INVALID_ITEM_ID),
_isLoaded(overlay->_isLoaded),
_alpha(overlay->_alpha),
_glowLevel(overlay->_glowLevel),
@ -225,3 +227,4 @@ float Overlay::updatePulse() {
return _pulse;
}

View file

@ -87,13 +87,7 @@ Overlays::~Overlays() {
_overlaysWorld.clear();
}
if (!_overlaysToDelete.isEmpty()) {
QWriteLocker lock(&_deleteLock);
do {
_overlaysToDelete.takeLast().reset();
} while (!_overlaysToDelete.isEmpty());
}
cleanupOverlaysToDelete();
}
void Overlays::init() {
@ -112,13 +106,28 @@ void Overlays::update(float deltatime) {
}
}
cleanupOverlaysToDelete();
}
void Overlays::cleanupOverlaysToDelete() {
if (!_overlaysToDelete.isEmpty()) {
QWriteLocker lock(&_deleteLock);
render::PendingChanges pendingChanges;
do {
_overlaysToDelete.takeLast().reset();
Overlay::Pointer overlay = _overlaysToDelete.takeLast();
auto itemID = overlay->getRenderItemID();
if (itemID != render::Item::INVALID_ITEM_ID) {
pendingChanges.removeItem(itemID);
}
} while (!_overlaysToDelete.isEmpty());
if (pendingChanges._removedItems.size() > 0) {
render::ScenePointer scene = Application::getInstance()->getMain3DScene();
scene->enqueuePendingChanges(pendingChanges);
}
}
}
void Overlays::renderHUD(RenderArgs* renderArgs) {

View file

@ -89,6 +89,7 @@ public slots:
QSizeF textSize(unsigned int id, const QString& text) const;
private:
void cleanupOverlaysToDelete();
QMap<unsigned int, Overlay::Pointer> _overlaysHUD;
QMap<unsigned int, Overlay::Pointer> _overlaysWorld;
QList<Overlay::Pointer> _overlaysToDelete;

View file

@ -180,6 +180,8 @@ public:
typedef std::vector<Item> Vector;
typedef unsigned int ID;
static const ID INVALID_ITEM_ID = 0;
// Bound is the AABBox fully containing this item
typedef AABox Bound;