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

Method buildPolyList

Engine/source/ts/tsMesh.cpp:311–430  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

309//-----------------------------------------------------
310
311bool TSMesh::buildPolyList( S32 frame, AbstractPolyList *polyList, U32 &surfaceKey, TSMaterialList *materials )
312{
313 S32 firstVert = vertsPerFrame * frame, i, base = 0;
314 bool hasTVert2 = getHasTVert2();
315
316 // add the verts...
317 if ( vertsPerFrame )
318 {
319 if ( mVertexData.isReady() )
320 {
321 OptimizedPolyList* opList = dynamic_cast<OptimizedPolyList*>(polyList);
322 if ( opList )
323 {
324 base = opList->mVertexList.size();
325 for ( i = 0; i < vertsPerFrame; i++ )
326 {
327 // Don't use vertex() method as we want to retain the original indices
328 OptimizedPolyList::VertIndex vert;
329 vert.vertIdx = opList->insertPoint( mVertexData.getBase( i + firstVert ).vert() );
330 vert.normalIdx = opList->insertNormal( mVertexData.getBase( i + firstVert ).normal() );
331 vert.uv0Idx = opList->insertUV0( mVertexData.getBase( i + firstVert ).tvert() );
332 if ( hasTVert2 )
333 vert.uv1Idx = opList->insertUV1( mVertexData.getColor( i + firstVert ).tvert2() );
334
335 opList->mVertexList.push_back( vert );
336 }
337 }
338 else
339 {
340 base = polyList->addPointAndNormal( mVertexData.getBase( firstVert ).vert(), mVertexData.getBase( firstVert ).normal() );
341 for ( i = 1; i < vertsPerFrame; i++ )
342 {
343 polyList->addPointAndNormal( mVertexData.getBase( i + firstVert ).vert(), mVertexData.getBase( i + firstVert ).normal() );
344 }
345 }
346 }
347 else
348 {
349 OptimizedPolyList* opList = dynamic_cast<OptimizedPolyList*>(polyList);
350 if ( opList )
351 {
352 base = opList->mVertexList.size();
353 for ( i = 0; i < vertsPerFrame; i++ )
354 {
355 // Don't use vertex() method as we want to retain the original indices
356 OptimizedPolyList::VertIndex vert;
357 vert.vertIdx = opList->insertPoint( mVerts[ i + firstVert ] );
358 vert.normalIdx = opList->insertNormal( mNorms[ i + firstVert ] );
359 vert.uv0Idx = opList->insertUV0( mTverts[ i + firstVert ] );
360 if ( hasTVert2 )
361 vert.uv1Idx = opList->insertUV1(mTverts[ i + firstVert ] );
362
363 opList->mVertexList.push_back( vert );
364 }
365 }
366 else
367 {
368 base = polyList->addPointAndNormal( mVerts[firstVert], mNorms[firstVert] );

Callers 1

processDataMethod · 0.45

Calls 15

insertPointMethod · 0.80
vertMethod · 0.80
insertNormalMethod · 0.80
normalMethod · 0.80
insertUV0Method · 0.80
tvertMethod · 0.80
insertUV1Method · 0.80
tvert2Method · 0.80
getMaterialInstMethod · 0.80
isReadyMethod · 0.45
sizeMethod · 0.45
getColorMethod · 0.45

Tested by

no test coverage detected