Пример #1
0
 private void OnBoneDatabaseBrowse(object sender, EventArgs e)
 {
     mBoneDatabasePathTextBox.Text =
         ModuleImportUtilities.SelectModuleImport <BoneDatabase>(
             "Select a bone database file. (bone_data.bin/bone_data.bon)",
             SelectedConfiguration?.BoneDatabaseFilePath) ?? mBoneDatabasePathTextBox.Text;
 }
Пример #2
0
 private void OnTextureDatabaseBrowse(object sender, EventArgs e)
 {
     mTextureDatabasePathTextBox.Text =
         ModuleImportUtilities.SelectModuleImport <TextureDatabase>(
             "Select a texture database file. (tex_db.bin)",
             SelectedConfiguration?.TextureDatabaseFilePath) ?? mTextureDatabasePathTextBox.Text;
 }
Пример #3
0
 private void OnObjectDatabaseBrowse(object sender, EventArgs e)
 {
     mObjectDatabasePathTextBox.Text =
         ModuleImportUtilities.SelectModuleImport <ObjectDatabase>(
             "Select an object database file. (obj_db.bin)",
             SelectedConfiguration?.ObjectDatabaseFilePath) ?? mObjectDatabasePathTextBox.Text;
 }
Пример #4
0
        private void OnCombineMotions(object sender, EventArgs e)
        {
            string filePath =
                ModuleImportUtilities.SelectModuleImport <Motion>("Select the root .mot file.");

            if (filePath == null)
            {
                return;
            }

            var configuration = ConfigurationList.Instance.FindConfiguration(filePath);

            if (configuration?.BoneDatabase == null)
            {
                MessageBox.Show("Could not find suitable configuration for the file.", Program.Name,
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                string baseFilePath = Path.ChangeExtension(filePath, null);

                string outputFilePath = ModuleExportUtilities.SelectModuleExport <Motion>(
                    "Select a file to export to.",
                    Path.GetFileName($"{baseFilePath}_combined.mot"));

                if (string.IsNullOrEmpty(outputFilePath))
                {
                    return;
                }

                var skeleton = configuration.BoneDatabase.Skeletons[0];

                var rootMotion = new Motion();
                {
                    rootMotion.Load(filePath, skeleton);
                }

                var rootController = rootMotion.Bind();
                for (int i = 1;; i++)
                {
                    string divFilePath = $"{baseFilePath}_div_{i}.mot";
                    if (!File.Exists(divFilePath))
                    {
                        break;
                    }

                    var divMotion = new Motion();
                    {
                        divMotion.Load(divFilePath, skeleton);
                    }

                    var divController = divMotion.Bind();
                    rootController.Merge(divController);
                }

                rootMotion.Save(outputFilePath, skeleton);
            }
        }
 private void OnMotionDatabaseBrowse(object sender, EventArgs e)
 {
     mMotionDatabasePathTextBox.Text =
         ModuleImportUtilities.SelectModuleImport(
             new[] { typeof(MotionDatabase), typeof(FarcArchive) },
             "Select a motion database file. (mot_db.bin/mot_db.farc)",
             SelectedConfiguration?.MotionDatabaseFilePath) ??
         mMotionDatabasePathTextBox.Text;
 }
Пример #6
0
        private Skin PrompImportExData()
        {
            string filePath =
                ModuleImportUtilities.SelectModuleImport(new[]
                                                         { typeof(FarcArchive), typeof(ObjectSet) });

            if (string.IsNullOrEmpty(filePath))
            {
                return(null);
            }

            ObjectSet objSet;

            if (filePath.EndsWith(".farc", StringComparison.OrdinalIgnoreCase))
            {
                objSet = BinaryFileNode <ObjectSet> .PromptFarcArchiveViewForm(filePath,
                                                                               "Select a file to replace with.",
                                                                               "This archive has no object set file.");
            }

            else
            {
                objSet = BinaryFile.Load <ObjectSet>(filePath);
            }

            if (objSet == null)
            {
                return(null);
            }

            if (objSet.Objects.Count == 0 || !objSet.Objects.Any(x => x.Skin != null && x.Skin.Blocks.Count > 0))
            {
                MessageBox.Show("This object set has no objects with ex data.", Program.Name, MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return(null);
            }

            if (objSet.Objects.Count == 1)
            {
                return(objSet.Objects[0].Skin);
            }

            using (var listNode = new ListNode <Object>("Objects", objSet.Objects, x => x.Name))
                using (var nodeSelectForm =
                           new NodeSelectForm <Object>(listNode, obj => obj.Skin != null && obj.Skin.Blocks.Count > 0))
                {
                    nodeSelectForm.Text = "Please select an object.";

                    if (nodeSelectForm.ShowDialog() == DialogResult.OK)
                    {
                        return((( Object )nodeSelectForm.TopNode.Data).Skin);
                    }
                }

            return(null);
        }