private void OpenImportStream(Stream stream, string fullPath, TextureFormatMode mode)
        {
            TextureFormatSerializer curSerializer = null;
            MetadataReader          reader        = null;

            if (mode == TextureFormatMode.Format)
            {
                curSerializer = TextureFormatSerializerProvider.FromStream(stream);
            }
            else if (mode == TextureFormatMode.Metadata)
            {
                reader        = XmlMetadataReader.Create(stream);
                curSerializer = TextureFormatSerializerProvider.FromMetadata(reader);
            }
            else
            {
                curSerializer = TextureFormatSerializerProvider.FromStream(stream);
                mode          = TextureFormatMode.Format;
                if (curSerializer == null)
                {
                    reader        = XmlMetadataReader.Create(stream);
                    curSerializer = TextureFormatSerializerProvider.FromMetadata(reader);
                    mode          = TextureFormatMode.Metadata;
                }
            }

            if (curSerializer == null)
            {
                MessageBox.Show("Unsupported file format!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                if (reader != null)
                {
                    reader.Dispose();
                }

                return;
            }

            switch (mode)
            {
            case TextureFormatMode.Format:
                SetTexture(curSerializer.Open(stream));
                break;

            case TextureFormatMode.Metadata:
                SetTexture(curSerializer.Import(reader, Path.GetDirectoryName(fullPath)));
                break;

            default:
                throw new ArgumentException("Should never happen!");
            }
            if (reader != null)
            {
                reader.Dispose();
            }

            SetFilename(Path.GetFileName(fullPath));
            serializer = curSerializer;
        }
Exemple #2
0
 public void import(string path)
 {
     using (Stream s = File.Open(path, FileMode.Open))
     {
         using (MetadataReader reader = XmlMetadataReader.Create(s))
         {
             Texture = serializer.Import(reader, path);
         }
     }
 }
Exemple #3
0
        /// <see cref="IComponent.Start"/>
        public void Start()
        {
            /// Load the simulation metadata files from the configured directory
            DirectoryInfo rootDir = new DirectoryInfo(Constants.METADATA_DIR);

            this.metadata = new ScenarioMetadata();
            if (rootDir.Exists)
            {
                FileInfo[] metadataFiles = rootDir.GetFiles("*.xml", SearchOption.AllDirectories);
                foreach (FileInfo metadataFile in metadataFiles)
                {
                    /// TODO: this is a hack! Later we will have binary metadata format.
                    string xmlStr   = File.ReadAllText(metadataFile.FullName);
                    string imageDir = metadataFile.DirectoryName;
                    XmlMetadataReader.Read(xmlStr, imageDir, this.metadata);
                }
            }

            /// Register the entity constraints to the corresponding entity types.
            foreach (KeyValuePair <string, List <EntityPlacementConstraint> > item in this.entityConstraints)
            {
                ScenarioElementType elementType = this.metadata.GetElementTypeImpl(item.Key);
                foreach (EntityPlacementConstraint constraint in item.Value)
                {
                    elementType.AddPlacementConstraint(constraint);
                }
            }

            /// Register the suggestion providers to the corresponding building types.
            foreach (KeyValuePair <string, List <BuildingPlacementSuggestionProvider> > item in this.suggestionProviders)
            {
                BuildingType buildingType = this.metadata.GetBuildingTypeImpl(item.Key);
                foreach (BuildingPlacementSuggestionProvider provider in item.Value)
                {
                    buildingType.AddPlacementSuggestionProvider(provider);
                }
            }

            /// Finalize the metadata.
            this.metadata.CheckAndFinalize();
        }