void CelAnimMesh::setCommonScale( Shape::Mesh & otherMesh ) { CelAnimMesh *potherMesh = dynamic_cast<CelAnimMesh *>(&otherMesh); AssertFatal(potherMesh, "TS::CelAnimMesh::setCommonScale: meshes not same type"); #if 0 // array of unpacked verts -- points only Point3F *unpackedVerts = new Point3F[fVerts.size()]; int v; for (v=0;v<fVerts.size();v++) fVerts[v].getPoint(unpackedVerts[v],fScale,fOrigin); Point3F *otherUnpackedVerts = new Point3F[potherMesh->fVerts.size()]; for (v=0;v<potherMesh->fVerts.size();v++) potherMesh->fVerts[v].getPoint(otherUnpackedVerts[v],potherMesh->fScale,potherMesh->fOrigin); // get minVert and maxVert for setting new fScale, fOrigin, and fRadius Point3F minVert = unpackedVerts[0]; Point3F maxVert = unpackedVerts[0]; for (v=1;v<fVerts.size();v++) { minVert.setMin( unpackedVerts[v] ); maxVert.setMax( unpackedVerts[v] ); } for (v=0;v<potherMesh->fVerts.size();v++) { minVert.setMin( otherUnpackedVerts[v] ); maxVert.setMax( otherUnpackedVerts[v] ); } // figure new fOrigin, fScale, and fRadius Point3F newOrigin = minVert; maxVert -= minVert; Point3F newScale( maxVert.x/255.0f, maxVert.y/255.0f, maxVert.z/255.0f); float newRadius = maxVert.len(); // re-pack this shapes verts int i; Point3F temp; for (i=0;i<fVerts.size();i++) fVerts[i].setPoint(unpackedVerts[i],newScale,newOrigin); fOrigin=newOrigin; fScale=newScale; fRadius=newRadius; // re-pack other shapes verts for (i=0;i<potherMesh->fVerts.size();i++) potherMesh->fVerts[i].setPoint(otherUnpackedVerts[i],newScale,newOrigin); potherMesh->fOrigin=fOrigin; potherMesh->fScale=newScale; potherMesh->fRadius=newRadius; delete [] unpackedVerts; delete [] otherUnpackedVerts; #endif }