diff --git a/Unity Studio/UnityStudioForm.Designer.cs b/Unity Studio/UnityStudioForm.Designer.cs index ba09062..65e9fdc 100644 --- a/Unity Studio/UnityStudioForm.Designer.cs +++ b/Unity Studio/UnityStudioForm.Designer.cs @@ -101,6 +101,7 @@ this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); this.saveFolderDialog1 = new System.Windows.Forms.SaveFileDialog(); this.treeTip = new System.Windows.Forms.ToolTip(this.components); + this.all3DObjectssplitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); @@ -303,6 +304,7 @@ // this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.exportAll3DMenuItem, + this.all3DObjectssplitToolStripMenuItem, this.exportSelected3DMenuItem, this.toolStripSeparator1, this.exportAllAssetsMenuItem, @@ -315,40 +317,40 @@ // exportAll3DMenuItem // this.exportAll3DMenuItem.Name = "exportAll3DMenuItem"; - this.exportAll3DMenuItem.Size = new System.Drawing.Size(191, 22); + this.exportAll3DMenuItem.Size = new System.Drawing.Size(192, 22); this.exportAll3DMenuItem.Text = "All 3D objects"; this.exportAll3DMenuItem.Click += new System.EventHandler(this.Export3DObjects_Click); // // exportSelected3DMenuItem // this.exportSelected3DMenuItem.Name = "exportSelected3DMenuItem"; - this.exportSelected3DMenuItem.Size = new System.Drawing.Size(191, 22); + this.exportSelected3DMenuItem.Size = new System.Drawing.Size(192, 22); this.exportSelected3DMenuItem.Text = "Selected 3D objects"; this.exportSelected3DMenuItem.Click += new System.EventHandler(this.Export3DObjects_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(188, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(189, 6); // // exportAllAssetsMenuItem // this.exportAllAssetsMenuItem.Name = "exportAllAssetsMenuItem"; - this.exportAllAssetsMenuItem.Size = new System.Drawing.Size(191, 22); + this.exportAllAssetsMenuItem.Size = new System.Drawing.Size(192, 22); this.exportAllAssetsMenuItem.Text = "All assets"; this.exportAllAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click); // // exportSelectedAssetsMenuItem // this.exportSelectedAssetsMenuItem.Name = "exportSelectedAssetsMenuItem"; - this.exportSelectedAssetsMenuItem.Size = new System.Drawing.Size(191, 22); + this.exportSelectedAssetsMenuItem.Size = new System.Drawing.Size(192, 22); this.exportSelectedAssetsMenuItem.Text = "Selected assets"; this.exportSelectedAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click); // // exportFilteredAssetsMenuItem // this.exportFilteredAssetsMenuItem.Name = "exportFilteredAssetsMenuItem"; - this.exportFilteredAssetsMenuItem.Size = new System.Drawing.Size(191, 22); + this.exportFilteredAssetsMenuItem.Size = new System.Drawing.Size(192, 22); this.exportFilteredAssetsMenuItem.Text = "Filtered assets"; this.exportFilteredAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click); // @@ -811,6 +813,13 @@ this.saveFolderDialog1.RestoreDirectory = true; this.saveFolderDialog1.Title = "Browse for folder"; // + // all3DObjectssplitToolStripMenuItem + // + this.all3DObjectssplitToolStripMenuItem.Name = "all3DObjectssplitToolStripMenuItem"; + this.all3DObjectssplitToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.all3DObjectssplitToolStripMenuItem.Text = "All 3D objects (split)"; + this.all3DObjectssplitToolStripMenuItem.Click += new System.EventHandler(this.all3DObjectssplitToolStripMenuItem_Click); + // // UnityStudioForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -929,6 +938,7 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; private System.Windows.Forms.ToolStripMenuItem exportClassStructuresMenuItem; private System.Windows.Forms.Label FMODcopyright; + private System.Windows.Forms.ToolStripMenuItem all3DObjectssplitToolStripMenuItem; } } diff --git a/Unity Studio/UnityStudioForm.cs b/Unity Studio/UnityStudioForm.cs index 164ce1c..d9718e3 100644 --- a/Unity Studio/UnityStudioForm.cs +++ b/Unity Studio/UnityStudioForm.cs @@ -1830,6 +1830,70 @@ namespace Unity_Studio else { return false; } } + private void all3DObjectssplitToolStripMenuItem_Click(object sender, EventArgs e) + { + if (sceneTreeView.Nodes.Count > 0) + { + if (saveFolderDialog1.ShowDialog() == DialogResult.OK) + { + var savePath = saveFolderDialog1.FileName; + if (Path.GetFileName(savePath) == "Select folder or write folder name to create") + { savePath = Path.GetDirectoryName(saveFolderDialog1.FileName); } + savePath = savePath + "\\"; + switch ((bool)Properties.Settings.Default["showExpOpt"]) + { + case true: + ExportOptions exportOpt = new ExportOptions(); + if (exportOpt.ShowDialog() == DialogResult.OK) { goto case false; } + break; + case false: + { + progressBar1.Value = 0; + progressBar1.Maximum = sceneTreeView.Nodes.Count; + //防止主界面假死 + ThreadPool.QueueUserWorkItem(delegate + { + sceneTreeView.Invoke(new Action(() => + { + //挂起控件防止更新 + sceneTreeView.BeginUpdate(); + //先取消所有Node的选中 + foreach (TreeNode i in sceneTreeView.Nodes) + { + i.Checked = false; + } + })); + //遍历根节点 + foreach (TreeNode i in sceneTreeView.Nodes) + { + if (i.Nodes.Count > 0) + { + //遍历一级子节点 + foreach (TreeNode j in i.Nodes) + { + var filename = j.Text; + //选中它和它的子节点 + sceneTreeView.Invoke(new Action(() => j.Checked = true)); + //导出FBX + WriteFBX(savePath + filename + ".fbx", false); + //取消选中 + sceneTreeView.Invoke(new Action(() => j.Checked = false)); + } + } + ProgressBarPerformStep(); + } + //取消挂起 + sceneTreeView.Invoke(new Action(() => sceneTreeView.EndUpdate())); + if (openAfterExport.Checked) { Process.Start(savePath); } + }); + break; + } + } + } + + } + else { StatusStripUpdate("No Objects available for export"); } + } private void Export3DObjects_Click(object sender, EventArgs e) {