| 309 | //----------------------------------------------------- |
| 310 | |
| 311 | bool 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] ); |
no test coverage detected