mirror of
https://github.com/overte-org/overte.git
synced 2025-07-23 14:44:01 +02:00
Fix crash bug
Doh!! Renderer used before initialized.
This commit is contained in:
parent
0a7614ce21
commit
11a399ec82
1 changed files with 12 additions and 6 deletions
|
@ -60,8 +60,8 @@ VoxelSystem::VoxelSystem(float treeScale, int maxVoxels)
|
||||||
_treeScale(treeScale),
|
_treeScale(treeScale),
|
||||||
_maxVoxels(maxVoxels),
|
_maxVoxels(maxVoxels),
|
||||||
_initialized(false),
|
_initialized(false),
|
||||||
_inInspectForOcclusions(false),
|
|
||||||
_showCulledSharedFaces(false),
|
_showCulledSharedFaces(false),
|
||||||
|
_inInspectForOcclusions(false),
|
||||||
_usePrimitiveRenderer(false),
|
_usePrimitiveRenderer(false),
|
||||||
_renderer(0) {
|
_renderer(0) {
|
||||||
|
|
||||||
|
@ -251,8 +251,6 @@ VoxelSystem::~VoxelSystem() {
|
||||||
|
|
||||||
cleanupVoxelMemory();
|
cleanupVoxelMemory();
|
||||||
delete _tree;
|
delete _tree;
|
||||||
|
|
||||||
_renderer = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VoxelSystem::setMaxVoxels(int maxVoxels) {
|
void VoxelSystem::setMaxVoxels(int maxVoxels) {
|
||||||
|
@ -371,8 +369,10 @@ void VoxelSystem::cleanupVoxelMemory() {
|
||||||
_readColorsArray = NULL;
|
_readColorsArray = NULL;
|
||||||
_writeColorsArray = NULL;
|
_writeColorsArray = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete _renderer;
|
delete _renderer;
|
||||||
_renderer = 0;
|
_renderer = 0;
|
||||||
|
|
||||||
delete[] _writeVoxelDirtyArray;
|
delete[] _writeVoxelDirtyArray;
|
||||||
delete[] _readVoxelDirtyArray;
|
delete[] _readVoxelDirtyArray;
|
||||||
_writeVoxelDirtyArray = _readVoxelDirtyArray = NULL;
|
_writeVoxelDirtyArray = _readVoxelDirtyArray = NULL;
|
||||||
|
@ -1471,7 +1471,9 @@ void VoxelSystem::killLocalVoxels() {
|
||||||
_tree->eraseAllOctreeElements();
|
_tree->eraseAllOctreeElements();
|
||||||
_tree->unlock();
|
_tree->unlock();
|
||||||
clearFreeBufferIndexes();
|
clearFreeBufferIndexes();
|
||||||
|
if (_renderer) {
|
||||||
_renderer->release();
|
_renderer->release();
|
||||||
|
}
|
||||||
_voxelsInReadArrays = 0; // do we need to do this?
|
_voxelsInReadArrays = 0; // do we need to do this?
|
||||||
setupNewVoxelsForDrawing();
|
setupNewVoxelsForDrawing();
|
||||||
}
|
}
|
||||||
|
@ -1675,13 +1677,17 @@ void VoxelSystem::cullSharedFaces() {
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::CullSharedFaces)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::CullSharedFaces)) {
|
||||||
_useVoxelShader = false;
|
_useVoxelShader = false;
|
||||||
_usePrimitiveRenderer = true;
|
_usePrimitiveRenderer = true;
|
||||||
|
if (_renderer) {
|
||||||
_renderer->release();
|
_renderer->release();
|
||||||
|
}
|
||||||
clearAllNodesBufferIndex();
|
clearAllNodesBufferIndex();
|
||||||
inspectForOcclusions();
|
inspectForOcclusions();
|
||||||
qDebug("culling shared faces in %d nodes", _nodeCount);
|
qDebug("culling shared faces in %d nodes", _nodeCount);
|
||||||
} else {
|
} else {
|
||||||
_usePrimitiveRenderer = false;
|
_usePrimitiveRenderer = false;
|
||||||
|
if (_renderer) {
|
||||||
_renderer->release();
|
_renderer->release();
|
||||||
|
}
|
||||||
clearAllNodesBufferIndex();
|
clearAllNodesBufferIndex();
|
||||||
_tree->lockForRead();
|
_tree->lockForRead();
|
||||||
_tree->recurseTreeWithOperation(clearOcclusionsOperation);
|
_tree->recurseTreeWithOperation(clearOcclusionsOperation);
|
||||||
|
|
Loading…
Reference in a new issue