MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / _updateLayerTexture

Method _updateLayerTexture

Engine/source/terrain/terrRender.cpp:249–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

247}
248
249void TerrainBlock::_updateLayerTexture()
250{
251 const U32 layerSize = mFile->mSize;
252 const Vector<U8> &layerMap = mFile->mLayerMap;
253 const U32 pixelCount = layerMap.size();
254
255 if ( mLayerTex.isNull() ||
256 mLayerTex.getWidth() != layerSize ||
257 mLayerTex.getHeight() != layerSize )
258 mLayerTex.set( layerSize, layerSize, GFXFormatB8G8R8A8, &TerrainLayerTexProfile, "" );
259
260 AssertFatal( mLayerTex.getWidth() == layerSize &&
261 mLayerTex.getHeight() == layerSize,
262 "TerrainBlock::_updateLayerTexture - The texture size doesn't match the requested size!" );
263
264 // Update the layer texture.
265 GFXLockedRect *lock = mLayerTex.lock();
266
267 for ( U32 i=0; i < pixelCount; i++ )
268 {
269 lock->bits[0] = layerMap[i];
270
271 if ( i + 1 >= pixelCount )
272 lock->bits[1] = lock->bits[0];
273 else
274 lock->bits[1] = layerMap[i+1];
275
276 if ( i + layerSize >= pixelCount )
277 lock->bits[2] = lock->bits[0];
278 else
279 lock->bits[2] = layerMap[i + layerSize];
280
281 if ( i + layerSize + 1 >= pixelCount )
282 lock->bits[3] = lock->bits[0];
283 else
284 lock->bits[3] = layerMap[i + layerSize + 1];
285
286 lock->bits += 4;
287 }
288
289 mLayerTex.unlock();
290 //mLayerTex->dumpToDisk( "png", "./layerTex.png" );
291}
292
293bool TerrainBlock::_initBaseShader()
294{

Callers 1

_setBaseTexFormatMethod · 0.80

Calls 7

sizeMethod · 0.45
isNullMethod · 0.45
getWidthMethod · 0.45
getHeightMethod · 0.45
setMethod · 0.45
lockMethod · 0.45
unlockMethod · 0.45

Tested by

no test coverage detected