Exemplo n.º 1
0
        /// <summary>
        /// Read mesh file at path, with given Options. Result is stored in MeshBuilder parameter
        /// </summary>
        public IOReadResult Read(Stream stream, string sExtension, ReadOptions options)
        {
            if (MeshBuilder == null)
            {
                return(new IOReadResult(IOCode.GenericReaderError, "MeshBuilder is null!"));
            }

            MeshFormatReader useReader = null;

            foreach (var reader in Readers)
            {
                foreach (string ext in reader.SupportedExtensions)
                {
                    if (ext.Equals(sExtension, StringComparison.OrdinalIgnoreCase))
                    {
                        useReader = reader;
                    }
                }
                if (useReader != null)
                {
                    break;
                }
            }
            if (useReader == null)
            {
                return(new IOReadResult(IOCode.UnknownFormatError, "format " + sExtension + " is not supported"));
            }

            // save current culture
            var current_culture = Thread.CurrentThread.CurrentCulture;

            try
            {
                // push invariant culture for write
                if (ReadInvariantCulture)
                {
                    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
                }

                var result = useReader.ReadFile(stream, MeshBuilder, options, on_warning);

                // restore culture
                if (ReadInvariantCulture)
                {
                    Thread.CurrentThread.CurrentCulture = current_culture;
                }

                return(result);
            }
            catch (Exception e)
            {
                // restore culture
                if (ReadInvariantCulture)
                {
                    Thread.CurrentThread.CurrentCulture = current_culture;
                }

                return(new IOReadResult(IOCode.GenericReaderError, "Unknown error : exception : " + e.Message));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Read mesh file at path, with given Options. Result is stored in MeshBuilder parameter
        /// </summary>
        public IOReadResult Read(Stream stream, string sExtension, ReadOptions options)
        {
            if (MeshBuilder == null)
            {
                return(new IOReadResult(IOCode.GenericReaderError, "MeshBuilder is null!"));
            }
            MeshFormatReader useReader = null;

            foreach (var reader in Readers)
            {
                foreach (string ext in reader.SupportedExtensions)
                {
                    if (ext.Equals(sExtension, StringComparison.OrdinalIgnoreCase))
                    {
                        useReader = reader;
                    }
                }
                if (useReader != null)
                {
                    break;
                }
            }
            if (useReader == null)
            {
                return(new IOReadResult(IOCode.UnknownFormatError, "format " + sExtension + " is not supported"));
            }

            try {
                return(useReader.ReadFile(stream, MeshBuilder, options, on_warning));
            } catch (Exception e) {
                return(new IOReadResult(IOCode.GenericReaderError, "Unknown error : exception : " + e.Message));
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Add a handler for a given formta
        /// </summary>
        public void AddFormatHandler(MeshFormatReader reader)
        {
            List <string> formats = reader.SupportedExtensions;

            foreach (string s in formats)
            {
                if (SupportsFormat(s))
                {
                    throw new Exception("StandardMeshReader.AddFormatHandler: format " + s + " is already registered!");
                }
            }

            Readers.Add(reader);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Read mesh file at path, with given Options. Result is stored in MeshBuilder parameter
        /// </summary>
        public IOReadResult Read(string sFilename, ReadOptions options)
        {
            if (MeshBuilder == null)
            {
                return(new IOReadResult(IOCode.GenericReaderError, "MeshBuilder is null!"));
            }

            string sExtension = Path.GetExtension(sFilename);

            if (sExtension.Length < 2)
            {
                return(new IOReadResult(IOCode.InvalidFilenameError, "filename " + sFilename + " does not contain valid extension"));
            }
            sExtension = sExtension.Substring(1);

            MeshFormatReader useReader = null;

            foreach (var reader in Readers)
            {
                foreach (string ext in reader.SupportedExtensions)
                {
                    if (ext.Equals(sExtension, StringComparison.OrdinalIgnoreCase))
                    {
                        useReader = reader;
                    }
                }
                if (useReader != null)
                {
                    break;
                }
            }
            if (useReader == null)
            {
                return(new IOReadResult(IOCode.UnknownFormatError, "format " + sExtension + " is not supported"));
            }

            try {
                return(useReader.ReadFile(sFilename, MeshBuilder, options, on_warning));
            } catch (Exception e) {
                return(new IOReadResult(IOCode.GenericReaderError, "Unknown error : exception : " + e.Message));
            }
        }