public void InstallFile(PackageFileInfo fileInfo) { Logger.Trace($"Installing file {fileInfo.FileName} to {fileInfo.TargetFileName}"); if (File.Exists(fileInfo.TargetFileName)) { Logger.Trace($"Conflict between {fileInfo.FileName} and {fileInfo.TargetFileName}"); switch (fileInfo.ConflictResolution) { case FileConflictResolution.KeepExisting: Logger.Trace("Conflict resolved: keep existing file"); return; case FileConflictResolution.Fail: Logger.Trace("Conflict resolved: fail"); throw new IOException($"Deployment stopped because of conflict between {fileInfo.FileName} and {fileInfo.TargetFileName}"); } Logger.Trace("Conflict resolved: override file"); DeleteFile(fileInfo.TargetFileName); } else { var folder = Path.GetDirectoryName(fileInfo.TargetFileName); if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } } File.Copy(fileInfo.FileName, fileInfo.TargetFileName); _installedFile.Add(fileInfo.TargetFileName); Logger.Trace($"File {fileInfo.TargetFileName} copied"); }
private static void SetImageSource(ImageBrush brush, PackageFileInfo path) { ImageSource ddsSource; if (!_materialImages.TryGetValue(path.ToString(), out ddsSource)) { string packagePath; if (!PackageStream.IsFileExisted(path.PackagePath, path.FileInPackagePath)) { packagePath = Path.Combine(Path.GetFullPath(Path.GetDirectoryName(path.PackagePath)), "shared_content.pkg"); } else { packagePath = path.PackagePath; } using (var Stream = new PackageStream(packagePath, path.FileInPackagePath)) { var dds = new DDSImage(Stream); ddsSource = dds.BitmapSource(0); } } brush.ImageSource = ddsSource; }
public PackageFileInfo[] Scan(string packagesDirectory, params string[] filePatterns) { List <PackageFileInfo> files = new List <PackageFileInfo>(); if (Directory.Exists(packagesDirectory)) { foreach (string file in FileFinder.FindFiles(packagesDirectory, filePatterns)) { var fileInfo = new PackageFileInfo(file.TrimStart(Path.DirectorySeparatorChar)); files.Add(fileInfo); } } return(files.ToArray()); }
public void AddTo(string workingDirectory, string packagesDirectory, string packageName, string groupName, params string[] filePatterns) { var package = Loader.Load(packagesDirectory, packageName, groupName); if (package == null) { throw new PackageNotFoundException(packageName); } foreach (var file in FileFinder.FindFiles(workingDirectory, filePatterns)) { Console.WriteLine(file); var fileInfo = new PackageFileInfo( file.Replace(workingDirectory, "").TrimStart(Path.DirectorySeparatorChar) ); if (!package.Files.Contains(fileInfo)) { package.Files.Add(fileInfo); } } Saver.Save(packagesDirectory, package); }
private PackageHeirarchyItem CreateRelativeFolders(PackageHeirarchyItem experimentFolder, PackageFileInfo file) { PackageHeirarchyItem lastFolder = experimentFolder; foreach (string folder in file.FoldersPath) { PackageHeirarchyItem folderInfo; if (ContainsFolder(lastFolder, folder, out folderInfo)) { lastFolder = folderInfo; } else { lastFolder = CreateFolder(lastFolder, folder); } } return(lastFolder); }
private static MaterialGroup GetMaterial(ModelPrimitiveGroup group, Model model) { MaterialGroup material = new MaterialGroup(); for (int i = group.Material.Propertys.Count - 1; i >= 0; --i) { var property = group.Material.Propertys[i]; { if (property.Name == "diffuseMap") { var diffusePath = new PackageFileInfo(property.Texture); if (model.Type == Model.ModelType.Collision) { var armor = model.ArmorObject.Armor; var armorValue = (byte)armor.GetArmorValue(group.Material.Identifier); var rgb = waveLengthToRGB(armorValue + 410); var diffuse = new DiffuseMaterial(); var diffuseBrush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 0, 0, 0)); diffuse.Brush = diffuseBrush; diffuse.Color = Colors.Black; diffuse.AmbientColor = Colors.Black; material.Children.Add(diffuse); var emissive = new EmissiveMaterial(); var emissiveBrush = new ImageBrush(); SetImageSource(emissiveBrush, diffusePath); emissiveBrush.TileMode = TileMode.Tile; emissiveBrush.ViewportUnits = BrushMappingMode.Absolute; emissive.Brush = emissiveBrush; material.Children.Add(emissive); } else { var diffuse = new DiffuseMaterial(); ImageBrush diffuseBrush = new ImageBrush(); SetImageSource(diffuseBrush, diffusePath); diffuseBrush.TileMode = TileMode.Tile; diffuseBrush.ViewportUnits = BrushMappingMode.Absolute; diffuse.Brush = diffuseBrush; material.Children.Add(diffuse); } } else if (property.Name == "specularMap") { var specularPath = new PackageFileInfo(property.Texture); var specular = new SpecularMaterial(); ImageBrush specularBrush = new ImageBrush(); SetImageSource(specularBrush, specularPath); specularBrush.TileMode = TileMode.Tile; specularBrush.ViewportUnits = BrushMappingMode.Absolute; specular.Brush = specularBrush; specular.SpecularPower = 20; material.Children.Add(specular); } } } return(material); }