From 93f50e4bc02c25d17f6b6b6681577263bfb609ba Mon Sep 17 00:00:00 2001 From: Razmoth <12517189-Razmoth@users.noreply.gitlab.com> Date: Sun, 12 Mar 2023 18:25:37 +0400 Subject: [PATCH] Improvements --- AssetStudio/Classes/Mesh.cs | 8 - AssetStudioFBXWrapper/Fbx.cs | 4 +- AssetStudioFBXWrapper/FbxExporter.cs | 6 +- AssetStudioFBXWrapper/FbxExporterContext.cs | 44 +- AssetStudioGUI/ExportOptions.Designer.cs | 951 +++++++++--------- AssetStudioGUI/ExportOptions.cs | 2 + AssetStudioGUI/ExportOptions.resx | 62 +- AssetStudioGUI/Exporter.cs | 3 +- AssetStudioGUI/Libraries/x64/acl.dll | Bin 18944 -> 19456 bytes AssetStudioGUI/Libraries/x64/sracl.dll | Bin 16384 -> 16896 bytes AssetStudioGUI/Libraries/x86/acl.dll | Bin 86016 -> 89088 bytes AssetStudioGUI/Libraries/x86/sracl.dll | Bin 13824 -> 14336 bytes .../Properties/Settings.Designer.cs | 15 + AssetStudioGUI/Properties/Settings.settings | 3 + AssetStudioUtility/ACL/ACL.cs | 49 +- AssetStudioUtility/ModelExporter.cs | 4 +- 16 files changed, 582 insertions(+), 569 deletions(-) diff --git a/AssetStudio/Classes/Mesh.cs b/AssetStudio/Classes/Mesh.cs index 5666b74..cca903d 100644 --- a/AssetStudio/Classes/Mesh.cs +++ b/AssetStudio/Classes/Mesh.cs @@ -830,13 +830,9 @@ namespace AssetStudio m_UV1 = componentsFloatArray; break; case 6: //kShaderChannelTexCoord2 - if (reader.Game.Name == "GI" || reader.Game.Name == "GI_CB1" || reader.Game.Name == "GI_CB2" || reader.Game.Name == "GI_CB3") - continue; m_UV2 = componentsFloatArray; break; case 7: //kShaderChannelTexCoord3 - if (reader.Game.Name == "GI" || reader.Game.Name == "GI_CB1" || reader.Game.Name == "GI_CB2" || reader.Game.Name == "GI_CB3") - continue; m_UV3 = componentsFloatArray; break; case 8: //kShaderChannelTexCoord4 @@ -900,8 +896,6 @@ namespace AssetStudio m_UV1 = componentsFloatArray; break; case 5: - if (reader.Game.Name == "GI" || reader.Game.Name == "GI_CB1" || reader.Game.Name == "GI_CB2" || reader.Game.Name == "GI_CB3") - continue; if (version[0] >= 5) //kShaderChannelTexCoord2 { m_UV2 = componentsFloatArray; @@ -912,8 +906,6 @@ namespace AssetStudio } break; case 6: //kShaderChannelTexCoord3 - if (reader.Game.Name == "GI" || reader.Game.Name == "GI_CB1" || reader.Game.Name == "GI_CB2" || reader.Game.Name == "GI_CB3") - continue; m_UV3 = componentsFloatArray; break; case 7: //kShaderChannelTangent diff --git a/AssetStudioFBXWrapper/Fbx.cs b/AssetStudioFBXWrapper/Fbx.cs index 543706b..7fd9a82 100644 --- a/AssetStudioFBXWrapper/Fbx.cs +++ b/AssetStudioFBXWrapper/Fbx.cs @@ -28,7 +28,7 @@ namespace AssetStudio { public static void Export(string path, IImported imported, bool eulerFilter, float filterPrecision, - bool allNodes, bool skins, bool animation, bool blendShape, bool castToBone, float boneSize, bool exportAllUvsAsDiffuseMaps, float scaleFactor, int versionIndex, bool isAscii) + bool allNodes, bool skins, bool animation, bool blendShape, bool castToBone, float boneSize, bool exportAllUvsAsDiffuseMaps, bool exportUV0UV1, float scaleFactor, int versionIndex, bool isAscii) { var file = new FileInfo(path); var dir = file.Directory; @@ -43,7 +43,7 @@ namespace AssetStudio var name = Path.GetFileName(path); - using (var exporter = new FbxExporter(name, imported, allNodes, skins, castToBone, boneSize, exportAllUvsAsDiffuseMaps, scaleFactor, versionIndex, isAscii)) + using (var exporter = new FbxExporter(name, imported, allNodes, skins, castToBone, boneSize, exportAllUvsAsDiffuseMaps, exportUV0UV1, scaleFactor, versionIndex, isAscii)) { exporter.Initialize(); exporter.ExportAll(blendShape, animation, eulerFilter, filterPrecision); diff --git a/AssetStudioFBXWrapper/FbxExporter.cs b/AssetStudioFBXWrapper/FbxExporter.cs index b9e5ed6..d920daa 100644 --- a/AssetStudioFBXWrapper/FbxExporter.cs +++ b/AssetStudioFBXWrapper/FbxExporter.cs @@ -16,11 +16,12 @@ namespace AssetStudio.FbxInterop private readonly bool _castToBone; private readonly float _boneSize; private readonly bool _exportAllUvsAsDiffuseMaps; + private readonly bool _exportUV0UV1; private readonly float _scaleFactor; private readonly int _versionIndex; private readonly bool _isAscii; - internal FbxExporter(string fileName, IImported imported, bool allNodes, bool exportSkins, bool castToBone, float boneSize, bool exportAllUvsAsDiffuseMaps, float scaleFactor, int versionIndex, bool isAscii) + internal FbxExporter(string fileName, IImported imported, bool allNodes, bool exportSkins, bool castToBone, float boneSize, bool exportAllUvsAsDiffuseMaps, bool exportUV0UV1, float scaleFactor, int versionIndex, bool isAscii) { _context = new FbxExporterContext(); @@ -31,6 +32,7 @@ namespace AssetStudio.FbxInterop _castToBone = castToBone; _boneSize = boneSize; _exportAllUvsAsDiffuseMaps = exportAllUvsAsDiffuseMaps; + _exportUV0UV1 = exportUV0UV1; _scaleFactor = scaleFactor; _versionIndex = versionIndex; _isAscii = isAscii; @@ -173,7 +175,7 @@ namespace AssetStudio.FbxInterop { foreach (var meshFrame in meshFrames) { - _context.ExportMeshFromFrame(rootFrame, meshFrame, _imported.MeshList, _imported.MaterialList, _imported.TextureList, _exportSkins, _exportAllUvsAsDiffuseMaps); + _context.ExportMeshFromFrame(rootFrame, meshFrame, _imported.MeshList, _imported.MaterialList, _imported.TextureList, _exportSkins, _exportAllUvsAsDiffuseMaps, _exportUV0UV1); } } diff --git a/AssetStudioFBXWrapper/FbxExporterContext.cs b/AssetStudioFBXWrapper/FbxExporterContext.cs index 6c4ed7c..9da9744 100644 --- a/AssetStudioFBXWrapper/FbxExporterContext.cs +++ b/AssetStudioFBXWrapper/FbxExporterContext.cs @@ -173,12 +173,12 @@ namespace AssetStudio.FbxInterop AsFbxPrepareMaterials(_pContext, materialCount, textureCount); } - internal void ExportMeshFromFrame(ImportedFrame rootFrame, ImportedFrame meshFrame, List meshList, List materialList, List textureList, bool exportSkins, bool exportAllUvsAsDiffuseMaps) + internal void ExportMeshFromFrame(ImportedFrame rootFrame, ImportedFrame meshFrame, List meshList, List materialList, List textureList, bool exportSkins, bool exportAllUvsAsDiffuseMaps, bool exportUV0UV1) { var meshNode = _frameToNode[meshFrame]; var mesh = ImportedHelpers.FindMesh(meshFrame.Path, meshList); - ExportMesh(rootFrame, materialList, textureList, meshNode, mesh, exportSkins, exportAllUvsAsDiffuseMaps); + ExportMesh(rootFrame, materialList, textureList, meshNode, mesh, exportSkins, exportAllUvsAsDiffuseMaps, exportUV0UV1); } private IntPtr ExportTexture(ImportedTexture texture) @@ -207,7 +207,7 @@ namespace AssetStudio.FbxInterop return pTex; } - private void ExportMesh(ImportedFrame rootFrame, List materialList, List textureList, IntPtr frameNode, ImportedMesh importedMesh, bool exportSkins, bool exportAllUvsAsDiffuseMaps) + private void ExportMesh(ImportedFrame rootFrame, List materialList, List textureList, IntPtr frameNode, ImportedMesh importedMesh, bool exportSkins, bool exportAllUvsAsDiffuseMaps, bool exportUV0UV1) { var boneList = importedMesh.BoneList; var totalBoneCount = 0; @@ -253,17 +253,38 @@ namespace AssetStudio.FbxInterop AsFbxMeshCreateElementNormal(mesh); } - for (int i = 0; i < importedMesh.hasUV.Length; i++) + if (exportUV0UV1) { - if (!importedMesh.hasUV[i]) { continue; } - - if (i == 1 && !exportAllUvsAsDiffuseMaps) + if (importedMesh.hasUV[0]) { - AsFbxMeshCreateNormalMapUV(mesh, 1); + AsFbxMeshCreateDiffuseUV(mesh, 0); } - else + if (importedMesh.hasUV[1]) { - AsFbxMeshCreateDiffuseUV(mesh, i); + if (exportAllUvsAsDiffuseMaps) + { + AsFbxMeshCreateDiffuseUV(mesh, 1); + } + else + { + AsFbxMeshCreateNormalMapUV(mesh, 1); + } + } + } + else + { + for (int i = 0; i < importedMesh.hasUV.Length; i++) + { + if (!importedMesh.hasUV[i]) { continue; } + + if (i == 1 && !exportAllUvsAsDiffuseMaps) + { + AsFbxMeshCreateNormalMapUV(mesh, 1); + } + else + { + AsFbxMeshCreateDiffuseUV(mesh, i); + } } } @@ -367,7 +388,8 @@ namespace AssetStudio.FbxInterop AsFbxMeshElementNormalAdd(mesh, 0, normal.X, normal.Y, normal.Z); } - for (var uvIndex = 0; uvIndex < importedMesh.hasUV.Length; uvIndex += 1) + var uvSize = exportUV0UV1 ? 2 : importedMesh.hasUV.Length; + for (var uvIndex = 0; uvIndex < uvSize; uvIndex += 1) { if (importedMesh.hasUV[uvIndex]) { diff --git a/AssetStudioGUI/ExportOptions.Designer.cs b/AssetStudioGUI/ExportOptions.Designer.cs index 62fd8dc..95d3d71 100644 --- a/AssetStudioGUI/ExportOptions.Designer.cs +++ b/AssetStudioGUI/ExportOptions.Designer.cs @@ -28,596 +28,618 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.OKbutton = new System.Windows.Forms.Button(); - this.Cancel = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.disableShader = new System.Windows.Forms.CheckBox(); - this.ignoreController = new System.Windows.Forms.CheckBox(); - this.disableRndrr = new System.Windows.Forms.CheckBox(); - this.exportIndexObject = new System.Windows.Forms.CheckBox(); - this.exportAssetBundle = new System.Windows.Forms.CheckBox(); - this.openAfterExport = new System.Windows.Forms.CheckBox(); - this.restoreExtensionName = new System.Windows.Forms.CheckBox(); - this.assetGroupOptions = new System.Windows.Forms.ComboBox(); - this.label6 = new System.Windows.Forms.Label(); - this.convertAudio = new System.Windows.Forms.CheckBox(); - this.panel1 = new System.Windows.Forms.Panel(); - this.totga = new System.Windows.Forms.RadioButton(); - this.tojpg = new System.Windows.Forms.RadioButton(); - this.topng = new System.Windows.Forms.RadioButton(); - this.tobmp = new System.Windows.Forms.RadioButton(); - this.converttexture = new System.Windows.Forms.CheckBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.exportAllUvsAsDiffuseMaps = new System.Windows.Forms.CheckBox(); - this.exportBlendShape = new System.Windows.Forms.CheckBox(); - this.exportAnimations = new System.Windows.Forms.CheckBox(); - this.scaleFactor = new System.Windows.Forms.NumericUpDown(); - this.label5 = new System.Windows.Forms.Label(); - this.fbxFormat = new System.Windows.Forms.ComboBox(); - this.label4 = new System.Windows.Forms.Label(); - this.fbxVersion = new System.Windows.Forms.ComboBox(); - this.label3 = new System.Windows.Forms.Label(); - this.boneSize = new System.Windows.Forms.NumericUpDown(); - this.label2 = new System.Windows.Forms.Label(); - this.exportSkins = new System.Windows.Forms.CheckBox(); - this.label1 = new System.Windows.Forms.Label(); - this.filterPrecision = new System.Windows.Forms.NumericUpDown(); - this.castToBone = new System.Windows.Forms.CheckBox(); - this.exportAllNodes = new System.Windows.Forms.CheckBox(); - this.eulerFilter = new System.Windows.Forms.CheckBox(); - this.exportUvsTooltip = new System.Windows.Forms.ToolTip(this.components); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.enableXor = new System.Windows.Forms.CheckBox(); - this.key = new System.Windows.Forms.NumericUpDown(); - this.label7 = new System.Windows.Forms.Label(); - this.groupBox1.SuspendLayout(); - this.panel1.SuspendLayout(); - this.groupBox2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.scaleFactor)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.boneSize)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.filterPrecision)).BeginInit(); - this.groupBox3.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.key)).BeginInit(); - this.SuspendLayout(); + components = new System.ComponentModel.Container(); + OKbutton = new System.Windows.Forms.Button(); + Cancel = new System.Windows.Forms.Button(); + groupBox1 = new System.Windows.Forms.GroupBox(); + disableShader = new System.Windows.Forms.CheckBox(); + ignoreController = new System.Windows.Forms.CheckBox(); + disableRndrr = new System.Windows.Forms.CheckBox(); + exportIndexObject = new System.Windows.Forms.CheckBox(); + exportAssetBundle = new System.Windows.Forms.CheckBox(); + openAfterExport = new System.Windows.Forms.CheckBox(); + restoreExtensionName = new System.Windows.Forms.CheckBox(); + assetGroupOptions = new System.Windows.Forms.ComboBox(); + label6 = new System.Windows.Forms.Label(); + convertAudio = new System.Windows.Forms.CheckBox(); + panel1 = new System.Windows.Forms.Panel(); + totga = new System.Windows.Forms.RadioButton(); + tojpg = new System.Windows.Forms.RadioButton(); + topng = new System.Windows.Forms.RadioButton(); + tobmp = new System.Windows.Forms.RadioButton(); + converttexture = new System.Windows.Forms.CheckBox(); + groupBox2 = new System.Windows.Forms.GroupBox(); + exportUV0UV1 = new System.Windows.Forms.CheckBox(); + exportAllUvsAsDiffuseMaps = new System.Windows.Forms.CheckBox(); + exportBlendShape = new System.Windows.Forms.CheckBox(); + exportAnimations = new System.Windows.Forms.CheckBox(); + scaleFactor = new System.Windows.Forms.NumericUpDown(); + label5 = new System.Windows.Forms.Label(); + fbxFormat = new System.Windows.Forms.ComboBox(); + label4 = new System.Windows.Forms.Label(); + fbxVersion = new System.Windows.Forms.ComboBox(); + label3 = new System.Windows.Forms.Label(); + boneSize = new System.Windows.Forms.NumericUpDown(); + label2 = new System.Windows.Forms.Label(); + exportSkins = new System.Windows.Forms.CheckBox(); + label1 = new System.Windows.Forms.Label(); + filterPrecision = new System.Windows.Forms.NumericUpDown(); + castToBone = new System.Windows.Forms.CheckBox(); + exportAllNodes = new System.Windows.Forms.CheckBox(); + eulerFilter = new System.Windows.Forms.CheckBox(); + exportUvsTooltip = new System.Windows.Forms.ToolTip(components); + groupBox3 = new System.Windows.Forms.GroupBox(); + enableXor = new System.Windows.Forms.CheckBox(); + key = new System.Windows.Forms.NumericUpDown(); + label7 = new System.Windows.Forms.Label(); + groupBox1.SuspendLayout(); + panel1.SuspendLayout(); + groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)scaleFactor).BeginInit(); + ((System.ComponentModel.ISupportInitialize)boneSize).BeginInit(); + ((System.ComponentModel.ISupportInitialize)filterPrecision).BeginInit(); + groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)key).BeginInit(); + SuspendLayout(); // // OKbutton // - this.OKbutton.Location = new System.Drawing.Point(318, 380); - this.OKbutton.Name = "OKbutton"; - this.OKbutton.Size = new System.Drawing.Size(75, 23); - this.OKbutton.TabIndex = 6; - this.OKbutton.Text = "OK"; - this.OKbutton.UseVisualStyleBackColor = true; - this.OKbutton.Click += new System.EventHandler(this.OKbutton_Click); + OKbutton.Location = new System.Drawing.Point(371, 438); + OKbutton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + OKbutton.Name = "OKbutton"; + OKbutton.Size = new System.Drawing.Size(88, 27); + OKbutton.TabIndex = 6; + OKbutton.Text = "OK"; + OKbutton.UseVisualStyleBackColor = true; + OKbutton.Click += OKbutton_Click; // // Cancel // - this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.Cancel.Location = new System.Drawing.Point(399, 380); - this.Cancel.Name = "Cancel"; - this.Cancel.Size = new System.Drawing.Size(75, 23); - this.Cancel.TabIndex = 7; - this.Cancel.Text = "Cancel"; - this.Cancel.UseVisualStyleBackColor = true; - this.Cancel.Click += new System.EventHandler(this.Cancel_Click); + Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + Cancel.Location = new System.Drawing.Point(465, 438); + Cancel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + Cancel.Name = "Cancel"; + Cancel.Size = new System.Drawing.Size(88, 27); + Cancel.TabIndex = 7; + Cancel.Text = "Cancel"; + Cancel.UseVisualStyleBackColor = true; + Cancel.Click += Cancel_Click; // // groupBox1 // - this.groupBox1.AutoSize = true; - this.groupBox1.Controls.Add(this.disableShader); - this.groupBox1.Controls.Add(this.ignoreController); - this.groupBox1.Controls.Add(this.disableRndrr); - this.groupBox1.Controls.Add(this.exportIndexObject); - this.groupBox1.Controls.Add(this.exportAssetBundle); - this.groupBox1.Controls.Add(this.openAfterExport); - this.groupBox1.Controls.Add(this.restoreExtensionName); - this.groupBox1.Controls.Add(this.assetGroupOptions); - this.groupBox1.Controls.Add(this.label6); - this.groupBox1.Controls.Add(this.convertAudio); - this.groupBox1.Controls.Add(this.panel1); - this.groupBox1.Controls.Add(this.converttexture); - this.groupBox1.Location = new System.Drawing.Point(12, 13); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(232, 277); - this.groupBox1.TabIndex = 9; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Export"; + groupBox1.AutoSize = true; + groupBox1.Controls.Add(disableShader); + groupBox1.Controls.Add(ignoreController); + groupBox1.Controls.Add(disableRndrr); + groupBox1.Controls.Add(exportIndexObject); + groupBox1.Controls.Add(exportAssetBundle); + groupBox1.Controls.Add(openAfterExport); + groupBox1.Controls.Add(restoreExtensionName); + groupBox1.Controls.Add(assetGroupOptions); + groupBox1.Controls.Add(label6); + groupBox1.Controls.Add(convertAudio); + groupBox1.Controls.Add(panel1); + groupBox1.Controls.Add(converttexture); + groupBox1.Location = new System.Drawing.Point(14, 15); + groupBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBox1.Name = "groupBox1"; + groupBox1.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBox1.Size = new System.Drawing.Size(271, 320); + groupBox1.TabIndex = 9; + groupBox1.TabStop = false; + groupBox1.Text = "Export"; // // disableShader // - this.disableShader.AutoSize = true; - this.disableShader.Location = new System.Drawing.Point(97, 219); - this.disableShader.Name = "disableShader"; - this.disableShader.Size = new System.Drawing.Size(98, 17); - this.disableShader.TabIndex = 22; - this.disableShader.Text = "Disable Shader"; - this.disableShader.UseVisualStyleBackColor = true; + disableShader.AutoSize = true; + disableShader.Location = new System.Drawing.Point(113, 253); + disableShader.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + disableShader.Name = "disableShader"; + disableShader.Size = new System.Drawing.Size(103, 19); + disableShader.TabIndex = 22; + disableShader.Text = "Disable Shader"; + disableShader.UseVisualStyleBackColor = true; // // ignoreController // - this.ignoreController.AutoSize = true; - this.ignoreController.Checked = true; - this.ignoreController.CheckState = System.Windows.Forms.CheckState.Checked; - this.ignoreController.Location = new System.Drawing.Point(6, 241); - this.ignoreController.Name = "ignoreController"; - this.ignoreController.Size = new System.Drawing.Size(152, 17); - this.ignoreController.TabIndex = 21; - this.ignoreController.Text = "Ignore Controller Animation"; - this.ignoreController.UseVisualStyleBackColor = true; + ignoreController.AutoSize = true; + ignoreController.Checked = true; + ignoreController.CheckState = System.Windows.Forms.CheckState.Checked; + ignoreController.Location = new System.Drawing.Point(7, 278); + ignoreController.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + ignoreController.Name = "ignoreController"; + ignoreController.Size = new System.Drawing.Size(175, 19); + ignoreController.TabIndex = 21; + ignoreController.Text = "Ignore Controller Animation"; + ignoreController.UseVisualStyleBackColor = true; // // disableRndrr // - this.disableRndrr.AutoSize = true; - this.disableRndrr.Location = new System.Drawing.Point(97, 196); - this.disableRndrr.Name = "disableRndrr"; - this.disableRndrr.Size = new System.Drawing.Size(113, 17); - this.disableRndrr.TabIndex = 13; - this.disableRndrr.Text = "Disable Renderers"; - this.disableRndrr.UseVisualStyleBackColor = true; + disableRndrr.AutoSize = true; + disableRndrr.Location = new System.Drawing.Point(113, 226); + disableRndrr.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + disableRndrr.Name = "disableRndrr"; + disableRndrr.Size = new System.Drawing.Size(119, 19); + disableRndrr.TabIndex = 13; + disableRndrr.Text = "Disable Renderers"; + disableRndrr.UseVisualStyleBackColor = true; // // exportIndexObject // - this.exportIndexObject.AutoSize = true; - this.exportIndexObject.Checked = true; - this.exportIndexObject.CheckState = System.Windows.Forms.CheckState.Checked; - this.exportIndexObject.Location = new System.Drawing.Point(6, 219); - this.exportIndexObject.Name = "exportIndexObject"; - this.exportIndexObject.Size = new System.Drawing.Size(83, 17); - this.exportIndexObject.TabIndex = 12; - this.exportIndexObject.Text = "IndexObject"; - this.exportIndexObject.UseVisualStyleBackColor = true; + exportIndexObject.AutoSize = true; + exportIndexObject.Checked = true; + exportIndexObject.CheckState = System.Windows.Forms.CheckState.Checked; + exportIndexObject.Location = new System.Drawing.Point(7, 253); + exportIndexObject.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportIndexObject.Name = "exportIndexObject"; + exportIndexObject.Size = new System.Drawing.Size(90, 19); + exportIndexObject.TabIndex = 12; + exportIndexObject.Text = "IndexObject"; + exportIndexObject.UseVisualStyleBackColor = true; // // exportAssetBundle // - this.exportAssetBundle.AutoSize = true; - this.exportAssetBundle.Checked = true; - this.exportAssetBundle.CheckState = System.Windows.Forms.CheckState.Checked; - this.exportAssetBundle.Location = new System.Drawing.Point(6, 196); - this.exportAssetBundle.Name = "exportAssetBundle"; - this.exportAssetBundle.Size = new System.Drawing.Size(85, 17); - this.exportAssetBundle.TabIndex = 11; - this.exportAssetBundle.Text = "AssetBundle"; - this.exportAssetBundle.UseVisualStyleBackColor = true; + exportAssetBundle.AutoSize = true; + exportAssetBundle.Checked = true; + exportAssetBundle.CheckState = System.Windows.Forms.CheckState.Checked; + exportAssetBundle.Location = new System.Drawing.Point(7, 226); + exportAssetBundle.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportAssetBundle.Name = "exportAssetBundle"; + exportAssetBundle.Size = new System.Drawing.Size(91, 19); + exportAssetBundle.TabIndex = 11; + exportAssetBundle.Text = "AssetBundle"; + exportAssetBundle.UseVisualStyleBackColor = true; // // openAfterExport // - this.openAfterExport.AutoSize = true; - this.openAfterExport.Checked = true; - this.openAfterExport.CheckState = System.Windows.Forms.CheckState.Checked; - this.openAfterExport.Location = new System.Drawing.Point(6, 173); - this.openAfterExport.Name = "openAfterExport"; - this.openAfterExport.Size = new System.Drawing.Size(137, 17); - this.openAfterExport.TabIndex = 10; - this.openAfterExport.Text = "Open folder after export"; - this.openAfterExport.UseVisualStyleBackColor = true; + openAfterExport.AutoSize = true; + openAfterExport.Checked = true; + openAfterExport.CheckState = System.Windows.Forms.CheckState.Checked; + openAfterExport.Location = new System.Drawing.Point(7, 200); + openAfterExport.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + openAfterExport.Name = "openAfterExport"; + openAfterExport.Size = new System.Drawing.Size(153, 19); + openAfterExport.TabIndex = 10; + openAfterExport.Text = "Open folder after export"; + openAfterExport.UseVisualStyleBackColor = true; // // restoreExtensionName // - this.restoreExtensionName.AutoSize = true; - this.restoreExtensionName.Checked = true; - this.restoreExtensionName.CheckState = System.Windows.Forms.CheckState.Checked; - this.restoreExtensionName.Location = new System.Drawing.Point(6, 63); - this.restoreExtensionName.Name = "restoreExtensionName"; - this.restoreExtensionName.Size = new System.Drawing.Size(190, 17); - this.restoreExtensionName.TabIndex = 9; - this.restoreExtensionName.Text = "Restore TextAsset extension name"; - this.restoreExtensionName.UseVisualStyleBackColor = true; + restoreExtensionName.AutoSize = true; + restoreExtensionName.Checked = true; + restoreExtensionName.CheckState = System.Windows.Forms.CheckState.Checked; + restoreExtensionName.Location = new System.Drawing.Point(7, 73); + restoreExtensionName.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + restoreExtensionName.Name = "restoreExtensionName"; + restoreExtensionName.Size = new System.Drawing.Size(204, 19); + restoreExtensionName.TabIndex = 9; + restoreExtensionName.Text = "Restore TextAsset extension name"; + restoreExtensionName.UseVisualStyleBackColor = true; // // assetGroupOptions // - this.assetGroupOptions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.assetGroupOptions.FormattingEnabled = true; - this.assetGroupOptions.Items.AddRange(new object[] { - "type name", - "container path", - "source file name", - "do not group"}); - this.assetGroupOptions.Location = new System.Drawing.Point(6, 35); - this.assetGroupOptions.Name = "assetGroupOptions"; - this.assetGroupOptions.Size = new System.Drawing.Size(149, 21); - this.assetGroupOptions.TabIndex = 8; + assetGroupOptions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + assetGroupOptions.FormattingEnabled = true; + assetGroupOptions.Items.AddRange(new object[] { "type name", "container path", "source file name", "do not group" }); + assetGroupOptions.Location = new System.Drawing.Point(7, 40); + assetGroupOptions.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + assetGroupOptions.Name = "assetGroupOptions"; + assetGroupOptions.Size = new System.Drawing.Size(173, 23); + assetGroupOptions.TabIndex = 8; // // label6 // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(6, 18); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(127, 13); - this.label6.TabIndex = 7; - this.label6.Text = "Group exported assets by"; + label6.AutoSize = true; + label6.Location = new System.Drawing.Point(7, 21); + label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(140, 15); + label6.TabIndex = 7; + label6.Text = "Group exported assets by"; // // convertAudio // - this.convertAudio.AutoSize = true; - this.convertAudio.Checked = true; - this.convertAudio.CheckState = System.Windows.Forms.CheckState.Checked; - this.convertAudio.Location = new System.Drawing.Point(6, 150); - this.convertAudio.Name = "convertAudio"; - this.convertAudio.Size = new System.Drawing.Size(179, 17); - this.convertAudio.TabIndex = 6; - this.convertAudio.Text = "Convert AudioClip to WAV(PCM)"; - this.convertAudio.UseVisualStyleBackColor = true; + convertAudio.AutoSize = true; + convertAudio.Checked = true; + convertAudio.CheckState = System.Windows.Forms.CheckState.Checked; + convertAudio.Location = new System.Drawing.Point(7, 173); + convertAudio.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + convertAudio.Name = "convertAudio"; + convertAudio.Size = new System.Drawing.Size(200, 19); + convertAudio.TabIndex = 6; + convertAudio.Text = "Convert AudioClip to WAV(PCM)"; + convertAudio.UseVisualStyleBackColor = true; // // panel1 // - this.panel1.Controls.Add(this.totga); - this.panel1.Controls.Add(this.tojpg); - this.panel1.Controls.Add(this.topng); - this.panel1.Controls.Add(this.tobmp); - this.panel1.Location = new System.Drawing.Point(20, 111); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(202, 32); - this.panel1.TabIndex = 5; + panel1.Controls.Add(totga); + panel1.Controls.Add(tojpg); + panel1.Controls.Add(topng); + panel1.Controls.Add(tobmp); + panel1.Location = new System.Drawing.Point(23, 128); + panel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panel1.Name = "panel1"; + panel1.Size = new System.Drawing.Size(236, 37); + panel1.TabIndex = 5; // // totga // - this.totga.AutoSize = true; - this.totga.Location = new System.Drawing.Point(150, 6); - this.totga.Name = "totga"; - this.totga.Size = new System.Drawing.Size(44, 17); - this.totga.TabIndex = 2; - this.totga.Text = "Tga"; - this.totga.UseVisualStyleBackColor = true; + totga.AutoSize = true; + totga.Location = new System.Drawing.Point(175, 7); + totga.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + totga.Name = "totga"; + totga.Size = new System.Drawing.Size(43, 19); + totga.TabIndex = 2; + totga.Text = "Tga"; + totga.UseVisualStyleBackColor = true; // // tojpg // - this.tojpg.AutoSize = true; - this.tojpg.Location = new System.Drawing.Point(97, 6); - this.tojpg.Name = "tojpg"; - this.tojpg.Size = new System.Drawing.Size(48, 17); - this.tojpg.TabIndex = 4; - this.tojpg.Text = "Jpeg"; - this.tojpg.UseVisualStyleBackColor = true; + tojpg.AutoSize = true; + tojpg.Location = new System.Drawing.Point(113, 7); + tojpg.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + tojpg.Name = "tojpg"; + tojpg.Size = new System.Drawing.Size(49, 19); + tojpg.TabIndex = 4; + tojpg.Text = "Jpeg"; + tojpg.UseVisualStyleBackColor = true; // // topng // - this.topng.AutoSize = true; - this.topng.Checked = true; - this.topng.Location = new System.Drawing.Point(50, 6); - this.topng.Name = "topng"; - this.topng.Size = new System.Drawing.Size(44, 17); - this.topng.TabIndex = 3; - this.topng.TabStop = true; - this.topng.Text = "Png"; - this.topng.UseVisualStyleBackColor = true; + topng.AutoSize = true; + topng.Checked = true; + topng.Location = new System.Drawing.Point(58, 7); + topng.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + topng.Name = "topng"; + topng.Size = new System.Drawing.Size(46, 19); + topng.TabIndex = 3; + topng.TabStop = true; + topng.Text = "Png"; + topng.UseVisualStyleBackColor = true; // // tobmp // - this.tobmp.AutoSize = true; - this.tobmp.Location = new System.Drawing.Point(3, 6); - this.tobmp.Name = "tobmp"; - this.tobmp.Size = new System.Drawing.Size(46, 17); - this.tobmp.TabIndex = 2; - this.tobmp.Text = "Bmp"; - this.tobmp.UseVisualStyleBackColor = true; + tobmp.AutoSize = true; + tobmp.Location = new System.Drawing.Point(4, 7); + tobmp.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + tobmp.Name = "tobmp"; + tobmp.Size = new System.Drawing.Size(50, 19); + tobmp.TabIndex = 2; + tobmp.Text = "Bmp"; + tobmp.UseVisualStyleBackColor = true; // // converttexture // - this.converttexture.AutoSize = true; - this.converttexture.Checked = true; - this.converttexture.CheckState = System.Windows.Forms.CheckState.Checked; - this.converttexture.Location = new System.Drawing.Point(6, 87); - this.converttexture.Name = "converttexture"; - this.converttexture.Size = new System.Drawing.Size(116, 17); - this.converttexture.TabIndex = 1; - this.converttexture.Text = "Convert Texture2D"; - this.converttexture.UseVisualStyleBackColor = true; + converttexture.AutoSize = true; + converttexture.Checked = true; + converttexture.CheckState = System.Windows.Forms.CheckState.Checked; + converttexture.Location = new System.Drawing.Point(7, 100); + converttexture.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + converttexture.Name = "converttexture"; + converttexture.Size = new System.Drawing.Size(123, 19); + converttexture.TabIndex = 1; + converttexture.Text = "Convert Texture2D"; + converttexture.UseVisualStyleBackColor = true; // // groupBox2 // - this.groupBox2.AutoSize = true; - this.groupBox2.Controls.Add(this.exportAllUvsAsDiffuseMaps); - this.groupBox2.Controls.Add(this.exportBlendShape); - this.groupBox2.Controls.Add(this.exportAnimations); - this.groupBox2.Controls.Add(this.scaleFactor); - this.groupBox2.Controls.Add(this.label5); - this.groupBox2.Controls.Add(this.fbxFormat); - this.groupBox2.Controls.Add(this.label4); - this.groupBox2.Controls.Add(this.fbxVersion); - this.groupBox2.Controls.Add(this.label3); - this.groupBox2.Controls.Add(this.boneSize); - this.groupBox2.Controls.Add(this.label2); - this.groupBox2.Controls.Add(this.exportSkins); - this.groupBox2.Controls.Add(this.label1); - this.groupBox2.Controls.Add(this.filterPrecision); - this.groupBox2.Controls.Add(this.castToBone); - this.groupBox2.Controls.Add(this.exportAllNodes); - this.groupBox2.Controls.Add(this.eulerFilter); - this.groupBox2.Location = new System.Drawing.Point(250, 13); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(224, 362); - this.groupBox2.TabIndex = 11; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Fbx"; + groupBox2.AutoSize = true; + groupBox2.Controls.Add(exportUV0UV1); + groupBox2.Controls.Add(exportAllUvsAsDiffuseMaps); + groupBox2.Controls.Add(exportBlendShape); + groupBox2.Controls.Add(exportAnimations); + groupBox2.Controls.Add(scaleFactor); + groupBox2.Controls.Add(label5); + groupBox2.Controls.Add(fbxFormat); + groupBox2.Controls.Add(label4); + groupBox2.Controls.Add(fbxVersion); + groupBox2.Controls.Add(label3); + groupBox2.Controls.Add(boneSize); + groupBox2.Controls.Add(label2); + groupBox2.Controls.Add(exportSkins); + groupBox2.Controls.Add(label1); + groupBox2.Controls.Add(filterPrecision); + groupBox2.Controls.Add(castToBone); + groupBox2.Controls.Add(exportAllNodes); + groupBox2.Controls.Add(eulerFilter); + groupBox2.Location = new System.Drawing.Point(292, 15); + groupBox2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBox2.Name = "groupBox2"; + groupBox2.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBox2.Size = new System.Drawing.Size(261, 418); + groupBox2.TabIndex = 11; + groupBox2.TabStop = false; + groupBox2.Text = "Fbx"; + // + // exportUV0UV1 + // + exportUV0UV1.AccessibleDescription = ""; + exportUV0UV1.AutoSize = true; + exportUV0UV1.Location = new System.Drawing.Point(7, 238); + exportUV0UV1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportUV0UV1.Name = "exportUV0UV1"; + exportUV0UV1.Size = new System.Drawing.Size(124, 19); + exportUV0UV1.TabIndex = 24; + exportUV0UV1.Text = "Export UV 0/1 only"; + exportUvsTooltip.SetToolTip(exportUV0UV1, "Unchecked: Export UV0/UV1 only. Check this if your facing issues with vertex color/tangent."); + exportUV0UV1.UseVisualStyleBackColor = true; // // exportAllUvsAsDiffuseMaps // - this.exportAllUvsAsDiffuseMaps.AccessibleDescription = ""; - this.exportAllUvsAsDiffuseMaps.AutoSize = true; - this.exportAllUvsAsDiffuseMaps.Location = new System.Drawing.Point(6, 185); - this.exportAllUvsAsDiffuseMaps.Name = "exportAllUvsAsDiffuseMaps"; - this.exportAllUvsAsDiffuseMaps.Size = new System.Drawing.Size(168, 17); - this.exportAllUvsAsDiffuseMaps.TabIndex = 23; - this.exportAllUvsAsDiffuseMaps.Text = "Export all UVs as diffuse maps"; - this.exportUvsTooltip.SetToolTip(this.exportAllUvsAsDiffuseMaps, "Unchecked: UV1 exported as normal map. Check this if your export is missing a UV " + - "map."); - this.exportAllUvsAsDiffuseMaps.UseVisualStyleBackColor = true; + exportAllUvsAsDiffuseMaps.AccessibleDescription = ""; + exportAllUvsAsDiffuseMaps.AutoSize = true; + exportAllUvsAsDiffuseMaps.Location = new System.Drawing.Point(7, 213); + exportAllUvsAsDiffuseMaps.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportAllUvsAsDiffuseMaps.Name = "exportAllUvsAsDiffuseMaps"; + exportAllUvsAsDiffuseMaps.Size = new System.Drawing.Size(183, 19); + exportAllUvsAsDiffuseMaps.TabIndex = 23; + exportAllUvsAsDiffuseMaps.Text = "Export all UVs as diffuse maps"; + exportUvsTooltip.SetToolTip(exportAllUvsAsDiffuseMaps, "Unchecked: UV1 exported as normal map. Check this if your export is missing a UV map."); + exportAllUvsAsDiffuseMaps.UseVisualStyleBackColor = true; // // exportBlendShape // - this.exportBlendShape.AutoSize = true; - this.exportBlendShape.Checked = true; - this.exportBlendShape.CheckState = System.Windows.Forms.CheckState.Checked; - this.exportBlendShape.Location = new System.Drawing.Point(6, 138); - this.exportBlendShape.Name = "exportBlendShape"; - this.exportBlendShape.Size = new System.Drawing.Size(114, 17); - this.exportBlendShape.TabIndex = 22; - this.exportBlendShape.Text = "Export blendshape"; - this.exportBlendShape.UseVisualStyleBackColor = true; + exportBlendShape.AutoSize = true; + exportBlendShape.Checked = true; + exportBlendShape.CheckState = System.Windows.Forms.CheckState.Checked; + exportBlendShape.Location = new System.Drawing.Point(7, 159); + exportBlendShape.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportBlendShape.Name = "exportBlendShape"; + exportBlendShape.Size = new System.Drawing.Size(124, 19); + exportBlendShape.TabIndex = 22; + exportBlendShape.Text = "Export blendshape"; + exportBlendShape.UseVisualStyleBackColor = true; // // exportAnimations // - this.exportAnimations.AutoSize = true; - this.exportAnimations.Checked = true; - this.exportAnimations.CheckState = System.Windows.Forms.CheckState.Checked; - this.exportAnimations.Location = new System.Drawing.Point(6, 114); - this.exportAnimations.Name = "exportAnimations"; - this.exportAnimations.Size = new System.Drawing.Size(109, 17); - this.exportAnimations.TabIndex = 21; - this.exportAnimations.Text = "Export animations"; - this.exportAnimations.UseVisualStyleBackColor = true; + exportAnimations.AutoSize = true; + exportAnimations.Checked = true; + exportAnimations.CheckState = System.Windows.Forms.CheckState.Checked; + exportAnimations.Location = new System.Drawing.Point(7, 132); + exportAnimations.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportAnimations.Name = "exportAnimations"; + exportAnimations.Size = new System.Drawing.Size(122, 19); + exportAnimations.TabIndex = 21; + exportAnimations.Text = "Export animations"; + exportAnimations.UseVisualStyleBackColor = true; // // scaleFactor // - this.scaleFactor.DecimalPlaces = 2; - this.scaleFactor.Increment = new decimal(new int[] { - 1, - 0, - 0, - 131072}); - this.scaleFactor.Location = new System.Drawing.Point(83, 243); - this.scaleFactor.Name = "scaleFactor"; - this.scaleFactor.Size = new System.Drawing.Size(60, 20); - this.scaleFactor.TabIndex = 20; - this.scaleFactor.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.scaleFactor.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); + scaleFactor.DecimalPlaces = 2; + scaleFactor.Increment = new decimal(new int[] { 1, 0, 0, 131072 }); + scaleFactor.Location = new System.Drawing.Point(97, 297); + scaleFactor.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + scaleFactor.Name = "scaleFactor"; + scaleFactor.Size = new System.Drawing.Size(70, 23); + scaleFactor.TabIndex = 20; + scaleFactor.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + scaleFactor.Value = new decimal(new int[] { 1, 0, 0, 0 }); // // label5 // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(6, 245); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(64, 13); - this.label5.TabIndex = 19; - this.label5.Text = "ScaleFactor"; + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(7, 300); + label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(67, 15); + label5.TabIndex = 19; + label5.Text = "ScaleFactor"; // // fbxFormat // - this.fbxFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.fbxFormat.FormattingEnabled = true; - this.fbxFormat.Items.AddRange(new object[] { - "Binary", - "Ascii"}); - this.fbxFormat.Location = new System.Drawing.Point(77, 275); - this.fbxFormat.Name = "fbxFormat"; - this.fbxFormat.Size = new System.Drawing.Size(61, 21); - this.fbxFormat.TabIndex = 18; + fbxFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + fbxFormat.FormattingEnabled = true; + fbxFormat.Items.AddRange(new object[] { "Binary", "Ascii" }); + fbxFormat.Location = new System.Drawing.Point(90, 334); + fbxFormat.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + fbxFormat.Name = "fbxFormat"; + fbxFormat.Size = new System.Drawing.Size(70, 23); + fbxFormat.TabIndex = 18; // // label4 // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(6, 280); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(59, 13); - this.label4.TabIndex = 17; - this.label4.Text = "FBXFormat"; + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(7, 340); + label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(65, 15); + label4.TabIndex = 17; + label4.Text = "FBXFormat"; // // fbxVersion // - this.fbxVersion.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.fbxVersion.FormattingEnabled = true; - this.fbxVersion.Items.AddRange(new object[] { - "6.1", - "7.1", - "7.2", - "7.3", - "7.4", - "7.5"}); - this.fbxVersion.Location = new System.Drawing.Point(77, 308); - this.fbxVersion.Name = "fbxVersion"; - this.fbxVersion.Size = new System.Drawing.Size(47, 21); - this.fbxVersion.TabIndex = 16; + fbxVersion.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + fbxVersion.FormattingEnabled = true; + fbxVersion.Items.AddRange(new object[] { "6.1", "7.1", "7.2", "7.3", "7.4", "7.5" }); + fbxVersion.Location = new System.Drawing.Point(90, 372); + fbxVersion.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + fbxVersion.Name = "fbxVersion"; + fbxVersion.Size = new System.Drawing.Size(54, 23); + fbxVersion.TabIndex = 16; // // label3 // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(6, 311); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(62, 13); - this.label3.TabIndex = 15; - this.label3.Text = "FBXVersion"; + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(7, 376); + label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(65, 15); + label3.TabIndex = 15; + label3.Text = "FBXVersion"; // // boneSize // - this.boneSize.Location = new System.Drawing.Point(65, 213); - this.boneSize.Name = "boneSize"; - this.boneSize.Size = new System.Drawing.Size(46, 20); - this.boneSize.TabIndex = 11; - this.boneSize.Value = new decimal(new int[] { - 10, - 0, - 0, - 0}); + boneSize.Location = new System.Drawing.Point(76, 263); + boneSize.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + boneSize.Name = "boneSize"; + boneSize.Size = new System.Drawing.Size(54, 23); + boneSize.TabIndex = 11; + boneSize.Value = new decimal(new int[] { 10, 0, 0, 0 }); // // label2 // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(6, 216); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(52, 13); - this.label2.TabIndex = 10; - this.label2.Text = "BoneSize"; + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(7, 266); + label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(54, 15); + label2.TabIndex = 10; + label2.Text = "BoneSize"; // // exportSkins // - this.exportSkins.AutoSize = true; - this.exportSkins.Checked = true; - this.exportSkins.CheckState = System.Windows.Forms.CheckState.Checked; - this.exportSkins.Location = new System.Drawing.Point(6, 90); - this.exportSkins.Name = "exportSkins"; - this.exportSkins.Size = new System.Drawing.Size(83, 17); - this.exportSkins.TabIndex = 8; - this.exportSkins.Text = "Export skins"; - this.exportSkins.UseVisualStyleBackColor = true; + exportSkins.AutoSize = true; + exportSkins.Checked = true; + exportSkins.CheckState = System.Windows.Forms.CheckState.Checked; + exportSkins.Location = new System.Drawing.Point(7, 104); + exportSkins.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportSkins.Name = "exportSkins"; + exportSkins.Size = new System.Drawing.Size(89, 19); + exportSkins.TabIndex = 8; + exportSkins.Text = "Export skins"; + exportSkins.UseVisualStyleBackColor = true; // // label1 // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(26, 42); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(72, 13); - this.label1.TabIndex = 7; - this.label1.Text = "FilterPrecision"; + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(30, 48); + label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(81, 15); + label1.TabIndex = 7; + label1.Text = "FilterPrecision"; // // filterPrecision // - this.filterPrecision.DecimalPlaces = 2; - this.filterPrecision.Increment = new decimal(new int[] { - 1, - 0, - 0, - 131072}); - this.filterPrecision.Location = new System.Drawing.Point(127, 40); - this.filterPrecision.Name = "filterPrecision"; - this.filterPrecision.Size = new System.Drawing.Size(51, 20); - this.filterPrecision.TabIndex = 6; - this.filterPrecision.Value = new decimal(new int[] { - 25, - 0, - 0, - 131072}); + filterPrecision.DecimalPlaces = 2; + filterPrecision.Increment = new decimal(new int[] { 1, 0, 0, 131072 }); + filterPrecision.Location = new System.Drawing.Point(148, 46); + filterPrecision.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + filterPrecision.Name = "filterPrecision"; + filterPrecision.Size = new System.Drawing.Size(59, 23); + filterPrecision.TabIndex = 6; + filterPrecision.Value = new decimal(new int[] { 25, 0, 0, 131072 }); // // castToBone // - this.castToBone.AutoSize = true; - this.castToBone.Location = new System.Drawing.Point(6, 161); - this.castToBone.Name = "castToBone"; - this.castToBone.Size = new System.Drawing.Size(131, 17); - this.castToBone.TabIndex = 5; - this.castToBone.Text = "All nodes cast to bone"; - this.castToBone.UseVisualStyleBackColor = true; + castToBone.AutoSize = true; + castToBone.Location = new System.Drawing.Point(7, 186); + castToBone.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + castToBone.Name = "castToBone"; + castToBone.Size = new System.Drawing.Size(143, 19); + castToBone.TabIndex = 5; + castToBone.Text = "All nodes cast to bone"; + castToBone.UseVisualStyleBackColor = true; // // exportAllNodes // - this.exportAllNodes.AutoSize = true; - this.exportAllNodes.Checked = true; - this.exportAllNodes.CheckState = System.Windows.Forms.CheckState.Checked; - this.exportAllNodes.Location = new System.Drawing.Point(6, 66); - this.exportAllNodes.Name = "exportAllNodes"; - this.exportAllNodes.Size = new System.Drawing.Size(101, 17); - this.exportAllNodes.TabIndex = 4; - this.exportAllNodes.Text = "Export all nodes"; - this.exportAllNodes.UseVisualStyleBackColor = true; + exportAllNodes.AutoSize = true; + exportAllNodes.Checked = true; + exportAllNodes.CheckState = System.Windows.Forms.CheckState.Checked; + exportAllNodes.Location = new System.Drawing.Point(7, 76); + exportAllNodes.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + exportAllNodes.Name = "exportAllNodes"; + exportAllNodes.Size = new System.Drawing.Size(110, 19); + exportAllNodes.TabIndex = 4; + exportAllNodes.Text = "Export all nodes"; + exportAllNodes.UseVisualStyleBackColor = true; // // eulerFilter // - this.eulerFilter.AutoSize = true; - this.eulerFilter.Checked = true; - this.eulerFilter.CheckState = System.Windows.Forms.CheckState.Checked; - this.eulerFilter.Location = new System.Drawing.Point(6, 22); - this.eulerFilter.Name = "eulerFilter"; - this.eulerFilter.Size = new System.Drawing.Size(72, 17); - this.eulerFilter.TabIndex = 3; - this.eulerFilter.Text = "EulerFilter"; - this.eulerFilter.UseVisualStyleBackColor = true; + eulerFilter.AutoSize = true; + eulerFilter.Checked = true; + eulerFilter.CheckState = System.Windows.Forms.CheckState.Checked; + eulerFilter.Location = new System.Drawing.Point(7, 25); + eulerFilter.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + eulerFilter.Name = "eulerFilter"; + eulerFilter.Size = new System.Drawing.Size(78, 19); + eulerFilter.TabIndex = 3; + eulerFilter.Text = "EulerFilter"; + eulerFilter.UseVisualStyleBackColor = true; // // groupBox3 // - this.groupBox3.AutoSize = true; - this.groupBox3.Controls.Add(this.enableXor); - this.groupBox3.Controls.Add(this.key); - this.groupBox3.Controls.Add(this.label7); - this.groupBox3.Location = new System.Drawing.Point(12, 296); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(232, 79); - this.groupBox3.TabIndex = 11; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "MiHoYoBinData"; + groupBox3.AutoSize = true; + groupBox3.Controls.Add(enableXor); + groupBox3.Controls.Add(key); + groupBox3.Controls.Add(label7); + groupBox3.Location = new System.Drawing.Point(14, 342); + groupBox3.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBox3.Name = "groupBox3"; + groupBox3.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBox3.Size = new System.Drawing.Size(271, 91); + groupBox3.TabIndex = 11; + groupBox3.TabStop = false; + groupBox3.Text = "MiHoYoBinData"; // // enableXor // - this.enableXor.AutoSize = true; - this.enableXor.Checked = true; - this.enableXor.CheckState = System.Windows.Forms.CheckState.Checked; - this.enableXor.Location = new System.Drawing.Point(9, 24); - this.enableXor.Name = "enableXor"; - this.enableXor.Size = new System.Drawing.Size(85, 17); - this.enableXor.TabIndex = 12; - this.enableXor.Text = "Enable XOR"; - this.enableXor.UseVisualStyleBackColor = true; + enableXor.AutoSize = true; + enableXor.Checked = true; + enableXor.CheckState = System.Windows.Forms.CheckState.Checked; + enableXor.Location = new System.Drawing.Point(10, 28); + enableXor.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + enableXor.Name = "enableXor"; + enableXor.Size = new System.Drawing.Size(87, 19); + enableXor.TabIndex = 12; + enableXor.Text = "Enable XOR"; + enableXor.UseVisualStyleBackColor = true; // // key // - this.key.Hexadecimal = true; - this.key.Location = new System.Drawing.Point(124, 21); - this.key.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.key.Name = "key"; - this.key.Size = new System.Drawing.Size(61, 20); - this.key.TabIndex = 8; + key.Hexadecimal = true; + key.Location = new System.Drawing.Point(145, 24); + key.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + key.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + key.Name = "key"; + key.Size = new System.Drawing.Size(71, 23); + key.TabIndex = 8; // // label7 // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(97, 25); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(25, 13); - this.label7.TabIndex = 7; - this.label7.Text = "Key"; + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(113, 29); + label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(26, 15); + label7.TabIndex = 7; + label7.Text = "Key"; // // ExportOptions // - this.AcceptButton = this.OKbutton; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.Cancel; - this.ClientSize = new System.Drawing.Size(486, 416); - this.Controls.Add(this.groupBox3); - this.Controls.Add(this.groupBox2); - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.Cancel); - this.Controls.Add(this.OKbutton); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ExportOptions"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Export options"; - this.TopMost = true; - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.scaleFactor)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.boneSize)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.filterPrecision)).EndInit(); - this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.key)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - + AcceptButton = OKbutton; + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + CancelButton = Cancel; + ClientSize = new System.Drawing.Size(567, 480); + Controls.Add(groupBox3); + Controls.Add(groupBox2); + Controls.Add(groupBox1); + Controls.Add(Cancel); + Controls.Add(OKbutton); + Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + MaximizeBox = false; + MinimizeBox = false; + Name = "ExportOptions"; + ShowIcon = false; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + Text = "Export options"; + TopMost = true; + groupBox1.ResumeLayout(false); + groupBox1.PerformLayout(); + panel1.ResumeLayout(false); + panel1.PerformLayout(); + groupBox2.ResumeLayout(false); + groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)scaleFactor).EndInit(); + ((System.ComponentModel.ISupportInitialize)boneSize).EndInit(); + ((System.ComponentModel.ISupportInitialize)filterPrecision).EndInit(); + groupBox3.ResumeLayout(false); + groupBox3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)key).EndInit(); + ResumeLayout(false); + PerformLayout(); } #endregion @@ -663,5 +685,6 @@ private System.Windows.Forms.CheckBox disableRndrr; private System.Windows.Forms.CheckBox ignoreController; private System.Windows.Forms.CheckBox disableShader; + private System.Windows.Forms.CheckBox exportUV0UV1; } } \ No newline at end of file diff --git a/AssetStudioGUI/ExportOptions.cs b/AssetStudioGUI/ExportOptions.cs index 5a21834..ce34a89 100644 --- a/AssetStudioGUI/ExportOptions.cs +++ b/AssetStudioGUI/ExportOptions.cs @@ -38,6 +38,7 @@ namespace AssetStudioGUI exportBlendShape.Checked = Properties.Settings.Default.exportBlendShape; castToBone.Checked = Properties.Settings.Default.castToBone; exportAllUvsAsDiffuseMaps.Checked = Properties.Settings.Default.exportAllUvsAsDiffuseMaps; + exportUV0UV1.Checked = Properties.Settings.Default.exportUV0UV1; boneSize.Value = Properties.Settings.Default.boneSize; scaleFactor.Value = Properties.Settings.Default.scaleFactor; fbxVersion.SelectedIndex = Properties.Settings.Default.fbxVersion; @@ -80,6 +81,7 @@ namespace AssetStudioGUI Properties.Settings.Default.exportBlendShape = exportBlendShape.Checked; Properties.Settings.Default.castToBone = castToBone.Checked; Properties.Settings.Default.exportAllUvsAsDiffuseMaps = exportAllUvsAsDiffuseMaps.Checked; + Properties.Settings.Default.exportUV0UV1 = exportUV0UV1.Checked; Properties.Settings.Default.boneSize = boneSize.Value; Properties.Settings.Default.scaleFactor = scaleFactor.Value; Properties.Settings.Default.fbxVersion = fbxVersion.SelectedIndex; diff --git a/AssetStudioGUI/ExportOptions.resx b/AssetStudioGUI/ExportOptions.resx index 6966b18..3a3d261 100644 --- a/AssetStudioGUI/ExportOptions.resx +++ b/AssetStudioGUI/ExportOptions.resx @@ -1,64 +1,4 @@ - - - + diff --git a/AssetStudioGUI/Exporter.cs b/AssetStudioGUI/Exporter.cs index 18b45c0..151e2ad 100644 --- a/AssetStudioGUI/Exporter.cs +++ b/AssetStudioGUI/Exporter.cs @@ -377,11 +377,12 @@ namespace AssetStudioGUI var castToBone = Properties.Settings.Default.castToBone; var boneSize = (int)Properties.Settings.Default.boneSize; var exportAllUvsAsDiffuseMaps = Properties.Settings.Default.exportAllUvsAsDiffuseMaps; + var exportUV0UV1 = Properties.Settings.Default.exportUV0UV1; var scaleFactor = (float)Properties.Settings.Default.scaleFactor; var fbxVersion = Properties.Settings.Default.fbxVersion; var fbxFormat = Properties.Settings.Default.fbxFormat; ModelExporter.ExportFbx(exportPath, convert, eulerFilter, filterPrecision, - exportAllNodes, exportSkins, exportAnimations, exportBlendShape, castToBone, boneSize, exportAllUvsAsDiffuseMaps, scaleFactor, fbxVersion, fbxFormat == 1); + exportAllNodes, exportSkins, exportAnimations, exportBlendShape, castToBone, boneSize, exportAllUvsAsDiffuseMaps, exportUV0UV1, scaleFactor, fbxVersion, fbxFormat == 1); } public static bool ExportDumpFile(AssetItem item, string exportPath) diff --git a/AssetStudioGUI/Libraries/x64/acl.dll b/AssetStudioGUI/Libraries/x64/acl.dll index 8249f885f28a71ee60dc6187f9e155dd4e00ddaa..0b7c8225aba3b262dbf419a60273b574e85ee9e7 100644 GIT binary patch delta 8359 zcmd^EdstN0wclr8c*$@^nZW@O2N`5ggyErLea#5yAsGxJK8P<6P)HF8&Lku?8SH55 zc)|^4n}#MPL8Yxp+r-u;L6atfs9@D-Oq*(xv{utEL$F?~X?!H{^taDBqnPjB|L%Wx zKKK5uwf5R;uf6tTZH}!wxz-M@eWvCH*)e;rCwhUjU&z{VDOem!HJ28EzrLvbVu_49 zFILF->_xkb&s@A8_`=Hei}wMAtoBQ5fG?MITr8Gxhl-7t6rRd_S$%aK8-u97(jr1? zeiW8MOz-Pzg2Ev(-aJARlR~VJOi-jpCes{lRd(e9LRLWX4)7_~(n`n;hD|6Tj8K2= zgp`83Kzq1xTqpfI7t58>s;n_ouZiGZrtzAzD3bvSc9b}JpC)N)cNoY@6b;H;lwm(R zA^yy!nkrWnglrf#TqsH*eMytX3G^81`wm>ujN+(1L~j$?bUrvf;7lOoB!2cqg7>mn zXw#cf!q3ceK<)8Zvd z9ZMWbVWpB!cUejWQM>a2n94mO_zEp{r}!^eJw!M{9Nl)sNNPntL^a#~UqTBA1_@!T6 z6ZnZ&#d&&ush^SlYy7Gq{;jaK=+=Zfs3 z4VCFE7Gj8_n=OVQ{#g)DNTvFAL3CQ|Lhi{xJa(NR?y?v=p~zd=T6&LEI#xSYtzNaV zm)as1Rj{ohF4VJqg1r#$tag~Np}uyqj@mB)#XT1^Fe-?#Oktd}x&Wcj{Y6puP*s3g z^KwC|)XPLK+lF*gWP;`qC+&#*MclWU*m>2-%!eD-_=?-SwJ%Vfd|+`@8|V2#ue!!t zH^J-8M_S?Qa@ho|+_ND!UuN^<(|>0ff{xJEV5t?rtG zifzKDyY*{l^z+^b3|lA;@#E~+>?Jq>eS-Lr(Dt++g9Q@MD2`xqK`e;it!H>^KQ#Db z{fnW+AM?M8^)+l0N3dq8hd*{!k{4VNc)UFtu%T+Zwt=0^qr218E;5P>ywehWg6~i2?@Lr#lqZ=09fB=Mtc;aJsxH?XoOik&fLB04zn7) z4OWZ2S2%vFbX$@Hu}zLLHkgfP(cWdTvvskm>$3TXd^f1O>?CfI&6hh7DXf!SP}ix@ zA{2=u4~`==DLPBDdJ=sgdTf+o5+OJhsrpIuk?5V8oX=^rZYsBo7U(8uQYO;x>*jFJ z&|m5v;I`1Oba8z=uv*Tt}=~~w&)Mocok`Mvi^Ca77~8xxBQCRe8mlZ*=;mU*-byu zcXDUw6C>+2OD@uPbvZ#M;I)&#O-G6#;&E4}2as zo_dVgqb?^0$bI1J2|LV>(`h8Op`fN9i z=PuA+o1RcS(!BZ?>Nh0FEDbYX%mcFY~Q>Q2;Hx--FJnU1^2trvQF z^lPv8NRpfD6?%^A2kr}Jc?PM(8kiA9*Ci*<`4v;VlHa6@cwn@S_9aiqN`q{R-_2yB0tpHe9vBH?@bZ36wyc

^w>~TU_?iH&zg4Ck>RX&p) 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 XE>ek|i4f;^3Y~SG?Va)|<;Z^k6+Q1) delta 8183 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 Uch)0HKtcc3{_cMKE`5>vZz+bV%>V!Z diff --git a/AssetStudioGUI/Libraries/x64/sracl.dll b/AssetStudioGUI/Libraries/x64/sracl.dll index d6dd18215c1365336517444dcb3765c84befc9e6..b7359e1c0e224fd646f1d36c9d117f5ab6c57d59 100644 GIT binary patch delta 7400 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 diff --git a/AssetStudioGUI/Libraries/x86/acl.dll b/AssetStudioGUI/Libraries/x86/acl.dll index 4262bcaf0183376547d0fba31922f2a41f3a160f..34eb8c7702ea91650670f97af4dc30ddf85362eb 100644 GIT binary patch delta 42615 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 diff --git a/AssetStudioGUI/Libraries/x86/sracl.dll b/AssetStudioGUI/Libraries/x86/sracl.dll index 9151f5a3fe54abbe889c443707ea2c570ba825f6..37f4a7d0e5733ac24897a59daf31b051681fac51 100644 GIT binary patch delta 5529 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 delta 5342 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 diff --git a/AssetStudioGUI/Properties/Settings.Designer.cs b/AssetStudioGUI/Properties/Settings.Designer.cs index 4f9f8ed..d5d8ca8 100644 --- a/AssetStudioGUI/Properties/Settings.Designer.cs +++ b/AssetStudioGUI/Properties/Settings.Designer.cs @@ -492,6 +492,21 @@ namespace AssetStudioGUI.Properties } } + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool exportUV0UV1 + { + get + { + return ((bool)(this["exportUV0UV1"])); + } + set + { + this["exportUV0UV1"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] diff --git a/AssetStudioGUI/Properties/Settings.settings b/AssetStudioGUI/Properties/Settings.settings index ad65dfd..6f001d1 100644 --- a/AssetStudioGUI/Properties/Settings.settings +++ b/AssetStudioGUI/Properties/Settings.settings @@ -98,5 +98,8 @@ False + + False + \ No newline at end of file diff --git a/AssetStudioUtility/ACL/ACL.cs b/AssetStudioUtility/ACL/ACL.cs index e1c1c40..a97b84f 100644 --- a/AssetStudioUtility/ACL/ACL.cs +++ b/AssetStudioUtility/ACL/ACL.cs @@ -4,6 +4,13 @@ using AssetStudio.PInvoke; namespace ACL { + public struct DecompressedClip + { + public IntPtr Values; + public int ValuesCount; + public IntPtr Times; + public int TimesCount; + } public static class ACL { private const string DLL_NAME = "acl"; @@ -13,22 +20,25 @@ namespace ACL } public static void DecompressAll(byte[] data, out float[] values, out float[] times) { - var pinned = GCHandle.Alloc(data, GCHandleType.Pinned); - var pData = pinned.AddrOfPinnedObject(); - DecompressAll(pData, out var pValues, out var numValues, out var pTimes, out var numTimes); - pinned.Free(); + var decompressedClip = new DecompressedClip(); + DecompressAll(data, ref decompressedClip); - values = new float[numValues]; - Marshal.Copy(pValues, values, 0, numValues); + values = new float[decompressedClip.ValuesCount]; + Marshal.Copy(decompressedClip.Values, values, 0, decompressedClip.ValuesCount); - times = new float[numTimes]; - Marshal.Copy(pTimes, times, 0, numTimes); + times = new float[decompressedClip.TimesCount]; + Marshal.Copy(decompressedClip.Times, times, 0, decompressedClip.TimesCount); + + Dispose(ref decompressedClip); } #region importfunctions [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] - private static extern void DecompressAll(IntPtr data, out IntPtr pValues, out int numValues, out IntPtr pTimes, out int numTimes); + private static extern void DecompressAll(byte[] data, ref DecompressedClip decompressedClip); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern void Dispose(ref DecompressedClip decompressedClip); #endregion } @@ -42,22 +52,25 @@ namespace ACL } public static void DecompressAll(uint[] data, out float[] values, out float[] times) { - var pinned = GCHandle.Alloc(data, GCHandleType.Pinned); - var pData = pinned.AddrOfPinnedObject(); - DecompressAll(pData, out var pValues, out var numValues, out var pTimes, out var numTimes); - pinned.Free(); + var decompressedClip = new DecompressedClip(); + DecompressAll(data, ref decompressedClip); - values = new float[numValues]; - Marshal.Copy(pValues, values, 0, numValues); + values = new float[decompressedClip.ValuesCount]; + Marshal.Copy(decompressedClip.Values, values, 0, decompressedClip.ValuesCount); - times = new float[numTimes]; - Marshal.Copy(pTimes, times, 0, numTimes); + times = new float[decompressedClip.TimesCount]; + Marshal.Copy(decompressedClip.Times, times, 0, decompressedClip.TimesCount); + + Dispose(ref decompressedClip); } #region importfunctions [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] - private static extern void DecompressAll(IntPtr data, out IntPtr pValues, out int numValues, out IntPtr pTimes, out int numTimes); + private static extern void DecompressAll(uint[] data, ref DecompressedClip decompressedClip); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern void Dispose(ref DecompressedClip decompressedClip); #endregion } diff --git a/AssetStudioUtility/ModelExporter.cs b/AssetStudioUtility/ModelExporter.cs index 5b7813e..dea96e9 100644 --- a/AssetStudioUtility/ModelExporter.cs +++ b/AssetStudioUtility/ModelExporter.cs @@ -3,9 +3,9 @@ public static class ModelExporter { public static void ExportFbx(string path, IImported imported, bool eulerFilter, float filterPrecision, - bool allNodes, bool skins, bool animation, bool blendShape, bool castToBone, float boneSize, bool exportAllUvsAsDiffuseMaps, float scaleFactor, int versionIndex, bool isAscii) + bool allNodes, bool skins, bool animation, bool blendShape, bool castToBone, float boneSize, bool exportAllUvsAsDiffuseMaps, bool exportUV0UV1, float scaleFactor, int versionIndex, bool isAscii) { - Fbx.Exporter.Export(path, imported, eulerFilter, filterPrecision, allNodes, skins, animation, blendShape, castToBone, boneSize, exportAllUvsAsDiffuseMaps, scaleFactor, versionIndex, isAscii); + Fbx.Exporter.Export(path, imported, eulerFilter, filterPrecision, allNodes, skins, animation, blendShape, castToBone, boneSize, exportAllUvsAsDiffuseMaps, exportUV0UV1, scaleFactor, versionIndex, isAscii); } } }