Exemple #1
0
        protected override bool Load(string virtualFileName, Mesh mesh)
        {
            currentFileName     = virtualFileName;
            currentMesh         = mesh;
            globalScale         = 1;
            yAxisUp             = true;
            generatedMaterials  = new Dictionary <string, MySceneMaterial>();
            generatedGeometries = new Dictionary <string, GeometryItem>();
            generatedSubMeshes  = new List <MySceneSubMesh>();

            //load file
            XmlNode colladaNode;

            {
                try
                {
                    using (Stream stream = VirtualFile.Open(virtualFileName))
                    {
                        string fileText = new StreamReader(stream).ReadToEnd();
                        colladaNode = XmlUtils.LoadFromText(fileText);
                    }
                }
                catch (Exception ex)
                {
                    Error(ex.Message);
                    return(false);
                }
            }

            //parse
            if (!ParseColladaNode(colladaNode))
            {
                ClearTemporaryFields();
                return(false);
            }

            //generate mesh
            const bool      tangents            = true;
            const bool      edgeList            = true;
            const bool      allowMergeSubMeshes = true;
            MeshConstructor meshConstructor     = new MeshConstructor(tangents, edgeList, allowMergeSubMeshes);

            MyMeshSceneObject meshSceneObject = new MyMeshSceneObject(generatedSubMeshes.ToArray());

            if (!meshConstructor.DoExport(meshSceneObject, mesh))
            {
                ClearTemporaryFields();
                return(false);
            }

            ClearTemporaryFields();

            return(true);
        }