From c757f536ddf51b2acc5f2343e0d7c46c37e31dd8 Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 17 Oct 2002 22:41:42 +0000 Subject: Fixed some bugs in the 3DS exporter. git-svn-id: http://svn.leocad.org/trunk@319 c7d43263-9d01-0410-8a33-9dba5d9f93d6 --- win/Tools.cpp | 87 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/win/Tools.cpp b/win/Tools.cpp index 1e3a33e..b39c0e4 100644 --- a/win/Tools.cpp +++ b/win/Tools.cpp @@ -450,11 +450,11 @@ void Export3DStudio() i = *info; info++; - facecount += (*info)*2; - facemats[i] += (*info)*2; + facecount += (*info)*2/4; + facemats[i] += (*info)*2/4; info += *info + 1; - facecount += (*info); - facemats[i] += (*info); + facecount += (*info)/3; + facemats[i] += (*info)/3; info += *info + 1; info += *info + 1; } @@ -521,60 +521,63 @@ void Export3DStudio() mobj->nmats = i; InitMeshObjField3ds (mobj, InitMatArray3ds); - UINT curface = 0; i = 0; for (j = 0; j < LC_COL_DEFAULT+1; j++) - if (facemats[j]) { - InitMatArrayIndex3ds (mobj, i, facemats[j]); - sprintf(mobj->matarray[i].name, "Material%02d", - j == LC_COL_DEFAULT ? pPiece->GetColor() : j); - mobj->matarray[i].nfaces = facemats[j]; - - facecount = 0; - - for (c = 0; c < pInfo->m_nGroupCount; c++) + if (facemats[j]) { - WORD* info = (WORD*)pInfo->m_pGroups[c].drawinfo; - col = *info; - info++; + InitMatArrayIndex3ds (mobj, i, facemats[j]); + sprintf(mobj->matarray[i].name, "Material%02d", j == LC_COL_DEFAULT ? pPiece->GetColor() : j); + mobj->matarray[i].nfaces = facemats[j]; - while (col--) + UINT curface = 0; + facecount = 0; + + for (c = 0; c < pInfo->m_nGroupCount; c++) { - if (j == *info) + WORD* info = (WORD*)pInfo->m_pGroups[c].drawinfo; + col = *info; + info++; + + while (col--) { - info++; - for (UINT k = 0; k < *info; k += 4) + if (j == *info) { - mobj->matarray[i].faceindex[facecount] = curface; - facecount++; - curface++; - mobj->matarray[i].faceindex[facecount] = curface; - facecount++; - curface++; - } + info++; + for (UINT k = 0; k < *info; k += 4) + { + mobj->matarray[i].faceindex[facecount] = curface; + facecount++; + curface++; + mobj->matarray[i].faceindex[facecount] = curface; + facecount++; + curface++; + } - info += *info + 1; - for (k = 0; k < *info; k += 3) + info += *info + 1; + for (k = 0; k < *info; k += 3) + { + mobj->matarray[i].faceindex[facecount] = curface; + facecount++; + curface++; + } + info += *info + 1; + } + else { - mobj->matarray[i].faceindex[facecount] = curface; - facecount++; - curface++; + info++; + curface += (*info)*2/4; + info += *info + 1; + curface += (*info)/3; + info += *info + 1; } info += *info + 1; } - else - { - info++; - info += *info + 1; - info += *info + 1; - } - info += *info + 1; } - } - i++; + i++; + } } FillMatrix3ds(mobj); -- cgit v1.2.3