mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 10:29:01 +02:00
Have ~OctreeProcessor break cycle instead of using weak pointers
This commit is contained in:
parent
99a8ecc6db
commit
9ae3411abe
4 changed files with 10 additions and 14 deletions
|
@ -33,7 +33,7 @@ EntityTreeElement::~EntityTreeElement() {
|
||||||
|
|
||||||
OctreeElementPointer EntityTreeElement::createNewElement(unsigned char* octalCode) {
|
OctreeElementPointer EntityTreeElement::createNewElement(unsigned char* octalCode) {
|
||||||
auto newChild = EntityTreeElementPointer(new EntityTreeElement(octalCode));
|
auto newChild = EntityTreeElementPointer(new EntityTreeElement(octalCode));
|
||||||
newChild->setTree(getTree());
|
newChild->setTree(_myTree);
|
||||||
return newChild;
|
return newChild;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ void EntityTreeElement::init(unsigned char* octalCode) {
|
||||||
|
|
||||||
OctreeElementPointer EntityTreeElement::addChildAtIndex(int index) {
|
OctreeElementPointer EntityTreeElement::addChildAtIndex(int index) {
|
||||||
OctreeElementPointer newElement = OctreeElement::addChildAtIndex(index);
|
OctreeElementPointer newElement = OctreeElement::addChildAtIndex(index);
|
||||||
std::static_pointer_cast<EntityTreeElement>(newElement)->setTree(getTree());
|
std::static_pointer_cast<EntityTreeElement>(newElement)->setTree(_myTree);
|
||||||
return newElement;
|
return newElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -475,7 +475,7 @@ bool EntityTreeElement::removeEntityItem(EntityItemPointer entity, bool deletion
|
||||||
|
|
||||||
int EntityTreeElement::readElementDataFromBuffer(const unsigned char* data, int bytesLeftToRead,
|
int EntityTreeElement::readElementDataFromBuffer(const unsigned char* data, int bytesLeftToRead,
|
||||||
ReadBitstreamToTreeParams& args) {
|
ReadBitstreamToTreeParams& args) {
|
||||||
return getTree()->readEntityDataFromBuffer(data, bytesLeftToRead, args);
|
return _myTree->readEntityDataFromBuffer(data, bytesLeftToRead, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityTreeElement::addEntityItem(EntityItemPointer entity) {
|
void EntityTreeElement::addEntityItem(EntityItemPointer entity) {
|
||||||
|
|
|
@ -161,8 +161,8 @@ public:
|
||||||
virtual uint16_t size() const;
|
virtual uint16_t size() const;
|
||||||
bool hasEntities() const { return size() > 0; }
|
bool hasEntities() const { return size() > 0; }
|
||||||
|
|
||||||
void setTree(EntityTreePointer tree) { _myTree = std::weak_ptr<EntityTree>(tree); }
|
void setTree(EntityTreePointer tree) { _myTree = tree; }
|
||||||
EntityTreePointer getTree() const { return _myTree.lock(); }
|
EntityTreePointer getTree() const { return _myTree; }
|
||||||
|
|
||||||
void addEntityItem(EntityItemPointer entity);
|
void addEntityItem(EntityItemPointer entity);
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void init(unsigned char * octalCode) override;
|
virtual void init(unsigned char * octalCode) override;
|
||||||
std::weak_ptr<EntityTree> _myTree;
|
EntityTreePointer _myTree;
|
||||||
EntityItems _entityItems;
|
EntityItems _entityItems;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -20,12 +20,6 @@
|
||||||
|
|
||||||
#include "OctreeLogging.h"
|
#include "OctreeLogging.h"
|
||||||
|
|
||||||
OctreeProcessor::OctreeProcessor() :
|
|
||||||
_tree(NULL),
|
|
||||||
_managedTree(false)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void OctreeProcessor::init() {
|
void OctreeProcessor::init() {
|
||||||
if (!_tree) {
|
if (!_tree) {
|
||||||
_tree = createTree();
|
_tree = createTree();
|
||||||
|
@ -34,6 +28,9 @@ void OctreeProcessor::init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
OctreeProcessor::~OctreeProcessor() {
|
OctreeProcessor::~OctreeProcessor() {
|
||||||
|
if (_tree) {
|
||||||
|
_tree->eraseAllOctreeElements(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OctreeProcessor::setTree(OctreePointer newTree) {
|
void OctreeProcessor::setTree(OctreePointer newTree) {
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
class OctreeProcessor : public QObject, public QEnableSharedFromThis<OctreeProcessor> {
|
class OctreeProcessor : public QObject, public QEnableSharedFromThis<OctreeProcessor> {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
OctreeProcessor();
|
|
||||||
virtual ~OctreeProcessor();
|
virtual ~OctreeProcessor();
|
||||||
|
|
||||||
virtual char getMyNodeType() const = 0;
|
virtual char getMyNodeType() const = 0;
|
||||||
|
@ -61,7 +60,7 @@ protected:
|
||||||
virtual OctreePointer createTree() = 0;
|
virtual OctreePointer createTree() = 0;
|
||||||
|
|
||||||
OctreePointer _tree;
|
OctreePointer _tree;
|
||||||
bool _managedTree;
|
bool _managedTree { false };
|
||||||
|
|
||||||
SimpleMovingAverage _elementsPerPacket;
|
SimpleMovingAverage _elementsPerPacket;
|
||||||
SimpleMovingAverage _entitiesPerPacket;
|
SimpleMovingAverage _entitiesPerPacket;
|
||||||
|
|
Loading…
Reference in a new issue