extra option for terrain block to disable the update of the basetexture

This commit is contained in:
Lukas Aldershaab 2020-10-03 11:31:02 +02:00
parent 76c5e30869
commit f87dde254d

View file

@ -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();
}