diff options
| author | simon <none@none> | 2014-04-09 17:06:19 -0700 | 
|---|---|---|
| committer | simon <none@none> | 2014-04-09 17:06:19 -0700 | 
| commit | 33e28d6223e4f27c9b8e5a563e749979dad3a1fd (patch) | |
| tree | f6a5bc4939b69095fdb9aeebb6df363b1e58c61e | |
| parent | c9620e24d32a08ee79486d5ecc4085731432a0a6 (diff) | |
MAINT-2034 : Terrain texture changes caused by changing texture elevation
ranges or terraforming can not be seen until after relog or teleporting out
and back to the region
| -rwxr-xr-x | indra/newview/llviewerregion.cpp | 33 | 
1 files changed, 31 insertions, 2 deletions
| diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index a271690349..7d16a9664b 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1523,40 +1523,69 @@ void LLViewerRegion::unpackRegionHandshake()  	{  		LLUUID tmp_id; +		bool changed = false; + +		// Get the 4 textures for land  		msg->getUUID("RegionInfo", "TerrainDetail0", tmp_id); +		changed |= (tmp_id != compp->getDetailTextureID(0));		  		compp->setDetailTextureID(0, tmp_id); +  		msg->getUUID("RegionInfo", "TerrainDetail1", tmp_id); +		changed |= (tmp_id != compp->getDetailTextureID(1));		  		compp->setDetailTextureID(1, tmp_id); +  		msg->getUUID("RegionInfo", "TerrainDetail2", tmp_id); +		changed |= (tmp_id != compp->getDetailTextureID(2));		  		compp->setDetailTextureID(2, tmp_id); +  		msg->getUUID("RegionInfo", "TerrainDetail3", tmp_id); +		changed |= (tmp_id != compp->getDetailTextureID(3));		  		compp->setDetailTextureID(3, tmp_id); +		// Get the start altitude and range values for land textures  		F32 tmp_f32;  		msg->getF32("RegionInfo", "TerrainStartHeight00", tmp_f32); +		changed |= (tmp_f32 != compp->getStartHeight(0));  		compp->setStartHeight(0, tmp_f32); +  		msg->getF32("RegionInfo", "TerrainStartHeight01", tmp_f32); +		changed |= (tmp_f32 != compp->getStartHeight(1));  		compp->setStartHeight(1, tmp_f32); +  		msg->getF32("RegionInfo", "TerrainStartHeight10", tmp_f32); +		changed |= (tmp_f32 != compp->getStartHeight(2));  		compp->setStartHeight(2, tmp_f32); +  		msg->getF32("RegionInfo", "TerrainStartHeight11", tmp_f32); +		changed |= (tmp_f32 != compp->getStartHeight(3));  		compp->setStartHeight(3, tmp_f32); +  		msg->getF32("RegionInfo", "TerrainHeightRange00", tmp_f32); +		changed |= (tmp_f32 != compp->getHeightRange(0));  		compp->setHeightRange(0, tmp_f32); +  		msg->getF32("RegionInfo", "TerrainHeightRange01", tmp_f32); +		changed |= (tmp_f32 != compp->getHeightRange(1));  		compp->setHeightRange(1, tmp_f32); +  		msg->getF32("RegionInfo", "TerrainHeightRange10", tmp_f32); +		changed |= (tmp_f32 != compp->getHeightRange(2));  		compp->setHeightRange(2, tmp_f32); +  		msg->getF32("RegionInfo", "TerrainHeightRange11", tmp_f32); +		changed |= (tmp_f32 != compp->getHeightRange(3));  		compp->setHeightRange(3, tmp_f32);  		// If this is an UPDATE (params already ready, we need to regenerate  		// all of our terrain stuff, by  		if (compp->getParamsReady())  		{ -			//this line creates frame stalls on region crossing and removing it appears to have no effect -			//getLand().dirtyAllPatches(); +			// Update if the land changed +			if (changed) +			{ +				getLand().dirtyAllPatches(); +			}  		}  		else  		{ | 
