/// <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(); }