Пример #1
0
        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");
        }
Пример #2
0
        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;
        }
Пример #3
0
        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());
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }