diff --git a/Engine/source/ts/tsMesh.cpp b/Engine/source/ts/tsMesh.cpp index ec0ca6168..54c4beeaa 100644 --- a/Engine/source/ts/tsMesh.cpp +++ b/Engine/source/ts/tsMesh.cpp @@ -2636,10 +2636,14 @@ void TSMesh::disassemble() { const TSDrawPrimitive& prim = primitives[i]; - TriListOpt::OptimizeTriangleOrdering(verts.size(), prim.numElements, - indices.address() + prim.start, tmpIdxs.address()); - dCopyArray(indices.address() + prim.start, tmpIdxs.address(), - prim.numElements); + // only optimize triangle lists (strips and fans are assumed to be already optimized) + if ( (prim.matIndex & TSDrawPrimitive::TypeMask) == TSDrawPrimitive::Triangles ) + { + TriListOpt::OptimizeTriangleOrdering(verts.size(), prim.numElements, + indices.address() + prim.start, tmpIdxs.address()); + dCopyArray(indices.address() + prim.start, tmpIdxs.address(), + prim.numElements); + } } }