Exemple #1
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            using (OpenFileDialog ofd = new OpenFileDialog()) {
                string directory;

                if (!dialogDirs.TryGetValue(GetType(), out directory))
                {
                    directory = InitialDirectory ?? "";
                    dialogDirs.Add(GetType(), directory);
                }

                ofd.InitialDirectory = directory;
                ofd.RestoreDirectory = true;
                ofd.Filter           = Filter;

                // set file filter info here
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    var fileName = ofd.FileName;

                    dialogDirs[GetType()] = Path.GetDirectoryName(fileName);

                    if (Path.IsPathRooted(fileName))
                    {
                        fileName = ContentUtils.MakeRelativePath(Builder.FullInputDirectory + @"\", fileName);
                    }

                    return(fileName);
                }
            }
            return(value);
        }
Exemple #2
0
 public LocalFile(string baseDir, string fullPath)
 {
     this.Handled  = false;
     this.BaseDir  = baseDir;
     this.FullPath = fullPath;
     this.KeyPath  = ContentUtils.BackslashesToSlashes(ContentUtils.MakeRelativePath(baseDir + "/", fullPath));
 }
Exemple #3
0
        public static bool OpenFileDialog(string caption, string filter, string dir, bool getRelativePath, out string fileName)
        {
            fileName = null;

            using (OpenFileDialog ofd = new OpenFileDialog()) {
                ofd.InitialDirectory = Path.Combine(Builder.FullInputDirectory, dir);
                ofd.RestoreDirectory = true;
                ofd.Filter           = filter;
                ofd.Title            = caption;

                // set file filter info here
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    fileName = ofd.FileName;

                    if (Path.IsPathRooted(fileName) && getRelativePath)
                    {
                        fileName = ContentUtils.MakeRelativePath(Builder.FullInputDirectory + @"\", fileName);
                    }

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (lastDir == null)
            {
                lastDir = GetBuilderContentFolder();
                baseDir = lastDir;
            }

            using (OpenFileDialog ofd = new OpenFileDialog()) {
                ofd.Filter           = "Image Files (*.tga;*.jpg;*.dds;*.png)|*.tga;*.jpg;*.dds;*.png";
                ofd.InitialDirectory = lastDir;

                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    lastDir = Path.GetDirectoryName(ofd.FileName);
                    return(ContentUtils.MakeRelativePath(baseDir + "/", ofd.FileName));
                    //return GameContent.RemovePathBase( ofd.FileName, "Content" );
                }
            }
            return(value);
        }
Exemple #5
0
        static int Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
            Log.AddListener(new StdLogListener());

            var options = new Options();
            var parser  = new CommandLineParser(options.GetType());

            try {
                //	parse arguments :
                parser.ParseCommandLine(options, args);

                //	change extension of output not set :
                if (options.Output == null)
                {
                    options.Output = Path.ChangeExtension(options.Input, ".scene");
                }


                //
                //	run fbx loader :
                //
                Log.Message("Reading FBX: {0}", options.Input);

                var loader = new FbxLoader();
                using (var scene = loader.LoadScene(options.Input, options)) {
                    //
                    //	Save scene :
                    //
                    Log.Message("Preparation...");
                    foreach (var mesh in scene.Meshes)
                    {
                        if (mesh != null)
                        {
                            mesh.MergeVertices(options.MergeTolerance);
                            mesh.DefragmentSubsets(scene, true);
                            mesh.ComputeTangentFrame();
                            mesh.ComputeBoundingBox();
                        }
                    }

                    Log.Message("Merging instances...");
                    scene.DetectAndMergeInstances();

                                        #if false
                    if (options.BaseDirectory != null)
                    {
                        Log.Message("Resolving assets path...");

                        var relativePath = ContentUtils.MakeRelativePath(options.BaseDirectory + @"\", options.Input);
                        var relativeDir  = Path.GetDirectoryName(relativePath);
                        var sceneDir     = Path.GetDirectoryName(options.Input);
                        Log.Message("...scene directory      : {0}", sceneDir);
                        Log.Message("...scene base directory : {0}", options.BaseDirectory);
                        Log.Message("...scene relative path  : {0}", relativePath);
                        Log.Message("...scene relative dir   : {0}", relativeDir);

                        foreach (var mtrl in scene.Materials)
                        {
                            ResolveMaterial(mtrl, relativeDir, sceneDir);
                        }
                    }
                                        #endif

                    //
                    //	Save scene :
                    //
                    Log.Message("Writing binary file: {0}", options.Output);
                    using (var stream = File.OpenWrite(options.Output)) {
                        scene.Save(stream);
                    }


                    if (!string.IsNullOrWhiteSpace(options.Report))
                    {
                        var reportPath = options.Report;
                        Log.Message("Writing report: {0}", reportPath);
                        File.WriteAllText(reportPath, SceneReport.CreateHtmlReport(scene));
                    }
                }

                Log.Message("Done.");
            } catch (Exception e) {
                parser.PrintError("{0}", e.ToString());

                if (options.Wait)
                {
                    Log.Message("Press any key to continue...");
                    Console.ReadKey();
                }

                return(1);
            }

            if (options.Wait)
            {
                Log.Message("Press any key to continue...");
                Console.ReadKey();
            }

            return(0);
        }
Exemple #6
0
 /// <summary>
 /// Gets relative to input directory path for to specified file
 /// </summary>
 /// <param name="fullPath"></param>
 /// <returns></returns>
 public static string GetRelativePath(string fullPath)
 {
     return(ContentUtils.MakeRelativePath(Builder.FullInputDirectory + @"\", fullPath));
 }