Browse Source

Fix for crash in _onZoningChanged methods when called by hidden objects.

Hidden objects are removed from the scene manager so calls to getSceneManager()->getZoneManager() crash and burn.
chaigler 5 years ago
parent
commit
c4e00be91a
2 changed files with 6 additions and 2 deletions
  1. 3 1
      Engine/source/forest/forest.cpp
  2. 3 1
      Engine/source/terrain/terrData.cpp

+ 3 - 1
Engine/source/forest/forest.cpp

@@ -260,7 +260,9 @@ void Forest::setTransform( const MatrixF &mat )
 
 void Forest::_onZoningChanged( SceneZoneSpaceManager *zoneManager )
 {
-   if ( mData == NULL || zoneManager != getSceneManager()->getZoneManager() )
+   const SceneManager* sm = getSceneManager();
+
+   if (mData == NULL || (sm != NULL && sm->getZoneManager() != NULL && zoneManager != sm->getZoneManager()))
       return;
 
    mZoningDirty = true;

+ 3 - 1
Engine/source/terrain/terrData.cpp

@@ -461,7 +461,9 @@ void TerrainBlock::_updateBounds()
 
 void TerrainBlock::_onZoningChanged( SceneZoneSpaceManager *zoneManager )
 {
-   if ( mCell == NULL || zoneManager != getSceneManager()->getZoneManager() )
+   const SceneManager* sm = getSceneManager();
+
+   if (mCell == NULL || (sm != NULL && sm->getZoneManager() != NULL && zoneManager != sm->getZoneManager()))
       return;
 
    mZoningDirty = true;