Can someone please fix this so it exports an object as shiny if it has materials on it?
/* * .X Plug-in by Joe Cooning * Joe Cooning Produx * 2006 */ /* * Directives to install script as export plugin in Object editor. * * Required directives: * * #plugin("object", "export", <app-name>, <file-extension>); * #file(<file-var>, [ "text" | "binary" ]); * #return(<int-var>); * * <file-extension> - string, including initial '.' * <app-name> - comment for export file open dialog. * <file-var> - name of file variable. Must be declared later. * <int-var> - int variable with result. 1 = success, 0 = failure. * */ #plugin("object", "export", "Directx", ".x"); #file($output, "text"); #return($result); file $output; int $result; object $curObject; $curObject = project.curObject; $output.print("xof 0302txt 0064\nHeader {\n1;\n0;\n1;\n}\n\n"); shape $shape, $shapes[1], $childShapes[1]; tridata $mdata; int $numPoints, $numFaces, $numMaterials; int $totalPoints; int $ii, $jj; point3 $point, $normal, $tr1, $tr2, $tr3, $tr4; point2 $uv; float4x4 $transformMat; string $matName, $texFile; material $material; texture $tex; /* The shapes in $shapes are processed in reverse order so */ /* reverse the array of values that GeetShapes returns: */ $curObject.GetShapes($childShapes); $shapes.size = 0; while ($childShapes.size > 0) $shapes.push($childShapes.pop()); while ($shapes.size > 0) { $shape = $shapes.pop(); /* If $shape is a group push child shapes onto stack: */ if ($shape.GetKind() == SHAPE_KIND_GROUP) { $shape.GetShapes($childShapes); $output.print("// Group "%s" has %d children:\n", $shape.name, $childShapes.size); while ($childShapes.size > 0) { $shapes.push($childShapes.pop()); } } else if ($shape.GetKind() == SHAPE_KIND_PATH || $shape.GetKind() == SHAPE_KIND_MODIFIER || $shape.GetKind() == SHAPE_KIND_TEXT) { /* No 3D mesh to output. */ } else { $mdata = $shape.GetTriangleData(); $output.print("Frame %s {\nFrameTransformMatrix {\n", $shape.name); $transformMat = $shape.GetGlobalTransform(); $tr4=$transformMat.Project((0.0,0.0,0.0)); $tr1=$transformMat.Project((1.0,0.0,0.0))-$tr4; $tr2=$transformMat.Project((0.0,1.0,0.0))-$tr4; $tr3=$transformMat.Project((0.0,0.0,1.0))-$tr4; $output.print("%.6f, %.6f, %.6f, 0.000000,\n%.6f, %.6f, %.6f, 0.000000,\n%.6f, %.6f, %.6f, 0.000000,\n%.6f, %.6f, %.6f, 1.000000;;\n}\n",$tr1,$tr2,$tr3,$tr4); $output.print("Mesh %s {\n", $shape.name); $numPoints = $mdata.GetNumPoints(); $output.print("%d;\n", $numPoints); for $ii = 0 to $numPoints-1 do { $point = $mdata.GetPoint($ii); $point.z =$point.z * -1; $output.print("%.6f; %.6f; %.6f;", $point); if ($ii<$numPoints-1){ $output.print(",\n"); } else { $output.print(";\n"); } } $numFaces = $mdata.GetNumTriangles(); $output.print("%d;\n", $numFaces); for $ii = 0 to $numFaces - 1 do { $output.print("3;%d,%d,%d;", $mdata.GetIndex($ii*3 + 2), $mdata.GetIndex($ii*3 + 1), $mdata.GetIndex($ii*3)); if ($ii<$numFaces-1){ $output.print(",\n"); } else { $output.print(";\n"); } } $output.print("MeshMaterialList {\n"); $numMaterials = $mdata.GetNumMaterials(); $output.print("%d;\n", $numMaterials); $output.print("%d;\n", $numFaces); for $ii = 0 to $numFaces - 1 do { $output.print("%d", $mdata.GetMatIndex($ii)); if ($ii<$numFaces - 1) { $output.print(",\n"); } else { $output.print(";\n"); } } for $ii = 0 to $numMaterials - 1 do { $material = $mdata.GetMaterial($ii); $tex = $material.GetTexture(TEXTURE_DIFFUSE); $matName = $material.name; if ($matName == " -- default --") { $matName = "___default___"; } $output.print("Material %s {\n", $matName); $output.print("%.6f, %.6f, %.6f, %.6f;;\n", $material.diffuse, $material.alpha); $output.print("%.6f;\n", $material.Ks); $output.print("%.6f, %.6f, %.6f;;\n", $material.specular); $output.print("%.6f, %.6f, %.6f;;\n", $material.emissive); $texFile = $tex.GetFileName(); if ($texFile != ""){ $output.print("TextureFilename {\n"%s.%s";\n}\n", $texFile.GetRoot(), $texFile.GetExt()); } $output.print("}\n"); } $output.print("}\n\n"); $output.print("MeshNormals {\n%d;\n", $numPoints); for $ii = 0 to $numPoints - 1 do { $normal = $mdata.GetNormal($ii); $normal.z = $normal.z * -1; $output.print("%.6f; %.6f; %.6f;", $normal); if ($ii<$numPoints-1){ $output.print(",\n"); } else { $output.print(";\n"); } } $output.print("%d;\n", $numFaces); for $ii = 0 to $numFaces - 1 do { $output.print("3; %d,%d,%d;", $mdata.GetIndex($ii*3 + 2), $mdata.GetIndex($ii*3 + 1), $mdata.GetIndex($ii*3)); if ($ii<$numFaces-1){ $output.print(",\n"); } else { $output.print(";\n"); } } $output.print("}\n"); $output.print("MeshTextureCoords {\n%d;\n", $numPoints); for $ii = 0 to $numPoints - 1 do { $uv = $mdata.GetTexCoord($ii); $uv.y = 1.0-$uv.y; $output.print("%.5f; %.5f;", $uv); if ($ii<$numPoints - 1){ $output.print(",\n"); } else { $output.print(";\n"); } } $output.print("}\n"); $output.print("}\n}\n"); } } $result = 1; /* Assume export will succeed. */