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:
parent
b4db787837
commit
667dccbb87
4 changed files with 24 additions and 9 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue