Forráskód Böngészése

Merge pull request #337 from lukaspj/feature/disable-update-of-basetexture

extra option for terrain block to disable the update of the basetexture
Brian Roberts 5 éve
szülő
commit
8c49019958
1 módosított fájl, 10 hozzáadás és 3 törlés
  1. 10 3
      Engine/source/terrain/terrData.cpp

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

@@ -202,7 +202,8 @@ TerrainBlock::TerrainBlock()
    mPhysicsRep( NULL ),
    mScreenError( 16 ),
    mCastShadows( true ),
-   mZoningDirty( false )
+   mZoningDirty( false ),
+   mUpdateBasetex ( true )
 {
    mTypeMask = TerrainObjectType | StaticObjectType | StaticShapeObjectType;
    mNetFlags.set(Ghostable | ScopeAlways);
@@ -304,7 +305,7 @@ bool TerrainBlock::_setBaseTexFormat(void *obj, const char *index, const char *d
          // If the cached base texture is older that the terrain file or
          // it doesn't exist then generate and cache it.
          String baseCachePath = terrain->_getBaseTexCacheFileName();
-         if (Platform::compareModifiedTimes(baseCachePath, terrain->mTerrainAsset->getTerrainFilePath()) < 0)
+         if (Platform::compareModifiedTimes(baseCachePath, terrain->mTerrainAsset->getTerrainFilePath()) < 0 && mUpdateBasetex)
             terrain->_updateBaseTexture(true);
          break;
       }
@@ -409,7 +410,7 @@ void TerrainBlock::setFile(const Resource<TerrainFile>& terr)
       // If the cached base texture is older that the terrain file or
       // it doesn't exist then generate and cache it.
       String baseCachePath = _getBaseTexCacheFileName();
-      if (Platform::compareModifiedTimes(baseCachePath, mTerrainAsset->getTerrainFilePath()) < 0)
+      if (Platform::compareModifiedTimes(baseCachePath, mTerrainAsset->getTerrainFilePath()) < 0 && mUpdateBasetex)
          _updateBaseTexture(true);
 
       // The base texture should have been cached by now... so load it.
@@ -1285,6 +1286,8 @@ void TerrainBlock::initPersistFields()
          "Light map dimensions in pixels." );
 
       addField( "screenError", TypeS32, Offset( mScreenError, TerrainBlock ), "Not yet implemented." );
+	
+      addField( "updateBasetex", TypeBool, Offset( mUpdateBasetex, TerrainBlock ), "Whether or not to update the Base Texture" );
 
    endGroup( "Misc" );
 
@@ -1342,6 +1345,8 @@ U32 TerrainBlock::packUpdate(NetConnection* con, U32 mask, BitStream *stream)
       stream->write( mScreenError );
 
    stream->writeInt(mBaseTexFormat, 32);
+	
+   stream->writeFlag(mUpdateBasetex);
    stream->writeFlag(mIgnoreZodiacs);
 
    return retMask;
@@ -1409,6 +1414,8 @@ void TerrainBlock::unpackUpdate(NetConnection* con, BitStream *stream)
       stream->read( &mScreenError );
 
    mBaseTexFormat = (BaseTexFormat)stream->readInt(32);
+	
+   mUpdateBasetex = stream->readFlag();
    mIgnoreZodiacs = stream->readFlag();
 }