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

Method init

Engine/source/terrain/terrCellMaterial.cpp:244–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242}
243
244void TerrainCellMaterial::init( TerrainBlock *block,
245 U64 activeMaterials,
246 bool deferredMat,
247 bool reflectMat,
248 bool baseOnly )
249{
250 // This isn't allowed for now.
251 AssertFatal( !( deferredMat && reflectMat ), "TerrainCellMaterial::init - We shouldn't get deferred and reflection in the same material!" );
252
253 mTerrain = block;
254 mMaterials = activeMaterials;
255
256 mMaterialInfos.clear();
257 for ( U32 i = 0; i < 64; i++ )
258 {
259 if ( !( mMaterials & ((U64)1 << i ) ) )
260 continue;
261
262 TerrainMaterial *mat = block->getMaterial( i );
263
264 MaterialInfo *info = new MaterialInfo();
265 info->layerId = i;
266 info->mat = mat;
267 mMaterialInfos.push_back(info);
268 }
269
270 if (!_initShader(deferredMat,
271 reflectMat,
272 baseOnly))
273 {
274 Con::errorf("TerrainCellMaterial::init - Failed to init shader!");
275
276 T3D::for_each(mMaterialInfos.begin(), mMaterialInfos.end(), T3D::delete_pointer());
277 mMaterialInfos.clear();
278 return;
279 }
280
281 // If we have attached mats then update them too.
282 if ( mDeferredMat )
283 mDeferredMat->init( mTerrain, mMaterials, true, false, baseOnly );
284 if ( mReflectMat )
285 mReflectMat->init( mTerrain, mMaterials, false, true, baseOnly );
286}
287
288bool TerrainCellMaterial::_initShader(bool deferredMat,
289 bool reflectMat,

Callers 3

getDeferredMatMethod · 0.45
getReflectMatMethod · 0.45
getShadowMatMethod · 0.45

Calls 8

for_eachFunction · 0.85
delete_pointerClass · 0.85
errorfFunction · 0.50
clearMethod · 0.45
getMaterialMethod · 0.45
push_backMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected