private Dictionary<int, int> ExportMeshMaterial(string mainObject)
{
Dictionary<int, int> matIdMapping = new Dictionary<int, int>();
if (Maxscript.QueryBoolean("classof {0}.material == Multimaterial", mainObject))
{
int numMaterials = Maxscript.QueryInteger("{0}.material.materialList.count", "mainObject");
for (int i = 0; i < numMaterials; ++i)
{
GrnMaterial mat = new GrnMaterial(this.File);
int id = this.File.Materials.Count;
Maxscript.Command("mat = {0}.material.materialList[{1}]", mainObject, i + 1);
this.ExportMaterial(mat);
int matListIndex = this.File.Materials.IndexOf(mat);
int actualMatId = Maxscript.QueryInteger("{0}.material.materialIdList[{1}]", mainObject, i + 1);
if (matListIndex >= 0)
{
if (!matIdMapping.ContainsKey(actualMatId))
{
matIdMapping.Add(actualMatId, matListIndex);
}
this.File.DataExtensions.RemoveAt(mat.DataExtensionIndex);
}
else
{
this.File.Materials.Add(mat);
if (matIdMapping.ContainsKey(actualMatId))
{
matIdMapping[actualMatId] = id;
}
else
{
matIdMapping.Add(actualMatId, id);
}
}
}
}
else if (Maxscript.QueryBoolean("classof {0}.material == Standardmaterial", mainObject))
{
GrnMaterial mat = new GrnMaterial(this.File);
int id = this.File.Materials.Count;
Maxscript.Command("mat = {0}.material", mainObject);
this.ExportMaterial(mat);
int matListIndex = this.File.Materials.IndexOf(mat);
if (matListIndex >= 0)
{
matIdMapping.Add(1, matListIndex);
this.File.DataExtensions.RemoveAt(mat.DataExtensionIndex);
}
else
{
this.File.Materials.Add(mat);
matIdMapping.Add(1, id);
}
}
return matIdMapping;
}