summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleo2002-10-17 22:41:42 +0000
committerleo2002-10-17 22:41:42 +0000
commitc757f536ddf51b2acc5f2343e0d7c46c37e31dd8 (patch)
treed735fe3477a16fd2b08b613d473f3f9d78f3dde7
parent2b971c558bc8a1b39de58b20ad6910ac421b0ada (diff)
Fixed some bugs in the 3DS exporter.
git-svn-id: http://svn.leocad.org/trunk@319 c7d43263-9d01-0410-8a33-9dba5d9f93d6
-rw-r--r--win/Tools.cpp87
1 files 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);