Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
929781a380 | ||
|
|
4d85c7f665 | ||
|
|
7e67f354e4 | ||
|
|
0cd8d51526 | ||
|
|
6f2c4521b2 | ||
|
|
738e7d3785 | ||
|
|
fc44ba373b | ||
|
|
468976db58 | ||
|
|
647ce56f81 | ||
|
|
db92daedf0 | ||
|
|
6969412385 | ||
|
|
8da4c4623f | ||
|
|
50265c1d57 | ||
|
|
c00da37267 | ||
|
|
17d2140909 | ||
|
|
40153f6f19 | ||
|
|
e75b9858da | ||
|
|
1f69f476f9 | ||
|
|
b2ecc65885 | ||
|
|
682ef4552e | ||
|
|
96c7aaabb0 | ||
|
|
38f1f068d2 | ||
|
|
0359169802 | ||
|
|
a49d409619 | ||
|
|
7e6ef31875 | ||
|
|
5dd9f31398 | ||
|
|
120c3e235d | ||
|
|
3a6ebf7ce6 | ||
|
|
9d505c8900 | ||
|
|
d0486d855a | ||
|
|
7ddbf3ce3e | ||
|
|
4666b378b3 | ||
|
|
2a7d40616d | ||
|
|
96b8732d91 | ||
|
|
e19ecf4770 | ||
|
|
df45fa9b8e | ||
|
|
bd7a43f0dc | ||
|
|
01f1d7c14e | ||
|
|
cc74130ad4 | ||
|
|
dc8990115a | ||
|
|
1c777aa1a8 | ||
|
|
6d019e6e8a | ||
|
|
2d7fd68ff5 | ||
|
|
cdfc9cf2e6 | ||
|
|
6e3c808799 |
37
README.md
37
README.md
@@ -1,38 +1,34 @@
|
|||||||
# UnityStudio
|
# UnityStudio
|
||||||
Latest build: [](https://ci.appveyor.com/project/Perfare/unitystudio/branch/master/artifacts)
|
Latest build: [](https://ci.appveyor.com/project/Perfare/unitystudio/branch/master/artifacts)
|
||||||
|
|
||||||
Unity Studio is a tool for exploring, extracting and exporting assets from Unity games and apps. It has been tested with Unity builds from most platforms, ranging from Web, PC, Linux, MacOS to Xbox360, PS3, Android and iOS, and it is currently maintained to be compatible with Unity builds from 2.5 up to the 5.6 version.
|
Unity Studio is a tool for exploring, extracting and exporting assets from Unity games and apps. It has been tested with Unity builds from most platforms, ranging from Web, PC, Linux, MacOS to Xbox360, PS3, Android and iOS, and it is currently maintained to be compatible with Unity builds from 2.5 up to the 2017.3 version.
|
||||||
|
|
||||||
## Current features
|
## Features
|
||||||
|
|
||||||
* Extraction of assets that can be used as standalone resources:
|
* Support Unity3D Asset types:
|
||||||
* **Texture2D**:
|
* **Texture2D** : support convert to bmp, png or jpeg. export to containers: DDS, PVR and KTX
|
||||||
* DDS (Alpha8, ARGB4444, RGB24, RGBA32, ARGB32, RGB565, R16, DXT1, DXT5, RGBA4444, BGRA32)
|
* **Sprite** : png
|
||||||
* PVR (YUY2, PVRTC_RGB2, PVRTC_RGBA2, PVRTC_RGB4, PVRTC_RGBA4, ETC_RGB4, ETC2_RGB, ETC2_RGBA1, ETC2_RGBA8, ASTC_RGB_4x4, ASTC_RGB_5x5, ASTC_RGB_6x6, ASTC_RGB_8x8, ASTC_RGB_10x10, ASTC_RGB_12x12, ASTC_RGBA_4x4, ASTC_RGBA_5x5, ASTC_RGBA_6x6, ASTC_RGBA_8x8, ASTC_RGBA_10x10, ASTC_RGBA_12x12, ETC_RGB4_3DS, ETC_RGBA8_3DS)
|
* **AudioClip** : mp3, ogg, wav, m4a, fsb. support convert FSB file to WAV(PCM)
|
||||||
* KTX (RHalf, RGHalf, RGBAHalf, RFloat, RGFloat, RGBAFloat, BC4, BC5, BC6H, BC7, ATC_RGB4, ATC_RGBA8, EAC_R, EAC_R_SIGNED, EAC_RG, EAC_RG_SIGNED)
|
* **Font** : ttf, otf
|
||||||
* **AudioClip**: fsb, mp3, ogg, wav, m4a, xbox wav
|
* **Mesh** : obj
|
||||||
* **Font**: ttf, otf
|
* **TextAsset** : txt
|
||||||
* **Mesh**: obj
|
|
||||||
* **TextAsset**
|
|
||||||
* **Shader**
|
* **Shader**
|
||||||
|
* **MovieTexture** : ogv
|
||||||
|
* **VideoClip**
|
||||||
* **MonoBehaviour**
|
* **MonoBehaviour**
|
||||||
* Support convert all textures to bmp, png or jpeg
|
* Export model to FBX format, with complete hierarchy, transformations, materials and textures. Geometry is exported with normals, tangents, UV coordinates, vertex colors and deformers. Skeleton nodes can be exported either as bones or dummy deformers.
|
||||||
* Support convert FSB file to wav
|
|
||||||
* Export to FBX, with complete hierarchy, transformations, materials and textures. Geometry is exported with normals, tangents, UV coordinates, vertex colors and deformers. Skeleton nodes can be exported either as bones or dummy deformers.
|
|
||||||
* Real-time preview window for the above-mentioned assets
|
* Real-time preview window for the above-mentioned assets
|
||||||
* Diagnostics mode with useful tools for research
|
* Diagnostics mode with useful tools for research
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Requirements:
|
### Requirements:
|
||||||
|
|
||||||
- [.NET Framework 4.0](https://www.microsoft.com/en-us/download/details.aspx?id=17718)
|
- [.NET Framework 4.0](https://www.microsoft.com/en-us/download/details.aspx?id=17718)
|
||||||
- [Microsoft Visual C++ 2013 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=40784)
|
- [Microsoft Visual C++ 2013 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=40784)
|
||||||
- [Microsoft Visual C++ 2015 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=53840)
|
- [Microsoft Visual C++ 2015 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=53840)
|
||||||
|
|
||||||
|
### UI guide
|
||||||
## UI guide
|
|
||||||
|
|
||||||
| Item | Action
|
| Item | Action
|
||||||
| :---------------------------- | :----------------------------
|
| :---------------------------- | :----------------------------
|
||||||
@@ -41,6 +37,9 @@ Requirements:
|
|||||||
| Scene Hierarchy search box | Search nodes using * and ? wildcards. Press Enter to loop through results or Ctrl+Enter to select all matching nodes
|
| Scene Hierarchy search box | Search nodes using * and ? wildcards. Press Enter to loop through results or Ctrl+Enter to select all matching nodes
|
||||||
| Asset List filter box | Enter a keyword to filter the list of available assets; wildcards are added automatically
|
| Asset List filter box | Enter a keyword to filter the list of available assets; wildcards are added automatically
|
||||||
| Diagnostics | press Ctrl+Alt+D to bring up a hidden menu and a new list
|
| Diagnostics | press Ctrl+Alt+D to bring up a hidden menu and a new list
|
||||||
| Bulid class structures | Create human-readable structures for each type of Unity asset; available only in Web builds!
|
| Bulid class structures | Create human-readable structures for each type of Unity asset
|
||||||
|
|
||||||
Other interface elements have tooltips or are self-explanatory.
|
Other interface elements have tooltips or are self-explanatory.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
Program uses some C# 7 syntax, need Visual Studio 2017
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 14.0.25420.1
|
VisualStudioVersion = 15.0.27130.2024
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity Studio", "Unity Studio\Unity Studio.csproj", "{24551E2D-E9B6-4CD6-8F2A-D9F4A13E7853}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity Studio", "Unity Studio\Unity Studio.csproj", "{24551E2D-E9B6-4CD6-8F2A-D9F4A13E7853}"
|
||||||
EndProject
|
EndProject
|
||||||
@@ -25,4 +25,7 @@ Global
|
|||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {F5C476A6-2B3B-416F-8BD5-6FE454FF3972}
|
||||||
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
188
Unity Studio/AboutBox.Designer.cs
generated
188
Unity Studio/AboutBox.Designer.cs
generated
@@ -1,188 +0,0 @@
|
|||||||
namespace Unity_Studio
|
|
||||||
{
|
|
||||||
partial class AboutBox
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox));
|
|
||||||
this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.logoPictureBox = new System.Windows.Forms.PictureBox();
|
|
||||||
this.labelProductName = new System.Windows.Forms.Label();
|
|
||||||
this.labelVersion = new System.Windows.Forms.Label();
|
|
||||||
this.labelCopyright = new System.Windows.Forms.Label();
|
|
||||||
this.labelCompanyName = new System.Windows.Forms.Label();
|
|
||||||
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
|
||||||
this.okButton = new System.Windows.Forms.Button();
|
|
||||||
this.tableLayoutPanel.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// tableLayoutPanel
|
|
||||||
//
|
|
||||||
this.tableLayoutPanel.ColumnCount = 2;
|
|
||||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 51.12107F));
|
|
||||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 48.87893F));
|
|
||||||
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
|
|
||||||
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
|
|
||||||
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
|
|
||||||
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
|
|
||||||
this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3);
|
|
||||||
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
|
|
||||||
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
|
|
||||||
this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.tableLayoutPanel.Location = new System.Drawing.Point(9, 8);
|
|
||||||
this.tableLayoutPanel.Name = "tableLayoutPanel";
|
|
||||||
this.tableLayoutPanel.RowCount = 6;
|
|
||||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
|
||||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
|
||||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
|
||||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
|
||||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
|
||||||
this.tableLayoutPanel.Size = new System.Drawing.Size(446, 244);
|
|
||||||
this.tableLayoutPanel.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// logoPictureBox
|
|
||||||
//
|
|
||||||
this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
|
|
||||||
this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
|
|
||||||
this.logoPictureBox.Name = "logoPictureBox";
|
|
||||||
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
|
|
||||||
this.logoPictureBox.Size = new System.Drawing.Size(221, 238);
|
|
||||||
this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
|
||||||
this.logoPictureBox.TabIndex = 12;
|
|
||||||
this.logoPictureBox.TabStop = false;
|
|
||||||
//
|
|
||||||
// labelProductName
|
|
||||||
//
|
|
||||||
this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.labelProductName.Location = new System.Drawing.Point(233, 0);
|
|
||||||
this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
|
||||||
this.labelProductName.MaximumSize = new System.Drawing.Size(0, 16);
|
|
||||||
this.labelProductName.Name = "labelProductName";
|
|
||||||
this.labelProductName.Size = new System.Drawing.Size(210, 16);
|
|
||||||
this.labelProductName.TabIndex = 19;
|
|
||||||
this.labelProductName.Text = "Product Name";
|
|
||||||
this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// labelVersion
|
|
||||||
//
|
|
||||||
this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.labelVersion.Location = new System.Drawing.Point(233, 24);
|
|
||||||
this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
|
||||||
this.labelVersion.MaximumSize = new System.Drawing.Size(0, 16);
|
|
||||||
this.labelVersion.Name = "labelVersion";
|
|
||||||
this.labelVersion.Size = new System.Drawing.Size(210, 16);
|
|
||||||
this.labelVersion.TabIndex = 0;
|
|
||||||
this.labelVersion.Text = "Version";
|
|
||||||
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// labelCopyright
|
|
||||||
//
|
|
||||||
this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.labelCopyright.Location = new System.Drawing.Point(233, 48);
|
|
||||||
this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
|
||||||
this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 16);
|
|
||||||
this.labelCopyright.Name = "labelCopyright";
|
|
||||||
this.labelCopyright.Size = new System.Drawing.Size(210, 16);
|
|
||||||
this.labelCopyright.TabIndex = 21;
|
|
||||||
this.labelCopyright.Text = "Copyright";
|
|
||||||
this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// labelCompanyName
|
|
||||||
//
|
|
||||||
this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.labelCompanyName.Location = new System.Drawing.Point(233, 72);
|
|
||||||
this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
|
||||||
this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 16);
|
|
||||||
this.labelCompanyName.Name = "labelCompanyName";
|
|
||||||
this.labelCompanyName.Size = new System.Drawing.Size(210, 16);
|
|
||||||
this.labelCompanyName.TabIndex = 22;
|
|
||||||
this.labelCompanyName.Text = "Company Name";
|
|
||||||
this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// textBoxDescription
|
|
||||||
//
|
|
||||||
this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.textBoxDescription.Location = new System.Drawing.Point(233, 99);
|
|
||||||
this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
|
||||||
this.textBoxDescription.Multiline = true;
|
|
||||||
this.textBoxDescription.Name = "textBoxDescription";
|
|
||||||
this.textBoxDescription.ReadOnly = true;
|
|
||||||
this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
|
||||||
this.textBoxDescription.Size = new System.Drawing.Size(210, 116);
|
|
||||||
this.textBoxDescription.TabIndex = 23;
|
|
||||||
this.textBoxDescription.TabStop = false;
|
|
||||||
this.textBoxDescription.Text = "Description";
|
|
||||||
//
|
|
||||||
// okButton
|
|
||||||
//
|
|
||||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.okButton.Location = new System.Drawing.Point(368, 221);
|
|
||||||
this.okButton.Name = "okButton";
|
|
||||||
this.okButton.Size = new System.Drawing.Size(75, 20);
|
|
||||||
this.okButton.TabIndex = 24;
|
|
||||||
this.okButton.Text = "&OK";
|
|
||||||
this.okButton.Click += new System.EventHandler(this.okButton_Click);
|
|
||||||
//
|
|
||||||
// AboutBox
|
|
||||||
//
|
|
||||||
this.AcceptButton = this.okButton;
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.ClientSize = new System.Drawing.Size(464, 260);
|
|
||||||
this.Controls.Add(this.tableLayoutPanel);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
|
||||||
this.MaximizeBox = false;
|
|
||||||
this.MinimizeBox = false;
|
|
||||||
this.Name = "AboutBox";
|
|
||||||
this.Padding = new System.Windows.Forms.Padding(9, 8, 9, 8);
|
|
||||||
this.ShowIcon = false;
|
|
||||||
this.ShowInTaskbar = false;
|
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
|
||||||
this.Text = "Unity Studio";
|
|
||||||
this.TopMost = true;
|
|
||||||
this.tableLayoutPanel.ResumeLayout(false);
|
|
||||||
this.tableLayoutPanel.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
|
|
||||||
private System.Windows.Forms.PictureBox logoPictureBox;
|
|
||||||
private System.Windows.Forms.Label labelProductName;
|
|
||||||
private System.Windows.Forms.Label labelVersion;
|
|
||||||
private System.Windows.Forms.Label labelCopyright;
|
|
||||||
private System.Windows.Forms.Label labelCompanyName;
|
|
||||||
private System.Windows.Forms.TextBox textBoxDescription;
|
|
||||||
private System.Windows.Forms.Button okButton;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace Unity_Studio
|
|
||||||
{
|
|
||||||
partial class AboutBox : Form
|
|
||||||
{
|
|
||||||
public AboutBox()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
Text = $"About {AssemblyTitle}";
|
|
||||||
labelProductName.Text = AssemblyProduct;
|
|
||||||
labelVersion.Text = $"Version {AssemblyVersion}";
|
|
||||||
labelCopyright.Text = AssemblyCopyright;
|
|
||||||
labelCompanyName.Text = AssemblyCompany;
|
|
||||||
textBoxDescription.Text = AssemblyDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Assembly Attribute Accessors
|
|
||||||
|
|
||||||
public string AssemblyTitle
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
|
|
||||||
if (attributes.Length > 0)
|
|
||||||
{
|
|
||||||
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
|
|
||||||
if (titleAttribute.Title != "")
|
|
||||||
{
|
|
||||||
return titleAttribute.Title;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string AssemblyVersion => Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
|
||||||
|
|
||||||
public string AssemblyDescription
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
|
|
||||||
if (attributes.Length == 0)
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string AssemblyProduct
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
|
|
||||||
if (attributes.Length == 0)
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return ((AssemblyProductAttribute)attributes[0]).Product;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string AssemblyCopyright
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
|
|
||||||
if (attributes.Length == 0)
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string AssemblyCompany
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
|
|
||||||
if (attributes.Length == 0)
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return ((AssemblyCompanyAttribute)attributes[0]).Company;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private void okButton_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,603 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAAHgAAAEGCAIAAAAhWcaAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
|
||||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AABvkklEQVR4Xu29B1hUd9r+z3X939+7bzax
|
|
||||||
RQWmnZmhS++9i4KCXRRRsKGoiKKIKIJKlSrSpTdpioWmYm9gLzEao4kliTGmZ3ez6767yb7/+3u+M8fD
|
|
||||||
DBiTTVE33+u5cKSe85n73M/9nJk5oyEsE4rKRaIKkbhKLKmVMPUM08hIW6Ty3XL5PrlOl45Ot47uEV3d
|
|
||||||
47p6J/X0TrGFG8f09I7o6Xbr6u7X1W3X1d2nq7NbR2enjk6zjk6jjk69jk6djixDxsxhRJailJSUy5cv
|
|
||||||
f/vtt3/729/+/ve//+///u8//vGPf/7zn999993333//L3b936u+WNBlInG5WFIhkVRKmCpGWiOV1kpl
|
|
||||||
O2TyJrm8RS5vlevs1dHt1NU9oAuy4Esoo46yrA+xn8dX29RY1+joVOvI0mXMbEZkIUpPT7958+Zf/vKX
|
|
||||||
v/71r0+ePPlPw60BylA0Bc1UMgR0lVRWLZPVyuR1cnm9XKeBBdeio9OqA+US/Xbp6h7UJYi5UrLW3aOr
|
|
||||||
s6sPa3mVXF4pl6ZKJTMlQmNhYWHhhx9++B+Im4B+SrlSSblaJq+Rk6qVwwQIsh06hHiTkvheljjgwjoA
|
|
||||||
HQXWuAOojbSqsa6Qy8vl0o1SyWSJUEfY0NDwpz/96T8KtwYoiysUoEFZWk1AP6Vcq/O0OOIgCI4qxEEZ
|
|
||||||
hRucZeMbVFiXyeWlcmY1I/YRR0REHDlyhMP9ynu3hrhMLCmXMBWsnCtZOdcoQPehzBVwqxCHL+9mXQXW
|
|
||||||
Acq0uPaIgwDfybEulcu3y+WFcmYRI7IXbdmy5c6dO3zcYK2CW7GlL/nSEBeLxaWENaFcJUPJq+WkBgLN
|
|
||||||
lYqlgPguHXi0gjgKN2DZtD2qsC6Ry4vlsmSZZLpEqC9samr6+uuvgZtLJq+etDXEOWLJNglTxDAljLRM
|
|
||||||
KquQySoJa3DpUyqUuepX4LAUShzGwrVH3B+1PNbFcnkRK+0oRuwpXr9+/ZUrV4D7z3/+80DGrdjkl3Np
|
|
||||||
iNPF4gyxJEPC5DDSPKmsSCYrkREzLSdpAfnsuYir44ZBgy8sBaDhIVwUqevLulAuL5AjcUtmkUxSX1//
|
|
||||||
5ZdffvPNNxQ337hfdmlriFPFkjQJs4VhMhhplhQl2yqTb2MRwExBHFCApur5NK6CWylwUmDNtcdqnT6s
|
|
||||||
8+WyPBmzihF7iTds2HDjxo2vvvqKc5JXQ9oa4mSxJEXCpDFgLU2XSjOkskyZLJstEM9jD3Ae8efSOB83
|
|
||||||
tW/gpkV1ja/Csvms8+SybTJpmlQSKBEaCPfs2fPFF1/06yQvqbQ1JIkSJplhUhjMFNhP2RYZZjnCmsNN
|
|
||||||
ieezRMDl+QWujhuKpqy5KMJjDVHjD8lyZMwyRuQkysrK+vjjj+EkNJO87NJmQScx0mQpqRSpLE1GiuLO
|
|
||||||
YHFnKXHnyMBCxVJ+QOAq3k1x0+JYVypZw6y3KVhLN0jF/mKBUNDb2/v555+rS/ulCyQaoMyBlqXIFJXK
|
|
||||||
w60u8FwWN9D8NNwoyho3KGscIiqs2T/EzGaEo4QtLS2ffvrpyy5tAvqpnDnQfNwDCRx+UvBj/EQdN0RN
|
|
||||||
WdPYh7sNvw2NEaxx9FDWsBFH0bZt2x4/fsyXtnrWVuzQi7o0xIvFTDxhrUqZX8/G3de+f1jdYM3H3S/r
|
|
||||||
3Kespeuk4jEkaN+6deuzzz7jAsnLZSMazs7OAgOByE0kni5mljOqiPnF95OB1P08ZsKXNj01iI/qrJUG
|
|
||||||
QlinSCVTJAKJ4PTp05A2AgmytoqNvOCsNerq6vLz82NiYoKCghwdHUVWIom/hAljZBvVQNN6hrqpd2O8
|
|
||||||
Biy0OHXcHGsV3FzRcaY/1ihi2YbC9vb2Tz755KWzEY2dO3e2trbuZhfSa3Z29pIlS8aMGSMyF0nGSZhF
|
|
||||||
jCxRjTVKHTdHBMmERu/nNG7OSVC4MbCuUVCAyEKEARLJDx2S2ghNIy84a42Ojo7Ozs6urq79+/fjBhYk
|
|
||||||
09bWBpkvX76cELcWSSZLmEg1V+GchOIGaw53zg8ZtwprDjetZ7NeTk77FRcXP3z4EDZC00i/lq3YxRdj
|
|
||||||
aRw5cuTo0aPH2IUbhw8fPnTo0MGDByl3QIfGFyxYIJQJxR5iJlTNUp5h3NRJIG32tMkPS5uPm2Y+yhpD
|
|
||||||
o7Ix0sKwLnIR5eTkfPjhh8+2bMVevgBL4yy7zp07h4+YDs6cOXPq1KkTJ06AO+4DDjrC7IYNGyZOnEgE
|
|
||||||
Pl0iXaMWujnc/6a0KW58fCZr6Vop7vjU1NQPPviAb9kvbHvUeOutt65fv46P165du3r16uXLly9dunT+
|
|
||||||
/HlwB3R0eUCH0kG8u7sbxHNzc0NDQ4UmQskECROl9JNnJ26+tNVdm8+aj5vPuogd0Pmss2TSOKnYW5yY
|
|
||||||
mPjgwYNHjx4h+am3xxeHtcadO3feU6533333nXfeuXnzJtCD+5UrVy5evAjoUDqInzx5EjKHt4B4RUUF
|
|
||||||
eiYyAIkoK1ncYP08rg1qz2kj6qwxyHCgUWAdLxX7iDdu3Hj//n2uPapHkReBtcZHygW/w2GILb537x6g
|
|
||||||
3759m4MOpUPmFy5cgMw54tA4un9kZCTBHSCRrpI+ZT2QtGkgeR4b4XDjBjejq7DGr82USRPIOJOQkIAt
|
|
||||||
p+2RiyIvFGsNqAAHHTwON7CV8DtIA9wp9Lt373JKf/vttzniVONwFfj4jh07IiIihKZCyVSJdL3ytJQK
|
|
||||||
a07anI30G/74oLliv6Q491TIDo3qrH3EmzZtgkSw5VwUeaFYa8DX0LKxWfiI29hEQAd6DjqUDhOkMqfE
|
|
||||||
OY2jhfb09KB5QuBVVVVhYWEiWxEzh3USPmsVG6FjJOaa57FsWvh8NY81F/hY0IQ1PMRbnJycDGXwWSP2
|
|
||||||
vSCsNXC3cwsJCQanAp0qncqcTxyughYKH+cEfvz48YKCghkzZoi9xMxS5lmsn23ZKpRpUdY4DnA09Msa
|
|
||||||
vdFDnJGRAdZc7HtxWGvQjcBCKsJtxH4kJEDH9nHQ4XrYaCpzSpy6Chop31IgcOonSUlJxLgnS6Qb2EcS
|
|
||||||
ONZ9LZs8fPOc7ZGCpmYN1jgaMMhwIYRjHSMVOYvy8vLef//9F421Bv4wXdgIrH6hQ+l84pzGqY9D4Ldu
|
|
||||||
3bpx4waCCsWNXIixfunSpSInETltMjBrNLc+7ZEPGvUM1jRc01+CYkGjkDhFdqLy8vJnsP5NZhkNevfS
|
|
||||||
hS3A6he6OnG4CnYDAZYKHDvG+QmHG6FbqCuUTJLAQ38G1spPEtbw92JeCFGKmrBeyojMRc3NzSqssf2/
|
|
||||||
IWsNxb/KRYljUeIUugpxzlXg41TgaJuIVnBw+IkK7q6uLkRAsQvr2j8Xa5g1WNNwzYUQjnWGjFnACA2E
|
|
||||||
Bw4c4Fir55BfmbUqaP7iiFPofOJwFb7AsRvUwVVwUzNB+s7OzhaOEjJBjAK0OmvEvudhrfwMAa0eQiho
|
|
||||||
yjqIEUgEuKdfENbPAs2tfomrCJzvJ3zc8G60SkyYLS0tmN3F48Qka3Ogfyxr3mcIa3wnQkiBsjHyRI0/
|
|
||||||
IZkoiYqKQrvGltDMhy2kcyM2HruAffnVWD8XaG5xxPsVOPUT7AynburdaJVIJpcvX0YKjI2NRTBgIlhp
|
|
||||||
q7PmPEQlh3CK7pc1QgjXGDnW6TJpolQ8WpySkqLOGvr4lVn/ONB0cbixgJsTOB83NRN4N22VNAhS487J
|
|
||||||
yRGaC5m5DAE9EGv4L0DzZ/T+QCvMWqUx0l/Iilq6RiqyJyEEdzYmANz36Cj03BNljY0Ha7pHit37ZdZP
|
|
||||||
Ac0tDjffTzjc1LuxY0gmCILYT+okmHHq6upIGgmUPAXNZ50nU+Tr5xC1gjXfrHmiRjHhjNBI2NHRgb+O
|
|
||||||
uxypFAoAazQYbCq2GVuOXXihQdPFqqGPn1Dc1LtpMsExiz2EcSN0U2l3dnbOmzdPMkGCA/wpawqam2XY
|
|
||||||
GV0BlA+6L2sCul+zZkVNWKMxCgTwLsoadzx6CXSALfzVWP8MoOlSx821Ss644SQIAJD27du3IW0E7RUr
|
|
||||||
VojHiskASUFzoqYzOsyXa4wqoFHqrPlmTX8hCxqxEk04Pj4erQImhvsbW6ISrn9ps/7ZQNNFWWNR1hQ3
|
|
||||||
30lUpI38t379erGXWBqrxnqr8jwf9+xhFdAojrV6su4ravx+kYOorKwMdzD+NKwMW8IFvl+hMf7MoOlS
|
|
||||||
kTbnJNgrOAkOW07aOJahssTERLGrmIlmFKwpaI41/HcgUaOUrAloLllTA6G/TSlqZjEj1BceOnQIAZ8L
|
|
||||||
1/wQgq3FNr9MoLGwuSq4qZOgBUHa1LVp/sOxjD1PT08nsW81y5oTNQohhG/W3KMBaqAVrKmB5PMMhIqa
|
|
||||||
Pd8imSbBmIpcj4OJH0J+hcb4S4Gmi8OtLm3q2jSQUBvB9EhOQoE1QKuYNVhXsAYCsj/ImqY9voEoRS3d
|
|
||||||
LBW7i5Ev0Y25EMI1xl/UrH9Z0HRR1nxpU9fm2wgGCkRdwhq6hofwRa1iIBS0Cm6ONcxa3UB4omaWkbTX
|
|
||||||
1tZ2/fp19GSVxsiZ9UsJGosIu6+0qY1g92iHpHMNVJaZmSl2E0vXSZ+CRvGnGGB9JmuFgaCL8hOIUtSy
|
|
||||||
NPJSsCVLlmB0oo2xX7P+2UX9K4Gmi7LmpA0bgYiojcArcRSDNVSWmppKckg8jzUMhCZrGAhogi997kd/
|
|
||||||
oBWsYSBIIHSEAWjKmhW1dJMUvXfr1q0YnWBZOJhg1r/0FPOrgsZSYc23EewqTX5ojxs3bhT7ismTiTnW
|
|
||||||
XNqjBsI9p6lf1pyBYIShP04NhAUNUZNxUU948OBB5Ev+FPPLGcivDRoLW09x822Es2yuPUZHR0smSp6C
|
|
||||||
huEqDYR0RSrqgVkrDIQ7B8J1RRY0MZAJktWrV1+8eJFOMVyy/oUM5DcATRdlDdVwrGnyo+0Ruw2thYeH
|
|
||||||
S2byWEPUynGR0ARi+gRUvocoQStYw9ZVuqJS1GSEsRZVVlZiNKfJGn3il0t7vxloLI419gesueRHUzZY
|
|
||||||
nz59WqgrZBYwCtBU1DAQ2hUBl3uyb3+sFaKG29BYrSZqZjYze/bsc+fOIVkj83Bp75cwkN8SNBafNfZK
|
|
||||||
nTVymNBCSJ51RllTUXNdEZTpqwWeYSAqXZGKmj4VIlmGWI1ZCQaCtPeLGshvDBrrB1lXVFSIXEWKEMKJ
|
|
||||||
msZq8KUvzlBhrQT9tCvyZ0VO1KnsXC4jcznSnoqB/LwjzG8PGgv7gMWxxu6psE5OThb7ixWg1UXNveKo
|
|
||||||
P9YKA0FX7FfUqTLEm/Xr1/MNBA2ZP8Jgq/59A3khQGNR1hBOv6yx80uXLoWlElLgxT1ZkoqagqasBzIQ
|
|
||||||
Oiv2K+pI8tKY1tZWlQRCR5ifqyu+KKCxnsEaOeTkyZNCYyGzgiGgqXtw8QOIm9iCjTxb1PQESF/QshSZ
|
|
||||||
JECycuXKnp4eJBB6vok7BwJRcwbyioDGUmHN+TXN17W1tWQ6xxSTy7oHN5RDyPTFz882EBr1+KKm7pEi
|
|
||||||
k66SCk3IlZ7Onz9PzzfRcyBcV/z3Rf1igcbqlzXN11BZQkKCZJqEgMZETgfFSjbnATH/Zc9qoElXhKhL
|
|
||||||
lPOLuqgnSZYtW3bmzJlnd8VXBzQWZc31RrDGBEFn9Bs3bpBkHcEoQLOnqglHmAYotyhZ/6CoaabmgZZG
|
|
||||||
E1HX19efPXv2GV3xJ4v6RQSNxWeNPeRmdEisubkZaQ9oFKC5lgjEO1nW9LoJHGiONSdqdadmX4mDiR+i
|
|
||||||
xpREuyJ3Yo/Oiv+mqF9Q0FjYH8hHhTWSAPY8Pj6emcEQ0LBpuAfXEvnXXunPQFRFzeU8FjRxaiNhY2Nj
|
|
||||||
b28vPbGnPiv+ZFG/uKCxONaQEnYSu4odRoNCNgARHOwENLIH3KOaJQvEu5Ss+00gVNT8TE1bIuseRNT+
|
|
||||||
5Flkp06dunDhAn9WpKKmUe+nifqFBo3FZ42Dl7KGxDAuiseIiagBmjv1QUG3sqxVDERF1PT0KUD3FTWz
|
|
||||||
nBHqCPfu3ase9f5NUb/ooLEoa+yeSmMMDw9nwhkCGjaN7AGa1D12s6y5C2X9oKh5oFHi0eK4uDjEdhr1
|
|
||||||
fi5RvwSgsfisObPu7OwUOYlAioCmNg27YEE/vdjeQKLGj9CzH1xLVLoHE8aMGzfu6NGjiHo/o6hfDtBY
|
|
||||||
2CuuMVIDQfCC9JgQhlgBQMOmafag1++kF5F8hqiL2PPUai0RhfsvMzPz5xX1ywSab9Z0ikHmFVmKMCsS
|
|
||||||
cJxN08sv04ujPkPU2/sOLzzQTBAza9asn1fULw1oLMpaxaxTU1MlMyVPQbM2TUCzF0d9KmoKWsmagC5X
|
|
||||||
5jw195CuI8NLVVUVFbV6/PgJmfplAo3FsYamYNbQFw5tobFQmiQloMGRgqYXW0bBQAYSdSU7vAzQEiXj
|
|
||||||
Sc6DqBE/uEzNDYr8sx+KLfuh9ZKBxgJrFQOBn0pmSBSg2VkcfAnljh8SNcyd3xL57hFOnunb3d1NMzU3
|
|
||||||
KPLPfvwo93gpQfMNBAkEhzaOdGAiEOnYgn4I0F0s64FEzbVEgEZL7OseKJEDuZrksWPH6KBIz36onNJ7
|
|
||||||
fvd4+UBj8Q2EJhA4NTObISg50PBoepH2NqWoOdBK1kTUaIncqY++oCXTJHPnzj106BA9+3Hjxg16Sg8R
|
|
||||||
np6n/lEt8aUEjYV94xvIpUuXED/kW9m3fgBoBA8Kmr7LAxV1vzkPLZGbElXcI4o8nNja2nr8+HHEG/pU
|
|
||||||
mwcPHqAl8h98eU5Rv8SgOQOhIwzJ1IsYolwKGsEDoOm7PLSzosZ9oC5qtERMiZx78ECjxC7kigmHDx+G
|
|
||||||
qOl56oFynmKzBl4vK2gsFVEfOXJE5CwiLZEPupt99xLcgKibBmiJpbxA3dc9mBlMcHDwwYMHT5w4oT68
|
|
||||||
/KiW+HKD5kRNu2JYWBgTw6iCPszqGk7dMnBL5AJ135BHTpzKhDt37lTPeT+2Jb7EoLE41rQrNjQ0SAIk
|
|
||||||
xCUoaLjzIfJWSIR1F/vuMAO1ROoeajaNwjgO90BLRM7jWiJ99umPco+XGzQW9pAaCESN/RfqCuG2itMd
|
|
||||||
FPRR8oZTRNrI1LQlqoOGe9DJhZ734IFG9ggNDT1w4AC/JVL3QEt8/inxpQetImqojwljyMBCrQOgj+np
|
|
||||||
nWDf1quTbYl896CsqXtwk4uKTS8nk0tHRwdaIn3ott8p8dUHjYU95EQN3Yldxbot7LkODvQpwpo4NVpi
|
|
||||||
v+6B7EEnl37dw0qUm5uLKfHkyZPclNhvoFZsUH/rFQHNF/WsWbNkybKnoI/r6Z1mC6JGzhvIPTC50LOm
|
|
||||||
aqAl4yTLly/fv38/nRKvXr3KD9Sce2AbniHqVwE0Fl/U+fn5TAhDhu/9CtD6p/UNTxsSUe9XugcHmrKG
|
|
||||||
e5SxF4vsz6aZuUxAQEBnZycXqLkTp8/vHuRSP4qbL/PiixpHt8hBRIIHRhWAPqFncNrA+IwxcOO/A7qH
|
|
||||||
Ssjj2bQ0ViqUk0fH/x33eEVAY2FHsKtQFvSFKQOHPzHlwwQ05GzWYwbWUPez3IMLeX1Bo3DPpaWlUfeg
|
|
||||||
z7D5se6h8Yw74eVaVNTYW+wzehezgCFyPkI6IRBb9lpa9FgQUVP34INmWStC3kA2HSAJDw+n7qGePZ5n
|
|
||||||
ciGgXxlRY1+oe8BJxW5i8satCNEsaKteK9uztiZnTBTu0e95j3KeTfcFzcwnj9i2tbXx3aPfyWVA0D8Y
|
|
||||||
AF+ihR3hWuL48eMRJGjkgG+AsuM5R+AmLRHj+EAhj2/TPNDSGKmAEbS0tNDJ5dy5c2+99dbt27f55z2e
|
|
||||||
bdMaz7bwl2sBNCfquLg40KGd0LzH3OGcg+t5V7CGX5NxXMWmWdaqNs0DjUKazs7OhnscOXIE7qH+UADu
|
|
||||||
3WfYtMazLfylW5yooT5Mz/ANkIVBO5138rzo6XHBA9DhHuRZH2qgSchDmh6gH4pHi1etWtXe3k4fClA/
|
|
||||||
a/psmyagXzH3gG6wUziuRZYivQPEoK17rSHn0ZdG+1zygbRJ9tjL2rQKaIgaaXpr//2QCWSCgoJg09xZ
|
|
||||||
0+vXr/cb8voHzTnLK8Oac4+pU6fql+jDoO3O2kHL4y6NC7gcgBskeyDkDZSm6Uv11UGHM56ennv37uVC
|
|
||||||
3rVr11Rsmjs9rdgU3tKgzvJKtsT4+Hi9dXrUNyDniVcmTr061feSL9CTkAeb5oNmWRObpv1QLXhI15N+
|
|
||||||
2NTUxIU8+tya57Rpcv3oZ7fLl25hJ7Ev2GFAkQfJkTfgG+ALyjPfmjn5ymS4B7HpgdL0M/qhOXl7tJ9m
|
|
||||||
0xrPeU7k5VrYF0gHwYBxYoAVdjH+8vjAa4Eh10PAGv+FTZMnjP1gP+wLGtkcYYZv0/xZ/NlpWoO7H/r9
|
|
||||||
8ku6sCOQFQ5kgUjgsMfB+6I3fGP29dkLbyyc+/ZcmDUyH3kcQP3sEu2HmA/7A435MCwsbN++fZxNP3+a
|
|
||||||
1kC75H/51WBNQUM9oaGhdoV2IDv92vT5N+Yve2fZkneWTLs6jYS8TrYf8kGzrNEPSfAAaPTDvgmPmc1M
|
|
||||||
mTJlz549NE3TRxHVT3r0D5rv4q9SS6TusXnzZus4a8g5+Hpw+Dvhq99djQp9O5TY9IEB+iHmQwQPmvBU
|
|
||||||
QC9h3N3dd+/e3dHRwdm0ysO1A/VDDfUTfa+MqLE7dXV15nPNIed5b89bcWvF+jvr496Lg6i9LnrpHdEj
|
|
||||||
j4s/I3ioJTzpWqmZmdmuXbtg09zDteiHd+/e/cF+qEE1/+qJGnuBfQELo7FGkPOim4tibsckvp+YfDc5
|
|
||||||
+t1oBGpM52Q+7Bc0fVhLLeHJkmVCXWFlZeVAYwvXD/sB/fDhw3/n+dUv7MIuYEfQpuTm8rnX5i5/Zzm0
|
|
||||||
nH4vPft+dsJ7CUgg6If9Bw+wpglPHTSb8HJyclT64Z07d/hPNKUYVUH3+2QybKLi6y/zwl5ghx0dHUMO
|
|
||||||
h0DF0PK2B9uKPihKv5++4MYCMrYgeKiAZlk/TXjqoJ1EGzduRD/s6uqiz6qhDwJwwWOgfqjBXYzslRQ1
|
|
||||||
9mXy5MkhLSHx78VDy2UflVV9XFX4QWHkO5GYy8kgrpLwKOjSgaO0tzgqKgr9kD8fcqfxqF65uUSxHezS
|
|
||||||
4NIJv2m+Gqyx/Tg6lyxZMqt4Vtq9tOIPi3c82rHz8c7qj6vj7sRhbCGDeL8JD1F6ANA0Sre2tvLnQ5VH
|
|
||||||
W7jgodgOdmnQpklFTTM1vUNega5IQeNID0wNzH2QC767H+/u/Kxz1+Nd4I6hXLd74Cg90MwSKJk5cyYN
|
|
||||||
HvTRlucMHhrcFfZ+3stTvCALu1BYWDhpzaTSj0qbP2k+8PmBo18e7fqsK+9B3pSrU0jCQ5TuFzSdWdRA
|
|
||||||
MyHkqQc7d+7kggf/YS0uVvQDGsrnnsv+M16e4gVZAN3U1DQ+bHztx7Xtn7Uf/+r42W/O4mPlw0pM5OSM
|
|
||||||
R7+gq9gn8vYLOowZPXo0QCN4cA9rPc+JafKes7/E5SlekIWNh+68Z3jDLg5/cRiUaUHdYTfC9E6xM4sK
|
|
||||||
aPY9nMmjtP2CjmCcnZ1bWlr4J6afJ+FpZGdn08tTcE+x5ke9l501thyKcxnnArvo+bqHAw11I3gYnjYk
|
|
||||||
J0v7A02e84gpXA20NEpqbW3d3NzMJTz6JLF+Ty31Ac0w5rh/+K8PfZW6IrYc+2XraktNgys4deztWJMz
|
|
||||||
JmQ4VANNTpYOBHqt1NTUlILmP1D7g6eWNMzMloSGhuJugf7pd9OuSLvni2Yg2IwfXIpvZRf+C6GZWZvx
|
|
||||||
KaOg7s3vb7bosSDPTlehjALoQuV5JRXQcVIDAwOA7jdKPwu0q2u9kVFgbGws7Yowdf71bX5RA8GhgzaC
|
|
||||||
bW1sbMzPz9+0adOKFStwr2PEQMNxcnKysLAwNDSUyWQSiUTILtzAf/FJfAnf4O3tPWnSJPxIZGQkYty2
|
|
||||||
bdt27NiBeIsohV3ANmPhrxiMMuj9updfYI1x3KrXikzhKpRR6IcDgJZtlMnlcjTYfs/hqT+mpdhVFvQO
|
|
||||||
R8c8Pb3RGOFxCHAGgqSiYiD4sZ/MGr8HbQCRKC8vb/Xq1YGBgcBkbjxqrIdryNSJq8Pmpq1ZuT1lY0t+
|
|
||||||
dnd1ydld9Tf2775/vOvx2aN/unz6ydvn//HOpe/fvYzCDfwXn8SX8A032prO1pV0F6S3JK/bHr0kNSx4
|
|
||||||
VWDAHB+3sbaW5ga6GL7xh5YvX/7m8DczdmTUnak78uGRni97SH3Vk3Mvx67HjiiaPb9B6nlAJ8oYhgHo
|
|
||||||
gWaWZ4FG2dhslkqt6+rq6EMG1EBUEsiPMmv8FP489JWQkICEr6cjH+PuGh48Y0tMVMPW9FNNVcD0j3cu
|
|
||||||
/uv2lX+3bvT+6/Kx73u7vj/e+v2hhu87Kr9vLfy+IevvFZvvpq84GRNaP39ilLPxPDdzD1M5I9bynuw9
|
|
||||||
d83cjds3xrTF2B2zk+9krz+B4nCjYB0FA4BOlolEIoBWP1kKgT5jOAToBrZ2WFquEov14Tt8A6EJ5DlH
|
|
||||||
GNyZyJXQ7KJFi3Tl8gAf7zWL5pelbj7RUPXxmUOqgH7GunXxX9dO/evCoe9Pt31/uPn7rqrvdxPW31Ul
|
|
||||||
fVca911B9KN1M55smfckefa9NRO753sVTrKLdBvlbSIaqvWHQT6DhgcPF6wVMAUMCRts6VSxoGm8S2aL
|
|
||||||
xxoOBq9THw77fZRWgYYF3eTq2khxm5qGzZs3D+5ODYTO5c82a9zGn9m+fXt4eLiJkeGsiQHQbHtZwb1j
|
|
||||||
Xao4ftF699K/rvf869KR73s6ibQP1H6/t+T75q3f1aZ9V77x0aa5T3LCWdbBTzZO/9uGSX+L9f/zau/z
|
|
||||||
c83K/WVRjlrehoNHav73IM9BI0JHCBOE9NmO0gypNFUqS1KyVhYFTYdD7jmPUGe/U7gCE0C7uTXzWY8a
|
|
||||||
FYyOxM3lOBa4sZJv1qCPv5GcnIy/OsHHe/PKZftKtj04cUB1/3/NeufCv946rWS9i7BuK/1+V/73OzIf
|
|
||||||
pUc8KV79JHfZk4yFT1LnPNk042/xU/4cM/bxSodHS60eLTJ7tND47Az9ojHixTYj7HRe/6+h/9+w8cO0
|
|
||||||
FmhJNpD3TCOVRIpATyLWAUtEJqZT+LNBc6IkoHmsG52cyg0Np6xfv54bYbi0B9YQOH57XFyckYH+3OmT
|
|
||||||
ixI3XNjToLrDv34BMeR89SQo/+vcwe/PdCj8urPq+7bt3+3M+yQ35kll/JPtMU/yVjzJXkyknTTr2/hJ
|
|
||||||
j6PdH0XaP1rCsl4w6sP5RvfnGb0fatjkL13rqOmjP3jY8P8e4j5Ec7amZJ1Eii4G4hulaIb19fUAzU3h
|
|
||||||
9HkH/NMd/YJu4bEmuB0dCw0M/BMTE+E71KzBGlEGbc1AX2/e9KllqZve7tr93S2SBFT3+WcvNEyi06MK
|
|
||||||
gif3ErUeaf7+UCOp7h3fd9d/f7CO6Be1v+b7rmqWb/n3+7Z/v7vo+10F/2zKebwt5knN5ifl65+URD/J
|
|
||||||
X0FsJH3+t0lBn8aNeQTWK5weLbV5tMgcuias5xrdCTF8d47hO8EGe/xl6x21xugNHjbsv4d6DdWap4Uc
|
|
||||||
jXxZW1uLfoiZhZvC6emOZ5xX0nB3363Gusnefque3pj09HRMmUlJSVpaWlN8x2Stj0bw+utbZ/9+A3nr
|
|
||||||
4j+VkUsVzU+oqydJHwM10GnK/q46mTSxwujvtkZ+l7Xku/Sw71Lnf5cc+l1SyHeJs0ltDmZvzPkuOeS7
|
|
||||||
lLnfpc0n35Ox+LvsZeRHtq38Ln8V+fGitd+VrPtHUezjlEUEcdHqJwVRT/Iin+QufZK16Nu0kE83BXyy
|
|
||||||
Hqw9CesIu0fhlo8WmjycPwq6fi/E8FawwY1ZBteD9K/O1G/wY1bajnSSv/Ffb/x/mpqaW7ZsaWhoQMKj
|
|
||||||
wyEd97jTHfS8kipoT8+Oflmbm6doatrpSqWRc2c3b8t8eKr707NHv7p44s9Xz/zt+rn//TdYkygG0dWn
|
|
||||||
f1cU8136ou82Bf1z3aR/Ro39Z6T3/y7z+HaJ+5/C3b5c7Pr5YtfHi1wfh7k8Wujy8UKXhwtdPlpACjfw
|
|
||||||
X9QnYS746meLXL9Y7Pp1uBt+6q9L3f++zP2fER7/XOFNfuEaf/zmJ2snfxrh82RT4JPEoCcpc56khTxJ
|
|
||||||
C0V9mzLr8Sb/T+J8P4n1eRTt8Wil86Pl9oT1ItOPF4x6EGp0d46C9VtB+ldm6l+coX8hUD/fUzhHb7iV
|
|
||||||
WDMgIACHOBeluSkcRz93uqMPaG/vQyzrPZS1i0ujrW21qWmJqUmRqXGCTOKSFbvq1sE9SBFg/dm5Y19f
|
|
||||||
OvmXaz0ca2ogz2ZN1Lozj+grZS7L1Ac4wAWMwOuDBc735zm/P9fpTqjTu6FO74Q63QxxuhHi9HaI4/U5
|
|
||||||
jm/NcbzWX+Hz+Cq+B4Vvxk+h8OPvzXW6O8/p/nxn/Fr8ctwTn8xzuBto/M0Sx78uc/pbhOvfVnr9LXrM
|
|
||||||
39aO/3PsuE/Wejxa40kUvdr9UZQr0TVYE8s2fzTf+MO5hPWd2YZU12AN0Oem6p3z1z800SzJWW+8gdDL
|
|
||||||
yysmJgZ9i5/w6MxCswMX0gD6KMu608Vll41NtZFRgYV5qb1tpatjHcrOKkVX6p4ZE/Vu9977x/d/fJqw
|
|
||||||
/ubSqR9gjc8caviuctN3aQsI2eVef1niTrECAZhSoADER3l19s9Q3D1B7wbcZ9dmWp+baPROqO2deXZ3
|
|
||||||
59t9sMD+UZjDZ4scvwi3e7TIGPolKoZHwzpo4TbRNWH9Ueio+yFGYA2/VrCepndhgsH1mVbXZlhemWFV
|
|
||||||
5GUUYs7oCTTXrFmDxgj3+Oijj2DTcA/0Q+6MB1gD9HEPj257+z2mpjU2VjWOdrVuTjuUVY+ys0rTl3ul
|
|
||||||
rlp+u3vfgxP7H5059Pn545Q1pmE+6+9O7CH2mjofx+w/lnngcMZRzyeLPf95sT5PnZtmcWKC4aVga9SV
|
|
||||||
2TbX5ti8HWJzM9T2Zqjl5Tn61+cYvDPH8L1QQ/gyHAP98FGYKaEcZv5ogemjecYfzyWs359NbOTtWQZX
|
|
||||||
p+tfnWx0c6bV24S11dWZ1pdnWNX5miy10bWUCmNjY48ePYpBD/MhHT64oVrD0XG/lWWrg91ed5cOT9d9
|
|
||||||
Hi673JwaVFg72GQa6PgmRCy6c6gNrD/pOcxn/fe9pX/PXfG/66f8Y7kn4MI6AReH8C3WBDi4Kvv/q1XP
|
|
||||||
ZLMTE0ddmGVN62IwKUA/F2x2fKbuqUDdnhl652bqXZqlfy3Y4Ca8IsTw3lwj+MbDuaNAGUV1fXe24buw
|
|
||||||
kUCDG1OMb8+yfifI+u0gaxwuV2aAtfWlmTY7/c2jHPTtdMTwbrRHbtADa3iIhqN9p6fbodGeh709ur3c
|
|
||||||
93u5tXm4tLo7N/bFvcPRLs9Qb2L0gpCrbc2U9Wf12V+lhH2zatyfwl0J3HmA60jg8pSrss+/SZ2eaHJq
|
|
||||||
sgkHmqszQaaHZ+gcmqZzZJrO0Wk6J6brnmahXwjSvxSkf32W/s1gA5gG+IIy6t4cwvr2DMM7gab3Z1u/
|
|
||||||
F2zzbrDNjSCb60HWV2faXJ5pc3Gm7YWZtq0TLKMcDe11Jampqch8MGskEODWGO15jK2joz2PeHsc8nI/
|
|
||||||
4OXW7um6x925SYW1s0OZscHMReO9T6wIvLd0zAfznO7MdbgZYv/2bPtrsx2ukb1yuELKEaWyt79hnQwY
|
|
||||||
dWaqqQpl1KmZJoem6xyaqqxpOodZ4sen6Z6crntmmt65QD0kDWQ7OAZ8A9BJBRren2n2YYjN/Tk278+2
|
|
||||||
BetbwTZvz7K5FmR7JciWsA6yOxdk1xJgudzBwEIuLigoQOaDtDnQlPVRsPb2OOjlBhsB6xaWNYvbsc7N
|
|
||||||
psLNcrspM104aHjl6FGnA23OBNr2zLDtnWl7Nsjuwiz7C7McLgU7XCb1ArE+Nt6wZ7q5CmXUyZnGfUDz
|
|
||||||
6vBUnaNTdI5N0T05RfcMYsZ0PeQNEEc/vDHV4P5M84chNh+F2H4QYndvju17c2zfnW17M9juerDdlVl2
|
|
||||||
F4PszgfZnZ1p1xtkVzPOYoGNgT4jQujmg+Zww0YOerl3sZbd6u5Q52Zd7mZR7Gpe5GJe5GxWZCqbLxoq
|
|
||||||
S3TSOTjF+uh0mxOBNqcJbvwBsLZXZ001zhX7VVL4zouzSJ2f5XAuyP5skH3PTFKnUTPsUKdm2J0MtDvB
|
|
||||||
K/wXhc/Tb8B34vt72Z/Fb8A9jd+GX6vcBnJ4HfbVOzvD8vwsaxQf9ImZRv2DnqLTPZnUock6hycT4sf5
|
|
||||||
xCfqvTvD/P5smwdzbD8MsfsgxPZ+iN3dELs7c+xvzWYP7mD7S7PsLpBNsqP7kudjNs1cF6CPs3zpR441
|
|
||||||
bKTby2mfp22jh1WNq0W5s3mJs1mxk1kRLQu9KOkIqwgLSeckq8NTbY5Ptzk1A+q2OzeTsKbSvhTseFmJ
|
|
||||||
lTLF54GD/nnAOh5odyTQ9tB02wPTbDqn2HSw1T7Fml9tk1VL5RvoT+HH90+16Z5GftvRQFvcJbgbyN02
|
|
||||||
w6ZzjE7PTKveIKuzQVbn2KLQj84w7J6mRnmqTjcFPUlRwM0RPzFF99R4navTzNEJbwdbwzruz7F9EGL3
|
|
||||||
INT+Xqj9+6EO74Y43Jjj8NZse+wyOODuP8OKBrtJQfctj2OjnfePtm/ztm31tNnpbtXgalnjYlHhbL7d
|
|
||||||
0azE0ayYrSJbo0Q97dEzDLQrfIy7p9ocg7Rn2J6ZYdcL3MSniMTOBjlAbhTrsUA7PlMwouD2KWvvJOs9
|
|
||||||
bO1+jqLfiR9Bcb+Bf09Q+vsCzJu8dQ5Oszg03eJooMWJGZanZlr2BBHuhwP1Dk6VH5wi7wZctvoFzRXF
|
|
||||||
fcRXfn6q+ZVAy7dmWN2cBdy278+xvRdifz/U4f5ch7tzHe+EON4Kcbg+x+EKYe1AWWP3+4IGYqcDo+3b
|
|
||||||
ve3avGwh572etrvdbXa5WTe5WtW5WFY7mZc59cU9igkSDhYlOunCRo5MswbuY9NQtvh4eBrB2jXVun2y
|
|
||||||
TRu78xQrBUp5tU602jXRaievWiYoqlmtuC+h+D+C34DCr+LuA45+s69xnbfO7klmqL2TzNummHdNteie
|
|
||||||
ZnEk0KJtqk77ZFnnZPn+KfIDU3jEp+gc7A80qQk6h311z06zOD/N4mIgGVjeCrK+Ocv29mzb90Ls7811
|
|
||||||
uDfX8d5cTKdIX45vk9BFjmOwhtSUHq2KmFabh80+D5s97ta73K13ulrtcLGsdbao5OEmxM11V0pH2Cww
|
|
||||||
EdX5me2baLl7kiUiDtlt3CY7jxso61YWK0Wj4Bjws1bfO4Cirx1tUOOj3zLRbOckUrtY4qhdk0zqJjCN
|
|
||||||
/szOAOnuCdK2SbL2SbKuySzxyfKDk1A6tPqADtA54qffO9UCrM9Nt7ww3fLSDKtrSHizbN8JtrsTAvcg
|
|
||||||
oO/Nc8KMdpuMESTjwjbBmgVNjcJuH4fYA2VDQNPicLPSroe0n+I2J7htjdP1hBNGvvHmWjt53Tizen/z
|
|
||||||
hvEWDf4Wjf4WDQGWTQGW5KO/VVMAKVVAv1Cx92WZu071WMOGCaZNqIlmqGYW+o4JhhXjJZV+kio/SfU4
|
|
||||||
yY7xTLM/Ib5voqx9oqxronz/RPlBWnzi/jrHxhkQ0IS15blplucDrS7OsL4SZPPWLLsbwXa35jjcCXV8
|
|
||||||
f67jXbBG/GXnYYwUYK0x2qFtNEEMlyBFEXNFKCvL3Wavu81uNyLtJhfLOmeLakfzSkfzcgezMnuzUpSJ
|
|
||||||
PEI83DLQQJDpYVTua1bpZ17jZ143zqJ+vMWO8ZYN/paN/grcqlB+mcIfyrMXVfuNqvM3rQ8w3RFgCuKN
|
|
||||||
LPRqf73tfpLSsZIyX0m5b1/i46W7/aV7A2TtAbKuCfIDfNzjdI77G/UBPd3qfKD1RQwsQbbXSMKzvzkH
|
|
||||||
LdHxDjEQha7B+vocRw0v292etntQHqBsQ6sPayXodrYIbjebVlfrFmerRifLOkfgtqhyMK9wAHHzchvj
|
|
||||||
bF3hlJFvaIebM2VjzSp8zar9zGv9LOoJbsIa9atJu97PrNCZAWV+UeJl4+VFvuLiMeKSsZLtYxXEK0Dc
|
|
||||||
V1w5VlLjK2nwY3aOk+7xl7UFyDonKAR+wFd+YoJxz1QL1j0s4R4AfSHQ+sIMMhZenmV3dZYdIgeCxzsh
|
|
||||||
ju+GOkLRwE1Za3jY7PSwbYUzsNWHtTtbStBt7qTa3WxQ+1yt97hY7XKxanGybHC0qHcwr3EwB25Fmemt
|
|
||||||
lWq6+khHxNrrQtpVvpC2Rb/S/kVxV/uMKnGXq4CmVeQrLRgrLvQRF40hxREvGysuHyOuYKtqjKTel2ny
|
|
||||||
Y3aPl+71JwLvHCM7OdHkzBRzgO6dZnl2utU5FvTFGTaXZtpeCrK7Emx/NZjMyUgdN+Y4srjJCTWUhpt1
|
|
||||||
ozsynM0uD5vdHGvWJRSgSdm2Aa6bDT6CcoerotpcrPc4W+1yJrgbHS12OFrUOZjXstBr7M0qjaSLhMNM
|
|
||||||
p+hpJ7sYVPqaq0sbuBv8rQrGmKd4msQ4G4XbGQZb6k001RltJHPSZ6x0GGOpWE8ikoqEYqFQKBCgcAP/
|
|
||||||
xSfxJXwDvg3fjB/BD+LH8UvwqwrHmDeyoMs99cu89FQQo2r9TQp8Jfk+4vzRpAp8nhIvQfmIS33EZT7i
|
|
||||||
CtQYceUYSa2vpNGP2eUn3eslPTbR9NRk8zNTFazPBRLrgKIp6Muz7K/MskfYAOu3ZjvQ87SQ8y2ARmdD
|
|
||||||
nHCzbkGvA2t3ND0FaFJEvDZ7Xa1JsbfbXG3aQdnNthPF4XaxbmVxN7ECB/F6WrYm+friWdpD5EFGwgx3
|
|
||||||
I0g7y9NkrZPRQhuDiaZyF33GiBGbmJg4OTn5+fkFBgYuWLAgMjJy3bp1SUlJWVlZeXl527dvr6ioqK6u
|
|
||||||
rmNXbW1tVVVVWVlZYWFhdnZ2SkpKXFxcVFTUokWLZs6cOX78eBcXF1NT01GM2NVA6iEeNsdcstZFP3u0
|
|
||||||
ER905XjD/LFiDjRXwE1qtKh4tKhktHj7aIK7XIm7erSk2Ut+IMD0yESzE5PNT0+x6KGiBmj2jBIHGgn6
|
|
||||||
ajBhjcjBnRbXQHJwtqhClnCzakajc7dpZVnvcVPw3UMpu7DlSlijONZdbFHi+1ysdysFDuJw8AbC3bLR
|
|
||||||
3CiDEUwd9EeBePhQzZEj3N3dp06dunjx4vXr1+fk5FRWVoJdTU0NIALlDnY1sKuxsbFJuZr7Wy3sUvyH
|
|
||||||
t0pKSqKjo0dqj/Se7G3vZT9Se4SFXNvPWLLARp7gZrBtjE6/oEl5iwu8RWBd6C0q9u6L21Nc56nTOs64
|
|
||||||
3d/k4ASzo5PNTxLWVmcDrc/PsAFrgL40y56wZkFD11fZByKQOkgzxNCBfOZsUYGM7GrVCGm7Wu9ytd7N
|
|
||||||
IibFClYBegDW+9mixKnAdztY7rS1aLYybzI3a7Kw2Glt3WpqmiOTBY8caTBt2rTNmzeXlpaWl5cDMdQK
|
|
||||||
xPX19RxZkAK+nTt37mJXa2vrbnbtUa69AyzFl/fswTfHxsY6jXZKrU1FpVSnrExbOXvF7LGBYy2dLcWi
|
|
||||||
1+303phmNmy1g2aeGuh8LxGqgC3gLlLiLnUX13nptfiN2uVnsme8SWeA2aFJ5senWJ4mrG3OzySn7gjo
|
|
||||||
YAKasGZBU9YoChqFMa/MyaLKyXKHs1UzGp2rdSt4sUVZP8WtZA0boaz3u9sdQLnZHnCy2W9n1WFl0WZl
|
|
||||||
1WZj02Fn1+no2OXsvN/JiZSz8wFr6+36+gu0tEwnTZoUHx8PIUPFVL/gC7jAClKgtm/fvra2tnZ2dXR0
|
|
||||||
dLKrS7n2qy3FF7q66HfOmjUrcHFgVnNWVlNWZmNmRkNGxo6M9Pr0LXVbZLGyodOGvu78+v/o/Y+e+DUf
|
|
||||||
w8HhtiMyPYUsaEKZlCcpylqhbhdx3WiDJt9RmDZ3jjNuHW+6L8D0wCTzo1MsT06z7p1hew6siajREgno
|
|
||||||
K0rQtDQcTAsczAodTIvsUWYlDuaVThb1zpaNcAD4wECslbgJa1fbTkfrTnvr/dZWB2xsjjg4HHd2PuHm
|
|
||||||
dtLV9TjKxeWoi8thlLMz+YhydT1ib7/DyGilWOzs4+OzatUquAcQU82CL8V64MCBgwcPdrPr0KFDhw8f
|
|
||||||
PsKuo+w6prbo5+n34JsdHBxicmLy9uZt27Mtd3dubmvu1l1bs3dmR9VGCdOFWrFaWlFaWiu0hgcNH+w9
|
|
||||||
+DWT1xjh/3gbDA63HpHt8RT0U9woR1Gdj9GOsaMafI2b/cDaBKz3+Jt1TrQ4NMXqxDTrHsKanC6GexBd
|
|
||||||
s6fmcRtB8GTAKA170wI7kwJ700I7RRWzibgG9joA66e4naz32VnutbLYZw3Q9t0s3zNubr3u7mfZ6nVz
|
|
||||||
63FzO+3mdsrNDV8iRenjhrv7CReXAxYWKTo6U0aOZObOnUsvdgZtgizFCnwnTpw4efLkqVOnTp8+febM
|
|
||||||
mZ6enl7lOstbik/19uIb8G3on9ZO1iX7S1DFXcVFnUWowo7CgraCaVXTBOkCQZxAe4229mq2orQJ8eDh
|
|
||||||
gz0Gv2bwmr7gtQDDodH2mnzW+e5QtLR2jFHdGMrapNnPpGW8aau/2Z4A87YJlgenWB2bRk4XnwXrIPtL
|
|
||||||
wfYIJKcnmXaP1T3mP+rMZAsNO5N8lK1JAcoO0AnrIjvTUsRh5Ae0NeBGqODjdrbeY2+5x9pij7nZbviD
|
|
||||||
o+NBF5cjLi7HWIigeRqI3d3PeXhcYOs8W4Q7ysPjjLJ62Or19Dzn4FBrbLyKYdypwOmbVIEXwAHi+fPn
|
|
||||||
L168eIldV65cuXr16rVr195SW/gkFr6K70Fumb5wevWJ6urj1VXHqiqPVlYcrag4UlF2qMy50lmUKRIm
|
|
||||||
CIXrhYJ1AkGsQBAj0I5mcS/V0lyg+ab/m2/YvDFo2P+zl74x1/zNTHchQOe5iLa76VT7GNX4jKobO6re
|
|
||||||
17jRz6R5nOlOf7PWAPO9Eyz2TbTsmmJ1ZJoNnOTIRJPucYbdfvonJpj0TEX4c0ABdJ4tKbAmpWRNpG1v
|
|
||||||
hnmvli9tJ6vdtpa7Lc13w4Lhv05OUPEhFPUE1iWAG2olrMHX0/Oip+dlL68r7EfUJRQ+6eXVp7y9L48e
|
|
||||||
fcXL65yd3fZRo5ZKJE4IauhmsG9QA77r16+//fbbN2/efOedd26x6za77vAW/cy77Jo8eXJ8QXzT+abG
|
|
||||||
c42NZxsbzjbU99TXnakrP1luWG0ozhGLkkSijSJRgkgYT4gL1wkF0QLtZdpaYVpa87S0QrVGBo0c6jH0
|
|
||||||
NaPX9IWvTRk1LN5aq8xDr2q0Uc2YUbVjCOh6XxPCerzZLn/z1gkWcJKmMYY7vHSbPOVtvkaHJlicnmbb
|
|
||||||
G2h/bob9+Rn2BLS+eLqtyTa21HE/lba9RZONebO5WYuNTZuDA/obENMioClrmC9bxBlgF2Dt6XkeZL29
|
|
||||||
r3p7v+XtfX30aK7e8vG55uODj09rzJjrY8a8PXbsO6NHX3J0rDI2DpPJ3Dw9PSMiIpCajx8//t57791l
|
|
||||||
17179+6z68GDBx+oLRi6jbMN+O55a8/ua7tbr7W2Xm3ddWVXy6WWtUfXSuukkq0S8RaxOEUsThaLE8Wi
|
|
||||||
zazAY4WC5QLBMoF2mLb2Am2t+Qrib45/8w3TN4Sv//d0I2Gykx6mTbCuG0tAQ9o1ow2qvPTK3WSVbrI6
|
|
||||||
L/3msca7/a3aJ1p3T7Y5NtX21HS7nkD7syxrjWH/85qOwM/KaEt/uIm0rU2KLUzKTIyrrKxaHBzanJxI
|
|
||||||
inB2PsgWAe3iwikadcTN7aib2zHWhU/BHOAMlPXo0W/7+NwcM+bWmDHv0ho7ltYttnDjtq/vHT8/1Ht+
|
|
||||||
fnd9fC6gXFx2WFltNDAIkkis/P39YSzIhbDvDz/88OHDhx+z69GjR5988gn9iJWZmRkSGdJ5u7Pjdkf7
|
|
||||||
u+2kbrXvu7lv3419k7snM7WMJF8iyZJIMiWSDIlki0SSJhEniUVxIuEqoXC5ULBEIFgsECxiiS/U1p6v
|
|
||||||
rTlGE1OVl5eXrtbwyfqCBFtmu5u82JkpdJRsd5VVeurX+Rg3jbNsGWe509+q1d9qT4DVvgDr/ZNsj0yx
|
|
||||||
PTnN7kygPaStkeJqMF5HkxnpbKYXq2StwG1lnG82Kt/IMN/MrMzGptbOrtnBodXREaxhGoS1i0s3S5nK
|
|
||||||
mVP0UXf3Y2wdd3c/6el52sur19v7AswBsoVgKVBf3/dBEzVu3D227rP1gK0Pxo37cOzYG2PH3vTzu+Xn
|
|
||||||
d3vcuPd8fa+5u++0t081M5uvq+umrS1EgIMXY3RE/4SxfM6uL774AiNiRn1G973u7vvd+Hjw7kHU/vf2
|
|
||||||
d93pst1vK62RMkUMk8cwuQyzlSHEsyTiNLFog0i0RiSKEokiRcAtXCYULhFqL9IeOX/kEKshBgYGGDhf
|
|
||||||
f/31YcOGCwa9PkFHM8lBp3q0ce0Y03pfs3pf80Y/C8J6vNUuBWvrvRNsOifaHp5iewKsp9tp5HmZ5HiO
|
|
||||||
mmkoFAwdNUq2mIK2Nt5mZpRrZJhralpsZVVua1vNVo2dXYODQ4uj414npw5n5y4XF7A+5OqKIpTd3Kic
|
|
||||||
FaA9PI6jPD0p6x5v73PwhDFjroKgr++7fn7vs2Q/HD/+o/HjH44f/8jf/1FAAOqTgIDHKEp//PgPAgI+
|
|
||||||
mDDhg0mTPpoy5aPAwIdBQQ+Dgz+eNq3H37/J23uLo+MSc3N/XV0LOzu7gICAiRMnWmPKurGn672u/Xf3
|
|
||||||
H7x3kOBGPejOuJ4h65IBtLREKi2UMvmMJE8izhULs4SCFIHmOs2Rq0YOXz58WPiwIWFD3pj3xushr/9x
|
|
||||||
9h9fn/3G/4j+aGnpNG7czFmzli1ZEh8aGuXpGWAk0JpjKsvzgIeY7fAz3+Fn0TjOonm8FVjvBO4A6z0T
|
|
||||||
COv2iTbdk21hIxpFo03zvAnrxeaM5iCBnmi6mdHWUYZbTU0LLC2329hAy+U2NpUoJe46e/tmR8dWJ6c2
|
|
||||||
lvUBV9duN7fDbAExLQVlCtrLC3XKy+uMt3evj8/5MWMujx37lq/vO7AI0Bw//kMW8eMJEz6bMOGLiRO/
|
|
||||||
mDTpi8mT8fHjyZMfTZ36ybRpnwQGPp458/GsWZ/OmfPp3Lmfzp//aVjYZ0uXfhYZ+fnq1Z/Hxn4eF/d4
|
|
||||||
zZprkZEH7e2D5kaHtd/uarvdue9W+9532nbf2NP6duuu67vGdI15o+KN17Nefz3t9deTSb2R9MagpEGD
|
|
||||||
Ng0avG7I4KjBgyOHDl325rBlw99cPnJEhObICG2t5cKRMwXDho2IiEhYtmxTRMTmyMjkqKjU1avTw8LW
|
|
||||||
entPsJOKIqz1a30J6IZxYG0J1s3+Vjv9rcF6N4u7bYLNgUm2GmVjTYt9COutnsazTZk//Nd/aWqOHjUq
|
|
||||||
ydq6FKUETVjb2lbZ2VXb2UHXtfb29Y6OLU5Oe1xcOlxdD7i5dbu7H3Z3P+LhcdTDA5SPeXoC8QlaLOiT
|
|
||||||
3t6nvL1Pe3v3jB59dsyYC8Dt6/uWn987sAV///v+/g9Z1gTx1KlfBgZ+OWPGpzNnfhocDLifhYR8Nm/e
|
|
||||||
5wsXfrFo0RdLl34REfHFihVfRkd/uW7dlwkJXyYmfrVly9fZ2V9nZn4oYnSL91ceeXj6yEenjjw8dfTj
|
|
||||||
U0cfnTrGlvVxO6ZFLqmQS0rlkhJS4iKZuFAmypWKUqXCjYwwTiJcKxHESARrJILVYpT2KvFIH21XVz/A
|
|
||||||
XbkybdWqtDVrstauzV63buuGDQWbNhUvXrze3X28r4F0k/OohnGWKMLa3xrFsW7xs2oaba1R4WsG1uke
|
|
||||||
xtPN5HpCLRjchAkTBAI7Q8OV1tZltADa1halYG1vX2NvX+vgANaNzs6tLi5tbm5d7u4HwRqgPT0p5eNe
|
|
||||||
XkDMp0xq9OjTbPX4+JxVqvuan9/NcePujB9/PyDg4YQJn06a9CVYz5jx+ezZn4eEfDl//pdhYV8tXvxV
|
|
||||||
RMRXUVHfREd/Exv7TVzcN5s2/Skl5U8ZGX/euvXPhYV/KSv7duXKxolzAo89OnPskzPHH5858bjn5Kc9
|
|
||||||
J/HxcU/SrTTpIR2mQQkatZ1lXSgT58pEKVLRZkYYzwjXM8J1jDCW4YgPt9QKDFy8Zk1GTExWbOzW9evz
|
|
||||||
4uMLN20qSU4uT0urycioz85unD8/Wl8oDLHQK/Exaxxv2QQD8bfe4WtV621V42lV7WFZ62GhUe1nvtrR
|
|
||||||
0E1PguwZFxeXlpaWnJw8b9684cOlOjozLS23saJWsLazq7Szq7K3J6xZ0KgdTk7Nrq573Nw63N0PeHgc
|
|
||||||
8vQ84uV1zMuLgPb2BmJafUD7+Jxhi+AeM+bc2LEXx4694uf39rhx744ff9ff/8MJEz6BgUyf/uWsWV+F
|
|
||||||
hn4dFvZ1ePg3K1b8KTr6T+vW/Sk+/k+JiX/esuXPOTl/KSj4trT026qqvzY2/s3PLzy5MuPkp70nP+s9
|
|
||||||
9fnZ02ydwu3PeidemCpt12HqdZgqHaacrTI5iog6h4KWijYoK05BXLBYMlyoBTmvW7ctLi4/IQEqLklM
|
|
||||||
rEhLq87M3JGT07xtW2t+/t6iorbU1Mrp0xe660qjbUdVeVlWuJMqd7eocDOvckeZacy21NUTC1esWJGb
|
|
||||||
m7t161Zko4yMjC1btqCh+/r6isUexsZrbW3LWEUDdAVY29tXOThUY5xzdKxzcgLoBmfnRheXXW5u+9zd
|
|
||||||
Oz08Dnp5HfbyOurtfdzbm7IGX1pUzk9LSRzeDeLnx4695Ot7lRL3978bEPARBD55MtT9VUgIwR0R8c2q
|
|
||||||
VYQ15JyaSkAXFX1bXv7Xurq/pqaedBnjvf/9I4TyZwrKtNo/6TI5ZSFt1WFqWdAVbBHWOpIiuThTJk6R
|
|
||||||
ihOlogS24tliiWtPFHt4+G/YkA8Vb9xYvHlzWWpqVXp6XXZ2U15ea2FhGyJPWdnBlJQDS5d2Tp3aaWWV
|
|
||||||
POIN7ck68kwHkzJXs3I3RVUCdFBQUFZWVlFREYaC/Pz8vLw8EMfKzs7G5+fPn6+pqaenN9vaOs/ODqDL
|
|
||||||
7e0ButLBocrRscbRsdbJibBmQaOaXF13ubu3eXh0eXp2e3kd8fY+Nnr0idGjT7I1IG5UX40T4kqN34LG
|
|
||||||
AwKg8cewlMBAIvBFi75ZvvybNWuItIF769a/FBd/O2VK/Mq02BOPe0/0VTQq8sYq6SFdpkmHqdZhKtli
|
|
||||||
WRMDyZeLtwC0TJwoE2+k9ZS4pp1w9uxIVsWlyckQck1mZn1OTkt29p74+PYlS7oCAw/4+cEzD8A/nZx2
|
|
||||||
4fgGKIaZaactWm1mUOZqWu5mWuZGPmqUsQtTAAIpVgm7itkF+lhJSUnITAzjYWoaY29f4eAAyqQcHavB
|
|
||||||
2tm51tm5ztkZrBvYF9CBdbObG8Xd6eXVzb6iQB23Kmh+KYn3wlWUMoeP3+DJ/DGVOaAvXkwsZdGiy6Ms
|
|
||||||
7Wp7Wo9+3HvsUe+xT3qPc8Q/O+vS6yFt02F2qIFGS8yVi9NZ0Jtl4k282igTLmVGigToe/HxpdHRFUuX
|
|
||||||
Vs2ZUz1lSr2fX4uHx26kAGfnvc7OuIEAhlzQAMpwVPagL9XXjxQP0QrWl4MyLY0KdtGHOaqrq+nHmpoa
|
|
||||||
7iMWPrl69WptbR19/Rk2NpmYj1FOTtVsEdYuLnUuLvUuLg3QtZJ1i7v7Lg+PfZ6enZ6exExY4seVrFXh
|
|
||||||
9ls8mT+FrlT6O+PHk7gSEPAx7MXMLDVk1fIDD3oPPujt/qC3+8PeQx/1Hn7Ye+Rhb9LNLNFBPcEOHUGF
|
|
||||||
XFgmF5aSEuFjiUyYLxNskQlSZILNMkGCVDuelNYGqWacdOR66dAxIgODSe7uBc7ORXZ2SLq0iIXCPMEU
|
|
||||||
LYrappOTovAZOCq+ikPf1DRJIPAbyzBpdqMIaAqUPozU0NBAHzfiP8CBhdtY5eXlCxYsYBh7E5Mljo7l
|
|
||||||
Tk5Vzs6gzBXB7epaz76Kn7w2lL7My81tp7v7Hk/Pdi+vA97eh/rifl7itPjclQ6DLnrZw+OAVM+0sLOu
|
|
||||||
697prntn9pPqUdT9Ho9jE99skr9ZKnuzQPZmnuzNfNnwPFJv5siGpcmGJkiHxkmHxkiHrpEOiWZ4JXlN
|
|
||||||
X0tHJ9zcPNXcPI2tDEvLLGvrbba2Rba2pax5AjT4tjg773R23sV+RDVB2g4OmDYQ0rZLpbNttYQx5gYa
|
|
||||||
QLxjx47Gxsbm5mb66EZbW1tHR0cX+ygGPfuOj1j4b2dnJxrmtGnTdHXHWlrGOjtXs1Xj4gLKtIi0WdYK
|
|
||||||
J1HipgJvg8C9vA56e/8UgasXRW9ktHrmsrCuuye77p5S1D1F5d2oEnUYDatihhYyQ7cxQ3OZoVtJDcmR
|
|
||||||
DEmXDN4kHhwnHrxWPHg1LRFXbwQK/vCHEcbGG0xM4k1NN5qZJVpYpFlaZlpZ5draltjZlTk41Dg5NYEv
|
|
||||||
rMPVda+r6z5kAfYG8u5OfIlVN8aOcn39ZTpDtTQ4xHv37m1vbwfNQ4cOHT169AS7zpw5c/r06Z6eHnrq
|
|
||||||
HZ85fvw4vpqYmCgS6RgaTrWxSaK4XVyAeyDi5IWLPOK7WeJdrIOThvnvEMd+MromeW1VLGjV8jseOLRZ
|
|
||||||
MnS7eGieeOg28dBc8dCtpIZkiYakiAbHCQfHCgevEQ5erVp/dNASCscbG69Xgk42N99iZZVtY5MPC2Z9
|
|
||||||
Y4eLSwuba9sxRrCTRCebcTvc3PYig7HSxrRRgSNg1KjVGvAEqmJo9vDhw8eOHQPQs2fPXrhw4dKlS5cv
|
|
||||||
X77GnmXHxytXruC/58+f7+3txR0Aya9du1YiMRk1KtjOLl2pbg66Cm7qJxxuSpxYCo/4T9G4gcHK4MjF
|
|
||||||
fLhcVd7aKe00GVojGVrEglZSHpojHpIuGrKJBb1WFTFq0CLBHwQjdHXDjY3jTEwSTE03m5mlWFhAzvCN
|
|
||||||
YogUudbZucXFZTcou7sDMQaIg2wdYEFD3dA1LBtWXmJjk2ttnaGxb98+GEJ3dzd0CtkCMfgC640bN27d
|
|
||||||
uvXuu+/euXPnPXbhBj6Dz4M7oFPicHBkcIaxMDaeY2eX4ewM46b1o4i38lyF83EElR/wcchKz9Sq+EC9
|
|
||||||
CmJaU06GDNvJDC0TD81Xk3OqaPAGVs4xqpRRr4/VHjHC1dh4HawDcjY1TYScWYPOg+2i16EH8uaGA8iy
|
|
||||||
+MhWp7s7DASujVGuwtER3wxDz7OxydGAMOEV8AT4w8WLF69evQqU4Pv+++8/ePCAnvbF+uijj3D7gw8+
|
|
||||||
uH//PiX+9ttvQ+AQPn4QXXTZsmUMYzlq1Bxb2y083D9MnO8q6JweHnt5MlexclXourqLF65bqcKXVs27
|
|
||||||
rfIus6G1kqHF/cl584ByRv2PwUipNFjpG5uUvpFjY1PAujNGB2x2KyIsTbEs37301ccuLki60Du8BSEY
|
|
||||||
JoPEAtDZGrCLkydPUiGDHRDfvXsXiAH3k08++eyzz+h5XroeP3788ccfgzhwQ+McbqgbZlJfX8/iNjUy
|
|
||||||
QgpM7IubloqVD9Q51aGrKJ1wx1Fs7eZe27NbBTEtIuddA8g5TTQ4Xjh4Xf9yfmOKYOhQaypnExPIGb6R
|
|
||||||
amGRwbZBUCN5A3MDpjN2QINNNyt3ATLH5+uxm4hkjo64S0rs7QsB2s4uVwOODEywgps3b0KqIEgRA+tX
|
|
||||||
X331zTff/OlPf/ozu3Dj66+//vLLL0Ef3wCNU3W/8847MBPcT7i38NvQXaOiosRifUPDiZaWa9VYczWQ
|
|
||||||
zNWhE+6svSCVP+UukUxfnbVRhS+tsneaiDv3K+cM0ZBEpZyjVSmjXrPSFIkmsXKOMzWFogE6CZHDyirT
|
|
||||||
xmarrS2aYREIgiPMgc21ZOOVO4L/wlgqnJzw1VKUknW+Bo59ODJgQaFwhkePHoEjEAPrX/7yl7/+9a9/
|
|
||||||
U64nT57gv5Q4cH/66af4ZvzIvXv3cBzgfoLtwHxg3PB6ZJi4uLhx48bp6nqZmS1xcMjtS1mlVKCrKl2d
|
|
||||||
+6hR0WOmT26/fbTz7gmuuhSFsDF92E7JkNIfL+dZ2n8YMhyBDDkBf2LUqBhj41gTk/VmZvEWFpssLdNs
|
|
||||||
bLKgUBgCyxpdsdLJqZK3I7hNimWNrxLcDg7bHRyKNSBGOADsAoZAhQzZgiaY/v3vf6cvr8XCDbo43Pi2
|
|
||||||
L774gpoJrAaeTp0EBwc1bjgSGmxmZuasWbNg30ZGgVZWcbxtGqj6sRcVvWM/RTL9tB3bOu8eV6+st4pE
|
|
||||||
7QZDq0VDioVDtgmHbFXU4Gzh4HTh4EThoDjBoFjBoGjBoNW0tAetUtQfHUdoaXkYGCwxMFhmaLjcyGgl
|
|
||||||
cJuYrDUz22BuvtnSMgX5wdY2x94erAtZ1qUQL7CyfLld4FgrpA3W5ELdcAD4AJDRS/pAyNAvmIIvfXE+
|
|
||||||
1nfswn8pdHzDt99+i2+G9nHfcE6CwwIHx/Xr1znjprgxxMNPBAKhjo67icl8W9tU3mY9u1R6KUEvkwWF
|
|
||||||
rl7SefdYv+V22Hdoo3BIqWBIvmBIrmDIVsGQHFKDswSDUwSDNmgPWqc9aM1TuFy9Ear1h5HD8Mv19ReD
|
|
||||||
taEhWK8YNSrKxGSNmdl6c/ONFhZJ1tZb0Nns7LaxoLezoCllPmgU/cxTaWuADiQJH6B2AbVCsxQxyNJL
|
|
||||||
IPyf8lqV+C/HGnqn0oaPc05C+yRn3Cq4ESKzsrLmzp2LYUdPz8fUdLFaRPnhMjGJcfTxrjvb2vn+MfVa
|
|
||||||
c2HjiH3M0CrhkELBkG18ytqDt2gP3qw9aL3WoLVag1ZrDVqlWq+5DB850klPb6G+fhhlbWQUwYKOMTUl
|
|
||||||
oKFoGxsoeqvSPQBaXc78UrC2sUnVAGWYMt8u1Clzi7LmS7tfJ6HGrYKbjpfHjh1DmsQgmpycHBwcDOK6
|
|
||||||
ut7QuI3NZrWt7KewhyMF0oTSLSp8uTI74DB0h2BIiWBIXl85Z2gPTtYeFKc1KFZr0BpVxKg35mn+QXso
|
|
||||||
w0zT01ugpwfQ4VC0kVGksfEqU1NYBzw60cqKejTkXADbZeVc/gzQ2CnsGroUdlODM2UVu2AV3IcyXfTz
|
|
||||||
fNy4bzgnwa/iUiAfN8yEejdaJZIJ5njEyoMHD2IuBfHQ0FC4ikzmCB+3sFhlb5+jssVc4bieHbVIBS5X
|
|
||||||
M0/PH7ZbOLSCNQ2+nDNZOW96ppxdh48Y4airC8oL9PUXsdYBOa+Eb5iarmPlnGxtnQ6DZuVMfYOT81PQ
|
|
||||||
2HjsAnYEu4OdCgwMjImJKSwsJO+VxTflfoWsvlRYU9yQNn7VM3DTVolkQoMgpiT4CQSO6b+joyM3N3f5
|
|
||||||
8uUBAQFisR6sfNSoWZaWq+3ts7l9gLjcxvkOZBrbrpcyHUZD6wRDivvKOVswOF17cJKScr9yDlWR82JW
|
|
||||||
zstZOcegE1pYbGblnIlEbGfHyVkBGhuJTcUGY7Ox8WPHjl2wYMHmzZu5c861tbUaUCIOf1AeyC4GWkTY
|
|
||||||
ak7yDNy0VdIhHoESuZvzEypwODg9QYgknpaWFh4ejnQoEjEymQMiuYHBTKmeQWpdjgpfrlwOjxnaLBhS
|
|
||||||
ptYDIedU7UEJWoPWaQ2KUUVM6zUnuLMzT87wDch5hbFxNCvnBFbOW2xtFW3Q1jbTwmKticlCQ8MJ2Dxs
|
|
||||||
pI+PD45LJNqioiL+mWcMcfTkqOIdOn8sZW71i5satwpurlUiCNLcTc+ZUIHThgkH5xNva2traWnJzs5e
|
|
||||||
uXKlsbHxssRlbbfb2u50tN/pan/vQMd73R3vHep4/0jn+0cX9EYM2ysaWikYUsSaBkBzPRBy5npgtCpi
|
|
||||||
1OvBI/8wYqhMNoOTs4HBUipn2gZNTVeNGhU+alSInt5kudxLIrEQChlXV9epU6cuWbIkKSmpvLxchSyF
|
|
||||||
y3/1Anlz359MmVvPgxutEsmEBkHkbs5POIFzDs4nDlcBcUz2syNnH/vkGOrIx0cOfXTo4IOD++/v77zb
|
|
||||||
2f5ee961fFm7zqCaoYOKhg7KfXNQzvDBOSMGZ49EDUofOShZc9AGzUGxmoNiNPsixn9J/Y/N0BEj7KTS
|
|
||||||
iQwznmHGSCToXS5CoZ1AYKGtbaCpKdHT07OxsYFmZ86cGRERAU+AbKktAC5HlnvYhIPLvXoBiiHvCw46
|
|
||||||
lJQC209d9Jc8Gzed4Pl+QgVOHRyzJSXOaRyukpKS4jvNt+Viy4lPT5x4TOr44+NP65PjY3rGCNoEmrWa
|
|
||||||
I7aPGF44/M28N4fmDh26dejgzMGDUge9kfDG67Gv/3HNH/8Y9cc/ruhbK//42qTX/t8b/08ikejq6uKg
|
|
||||||
sbKycnR09PLyQqtAKIJ9rVu3Lj09HUdVfn5+cXExfd0N9EsfkKJn8zmyu3bt4l63ALjt7e1QCY5OtH0N
|
|
||||||
KmQsBa1/e9HfpoKbSyY0d9Mxh/rJw4cPOQdXJw7V2LrYFrYXnvz0JIqw5oqFvvjaYvFhsWinSFgjFFYI
|
|
||||||
hWVCYalQuF0oKBYICgSCbIF2irZ2orb2Rm3teFJa8VpPK05ruN1wPz+/xYsXg+nSpUvRjWFT0dHR4JuQ
|
|
||||||
kIBElJGRgS5dUFBQVlZWWVkJxBAvlS3VLJ8sFn1dCIWLPo/jEkcn2r4G5aKA9PMt+mv5uLEobggcuFUE
|
|
||||||
DuKcpXDEsZV6hnrJFcmnPj916jNSJz87SYqFjtp6Z6vxcWPxHrGoXiSqEonKRU9BFwkEuQLtNG0CerOC
|
|
||||||
skqNnDoSngCfhTUB8YoVK1atWoU0tn79+o0bN4JyZmYmKMMoIGTc5RQx+AIuyGJRzdKH/ShZLO5FIbBB
|
|
||||||
HJc4OtH2CWgFm19gqeDmBE79hAocxCFwODhnKZQ4vBsIojOjT39xmtTnpwluWiz0A58ccOlxkXRKxE1i
|
|
||||||
cbVYXCkGaFGZSFQqEpYIhflC8jTRVIEgSSDYJBAkqJZ2pPZwk+Gw3cjISKgYiNesWRMbGxsfH5+YmIjY
|
|
||||||
w72iFEKGEUPC0C+FC7JoHmghVLMIqZQsfcAPUYrCxUGJYQ0dCGOEhgLJL7k43HyBc37COTi1FI74hg0b
|
|
||||||
lsQtOfPlGVJfkFIQZ6GjplycIj0kZXYxkjqJpEoirhCLy8XiMrFou0hUJBJtFQnThMJkoXCzULhRKNgo
|
|
||||||
UJQStOYYTfqSGRgF1tq1a/EXN23ahJYAU+aEDC+Giili8IVsqRugeaCFUM1yZOlrbRClEKhggPS1ILdv
|
|
||||||
38Yx+muA5hZHXEXg6sShppDIkIP3Dire++DLHgVxJfSIGxE6J3Ske6RMA8NUM0wVI6mQSMolkjKJuEQs
|
|
||||||
zhOLMkSiNJEoSSTcJCS1sU9pz9MewYyAXUDCsGPkXzgygtqWLVtycnLQ9yBkeAXaHfobfcya8oVmKVb0
|
|
||||||
D4oVmkVHAVnIlpKF71G4sEH0HnQgHKO/Kmi6ONx8gfOJYycDwwL3vb2v96teVM9X5E0mSCmhp72fZnrK
|
|
||||||
VNYukzZJpXVSCpqpIAXQkkKJJEciTheLUxUvURFt6lPCdUItB61Zs2bBJcAXKgbi1NRU3Lvbtm1DtKio
|
|
||||||
qIBXwIvR3IAYngvxgi91A4qVEyxGMJBFVAXZu3fvgix8j8KFDSLO4ujEMfobgOYWRxy4OeLYw0lzJiHM
|
|
||||||
PX3bFBY3B732Ya3DWQd5l1y2UyarZ5/BXyWVVpJiyhimhGG2MeTFKWkSSbIEoElt7lPak7R9fX0BF+0O
|
|
||||||
fKFiIKZegWiBaAw7RvgFYpgvJHzu3DnwBVy0Dc4KkEopVqpZzGKULLo6yFK4SFbo9uj5OEZ/S9Dc4ojD
|
|
||||||
DQOCAnac2XH267Oop6yVdfiLw6MvjNY5rCNvlcsaZbJamaxGJqsiJa2QSkul0gIpk8Uw6YwkVSJJ7KdE
|
|
||||||
i0Ra+lpwDBgxQgWMgqY3HEYIyPAK2DEiGowCKgZiGC7EC77QLOBSrGCKVEqxUs1iFuPIotMALjwQC90e
|
|
||||||
PR+u+EKApgs68p/hX3eqjlJWKQp68pXJusd0dfbqyJvk8nq5vFYur5HLq+WEdZlMWiRlchgmk2G2MEwK
|
|
||||||
wySplmSDROAiCAsLA18sGEVhYWFJSQm8ggoZHQ9ChhfDKKiK4Qzgy7cCjikWWjfFyieLTkPhwgaRr+CH
|
|
||||||
cMUXBTRGLGi57nQd93ZWiuKxnnN9ju5JXZ12HXlLH8rkXfEqZLISmWybTJollaaTt/WQJvcpJpmAFk0S
|
|
||||||
TZkyBaENiyKGV0DICMjUkREqIGT0OhgxjAIWAcOFeKkVcFhhBRzWgchi0d7Ddv1/vhCgsauTQyYTx1Ch
|
|
||||||
zKvFNxcbnDbQ7dAlb4y3Q/l+3uwbAZH3pt8ul+XLZNnsm6ekqVKmJVkoEegKEJDhxRQxFTJNb5g7YBdw
|
|
||||||
ZMQJCBlGjMwAFUO/1BAAF0wBlDLlY+2XLBYaD9vyyez924PGbs9YNKPlUosKWX6tvLVy1JlRul0s5Ubl
|
|
||||||
m3lzlMvk5I2ABng7XlrSNVKhvXD16tVAXFpaCsRIb2i8oIwxj6OMxIaUBsoQMvwXlKFfqlmKlQLFokzp
|
|
||||||
4rByZLFo48Giu/lbgsYOoCOFrgxtu9mmQpZfMbdjyHt479clbyCmTrmcfWP6HJnira1SVRHTEvmK5s2b
|
|
||||||
B8T0lAWEDLtoYd9oE2MIAhzmDlBG30PTo08IgFFAxdAvRcwBpWsgrFiK3eu7fjPQaC+YFJYlLDv04JAK
|
|
||||||
WX6tu7NOlTJMg1Kukssr5ORd6bcS0+j3jelpSWZIBAIBcgV9yn1NTQ3SBVrfHvZdNkEZAx4cA5Q5LYMy
|
|
||||||
LBj+AFugiClWBUvlUuzMc6zfBjQaupGpUWxOrApWlQJl8x5z3QPPpLyNpQzTGIAys4gRGgkRlrkzyJQy
|
|
||||||
HAMx7hD79m2cL4My1TIoQ8iwCCCmfBWb/lPXbwAau+fk5ZRem66CVaUUjgHKu3V0mpSU6ZsNUsol7Fvw
|
|
||||||
PtuaV0lFdqK1a9fS147Qk5yUMgbr7u7uEydOICwjYyDGISMjwKH1US1TI4aQ/33KWL8qaKgDvWhC8ISy
|
|
||||||
g2UqWFUK3e+pY/SlTN5sEJS3y+V5P9QAE6Rib/HixYs5yrT77WLfIe/AgQM0L1++fBnDNMIyzRjofmh9
|
|
||||||
nCn/LHLG+vVAo8msX79+YczCfdf3qWBVqfCb4SRjqPgyR5kNc+TNdyll9fd2VJYkgLwrPaUM06irq0Na
|
|
||||||
R16m5+GoNXMNED0DYRkxDi365zUNun4l0Bi3bJxsEgoTMN2pYFWpkOshhqcNSZL79ygzMxiBRIDZmm/N
|
|
||||||
iBlogAhzsGYMJufPn7/W3xsK/rymQdcvDhpbj2EX88j2/dtVmKrUkS+PkLf5P6WnmEqeTbnf9ylVFhPK
|
|
||||||
CA0UDRCLhjm+NR8/fhzj3xX2PXbv3r2L2Q+D3y9kGnT9sqBxeCJdrExe2XWnSwWrStU/qve55KN3XE+3
|
|
||||||
vS9lNmP0T3mAyMyEMyIzUXx8PL8BqlgzUjOSDx2ykZphGpitfyHToEtje1HiL1HpqdHTpoz1muCRVpdy
|
|
||||||
9OPDz65NN+ItjpkJ27UEDVra1ZraZZrapZraJZraxaS0Ckdq5Y3U2jpSa8tIzaQRmptHaG4coblhhGZc
|
|
||||||
PzViwZvDjAf7+DiHzJ4UOmfS3NAp8+dODVswfdHCGUvDgyIj5kStmBezeuG6teEJG5YlblyRlrw6c8ua
|
|
||||||
7MzYbTlx+dviC/MSivI3FhdsKincrLJH/2b9IopubW01tzFflbrqB4WMQsCw6LHQPairu0dXp1ntPAZN
|
|
||||||
cs+nZRLmnETLly/ntMw1QEyA1JqRmmHNSM3UmmmeoxMgnU24wUSxMz/T6qPo0uIkWmUlycpKKd+OSkVV
|
|
||||||
lKLSKsrSKsu2oKrK0xVVkVFNKrOmMjM+LsLX121SyIRtu7cee3REtT7pU10POyac9ZccFglbBcJ6bWG1
|
|
||||||
trBcW1imLSzVFm4nJSjWEhRoCXK1BBla2ila2kla2pu1tBO0tOO1BLQSnpZ2pOYI++Hj/EZHrVy8Kip8
|
|
||||||
9aqlMdERsWsjN8RFbUxYk5y4Lj0tPic7qSA/vbQkp7oyv2HH9p3NFXt313a0NR7o2nmoe/eRw3uPH207
|
|
||||||
cbzz1InOM6f2nzl1oOf0wZ4zB3vPdPf2HDrbe/gc6uyR82ePXjh37ML5YxfPH7944cSliycvXzx1+dKp
|
|
||||||
K5dPX7185uqVnmtXet662vvWtbPXr527/ta5t6+ff/v6hZ9N0Qj8qampPpN8UqpSznxxRkW26lX0QZHX
|
|
||||||
Ra9+TFlFy5j9uKlk4O4nXScVe4kXLFjAhTluAkTM4Bpgb28vl5r7teafN2nw18+g6KyM9cFBE8xsTZYn
|
|
||||||
Ltt5pVlVxfxSannRlYVGRw2EbdrCJm1BjbagUilkTstFWoJ8LcFWLe10Te0UTYWW458WX9HaqzRHuAz3
|
|
||||||
9naLWrEoagXkvCR69bK1ayLi1q2M3xCduGltWmpcZsbmvG0pxYWZFWW5dTVFTQ2lu3dV79tT19XRdHD/
|
|
||||||
zsOcnI91nDzRefpk14ul6AcPHhQVFVnaWy7fvLz5QrOKZvut5k+aJ16ZqHdajyRlzNZqpkwCBrRcxp6T
|
|
||||||
o2eLBp79UNL1UvFocUhISEVFBadlGubQKlRiBp1N+Cc0uNNGv5A1c+snKjotOXrWzABDU/15q0PLDm1X
|
|
||||||
Ve4AFXktwuy4iahDIGzWFtRqCSq1BGXaglJtAatiUiXagkItQZ6WIEtLO5XVcqKm9iZNvpZpUUVrRxEt
|
|
||||||
e3k6r4gMW7liMdyZWPOaZetiYc2rNiXEpCSvz0jfmJuTVJifXrY9uwrWXF/SQqy5pn3fjv2dzd0HdkHO
|
|
||||||
Rw/vPXYMcm6HO5862fVCKPrcuXNJSUn2rvYrklY09jaqCHagQkyGkPVP62OwVqSLhgFMGQGDnsVHDXzm
|
|
||||||
EyWNIb4cGhpKtYzFaZlGZvpMAXoKlB8zfunZpN/1vIrOz01YtmS2l6ej02iHFSnL63trjz06rCxV5arU
|
|
||||||
/MtziSO3s46sELKWoFRLsF1LAAmjqCkjYGzVEqQjYMCUNbU3a2pvhJZpqSpae5nmCLs3fXzcVywPo3Je
|
|
||||||
HbVkTfTStTHLYc2bEDOSYrekxudkJeZtS91enFlZvq2+trCpoax1J7HmzvaGg/tbug/sPHKIyBnufPxY
|
|
||||||
28njHb+lopE6MzMz9Q31Zyyakbkj8+hHR1XU+ozacm8LiRYn+zpyXyH3MeVcXsAYICyjmOUM8nJ4eDg/
|
|
||||||
Y/DHv66uLvrQFDb+6tWrdM7+iH2JHz9m/ArWzK0BFb0pYTmGKycHS0cv+yXxi0oOFh19dJhfz1Z04Xv5
|
|
||||||
vj1jmENi4R5tYSOihZaggidkomVS2lxSVjVllXqqZa25I4ebDvP391kesRByZmPG4jWrl8TGLF+/bkVC
|
|
||||||
/OrEzYgZG7IyN27bipiRUV62tbamAKl5V0vFntaajrYGNmm0HDrYCjkfO7L32JF9cOcTx9t/VUVfvHgR
|
|
||||||
QQLG5+ztHL4uvGBfwcnHJ1V0+uza/Xj37OuzySMjh3R125QZmUYLdSGXk6SsOLOMqe+ZpoxiQsl5jOjo
|
|
||||||
aBUtc77MaZmezoeWucj8JftyVf6jU7+Olukiik5NXrU0PMh/vKe5maGDh+3cVSEZDVs6brcpzkX0FTJX
|
|
||||||
6opu+aAp+EIQ7JjkihZtQb2WoEpLUM53ZKWQizS1CzW1t2lpZ/cV8lNTVimiZc2JI95khs4InLA8YkHk
|
|
||||||
8oWw5qiVi6JXLVkbs4xoecOqpM0xqcnrMzM25m5NLirYUsZOgDvqiluaylt3VbfthTVjCGxGcD50cNfR
|
|
||||||
w3tQx4/uY+PzL6/owMBASwfLwIWBcXlxNSdqfvB8cb+179N9C28stDlro3eUPcnZytoxP1dwQuY9EKU4
|
|
||||||
fUFNeeCkjJImSCUBEoFEsGXLFv55DDr70byMjDGQltUfaf01tUyXxrbdW9tu7eVOpPVTalqmReVc+n7J
|
|
||||||
1HOTjY4YCDu0hTu1iIqr+6pYRcgFELKmdramFl/ICSr67VNaSzVHOL3p4my3aGEwq+UFKyPDVhEth69d
|
|
||||||
s2x9LLQclbiJajlhKyJzQVppSXZVxbZ6MgGWwZqVqZnIGUnjcDfnzsgbv5aiVbT5/JV9P3vylcnkkT14
|
|
||||||
cfsPqLiPIz+3kFHMIkZkJ+Ie96Narq+vb2xspA+X0Nnv6NGjyMtcxlDRMndmjjub8SvLGUtDVb/q1VfI
|
|
||||||
ux60hF9eZH/SVtQtEOzREjRqCWo1BVWaRMWchHkqJkKGHUPIuZraWRDySK3kkVqJmlo/JGTUSJiybOjk
|
|
||||||
Sb4RS+dFLJun0HLUoujVS9auiVgfG0m0vDEmNUWp5fy07cVZVRW5dTWFjQ3bdzaV724l1tzV0bC/E0lD
|
|
||||||
IWcU3PnFVXTG/YxpV6dZ9lrqHSO5mAx4LcpE0a+KqR1XKjMyfQIGosVzCJlMfb5igeCpKfPDMj2/3NHR
|
|
||||||
0d3dTc9jICzRZ35yeZlmjBdBy3T9sKIzb6VPPz/V/Jip8KA2kXCTlnatpnY1JKwpKNUUbGerBNVXxTRX
|
|
||||||
5Glq52hqZ2gSFSdByCO1No3UShiptUETpY1SUzFKc/aI4ebDvD2dwxeHRCydq9DyioVEy4qMEZkQv4r4
|
|
||||||
csq6zPQE9lRGamkJtLy1trqgkZxoLt+9q6ptT11H2w7I+UAXDc4kbMCd2WnwxVD0ia9OZN3PQhx2OudE
|
|
||||||
zrR181xYXcJ9VfzUjpErCthnxVE7xrD3zIyMIuliikSoL4yNjeWEzDfl3bt304BBH8bu7e2l5+ToeQz6
|
|
||||||
/FrMfioZ47fVMl19FF30XsGSK4u9T3sYHtEXHlDqt05Tu0pTu0L5UN529tE8ImG2ipU3IORi1o7zWTvO
|
|
||||||
5Ox4pNbmkVoboWJ+9aNozXkjhtu+6exsGxoyfemSkGVLQpcTLc9fuSJs9crFa6Ix+0VsWL9iY/yqpMS1
|
|
||||||
W1LXZ2Vg9ksszN9Suj2rkvgytIzIXAYt79tT276vrpPIGUmjqfsAOa1xuHsXzRu/jaKLPyyOuhWF/OBw
|
|
||||||
zoE8AfmwLvHffexEN5B+n6Hi7XJ5ofI8Mp30YMcDn7WgRYQ8TSI0EkZFRfHTBZeUMfXtU14IEabMBYyb
|
|
||||||
N2/S54o/Yq+5RZ9iq56Xf1st06UhPKAl2KslQARuUIq3nCdepX77FPvgNNEybhSNVHjxVtaLVVQcryJk
|
|
||||||
rp4qWjNkxHCbYY4O1rNnTVkSPgdahi8vj5i3MnIBO/iFx6xZuj52+Ya4lZs3Ricnrd2SFpeduSkvl539
|
|
||||||
tmdWlSu03NxY2rqTROa2vbWw5s72HQc6m9g5sJm682+s6H6Uqy5eWnwJ8xMFjcbUi59bxShEC8x7Qj3h
|
|
||||||
Kvad9tSFjHRBH/FDUj7CvgbtLHshxOvXr8OU7927x4Xlb/pe3uU3mf2evTQGlC2/WAkrisSJkdr5I7Vz
|
|
||||||
R2pnk+daEAmjIGGaKAZUMa/iNEdOGf7mqKFurvZzQ6YTIYfPYU157gqYciQJGGtWh8euXRbHBoykzWtS
|
|
||||||
kxEw4rdmb87fllxcmF62neTl+tqCxnr4cunuXdBy9b499IQGGQJRB4mc4c6KvPFbK1pFtvwaSMKIE5wR
|
|
||||||
c4nih6IxVxj2xO7igICAhIQElWihLuTDhw+fUF43lbsQIkz54+e4stkLtTRUxYvi65c+UahgpFY++1yh
|
|
||||||
rJFaaSO0ktn6YSNWLc2wEcPdhw3TGuLn67F4UXD44tnQ8jKY8rK5kcvmrVi+YNXKsOjVi2Njlq6LXR4P
|
|
||||||
U94UnZK4Np2YcgIbMDD4pVeUZVdXbSNaJhmjtJWcZa5ktQxrJnKmwZlk5xdU0er6RVXI5aVkriOnjDkX
|
|
||||||
5iT8HEZMS7qKtWNDYVhYWGFhIWfHdNhDRqbRAvOeupBpurijvG7qs035BdQyXRp99FukqRAvfa5b5kjN
|
|
||||||
LSM0k0eQZ7wljtDaPEJr0withBFa8SO04kaoqHWg0lw2YsTYN4fpDHFxsZ01a+LiMAg5eMni2UuXzIlg
|
|
||||||
kzJMOWrlwuhVi9ZGL1m3NiI+bsXmjUjKa7akrsvM2LA1exNrymmlJGBg8MvbUVfQ1FCysxkZA+NfJay5
|
|
||||||
bW8NtNzRVt/ZXs+e1iDZ+cVTtIp4ESHgv/SxO06/NEj80FynUkTFEyVCE2FwcHBaWhpVMT1lQe2YnrWg
|
|
||||||
wx4y8sGDB2m0UBcyPX3xed/rpr7gpqyyNLRyR2ohPGSM1ExjlcuKlzxjkz5pM2GEZrziiZpExfxSEy9X
|
|
||||||
IxcMH+41bJh0iJOjdeD08YsWBi0OmxW+KHgphBwesmwpmy4i56+CkFcvXrtmybpYCDlyU0JU8uaYtJTY
|
|
||||||
zPS4nOyNeblJRQUppcXp5WVZNZVba2vyGuoKqZZ3tZTDl6k1t+/FEFgLLbPuTAz6BVW0QrkoKJczX4j3
|
|
||||||
uf2XX0wYIx4tFuoI586dm5mZ2a+KW1paWvu+dwMd9mhGfuuttxAtBhIy0oXKo9cvvpbp0iCy5ZSrFG+/
|
|
||||||
9QxFa64YMWLim8MshhgZ6Xp7Os2ZNTls4UxOyHDkZXDkpaErls9duWLBqqiFayDkmKVxEPKGFZsSWEdO
|
|
||||||
WZuRFrc1a+O23M2F+SklRWnlMOWKnJoqhOX8xvqi5saSnU3QchkiM9UykfO+2o59cGeEjRdf0T9JuVwx
|
|
||||||
4YxkPDHiiRMnxsTEcBKmAx6XKODFnIq72HcVOHr0KLXjCxcu0Es10OsI0IxMo4W6kF/8dDHQ0lCR7TOK
|
|
||||||
L+eRi4cPHzdsmNmQIUMGubrYTp82buG8GWHzZ4QtCFoUFhS+aBaixdLw2cuWzomMmLsyct6qFQtXRy1a
|
|
||||||
uyZ83dqlG9ZHJGwg0SIlMXpLKufImwvykkuKtpRtz6gsz66u3FoPU64vbNpBtbydaHknsea9u2lqrkG9
|
|
||||||
VIpWE+kzCkGCmcGIXcRCGbmObFxcHH+0oxLmjBi5mD6m19HRQb2YqvjMmTPnz5+/fPky344//PBD+iJ3
|
|
||||||
7joCNFq87ELm1nMpeuSCN4l+LYYM1RxsbWXiO8ZtTvCkBfMCF8wPXDg/kNhx2EyoeGk4UXHEspDIiNAV
|
|
||||||
kfOiVixYHRUWE70oNmbJhnVsQE6IStq8OjU5Jj11XVbGhtychLxczHsQclrZ9i0VpVnVFTl1Ndsa6vIb
|
|
||||||
dxRAyy1NVMul0PLuXeV7iZyr9u1BvUKKlsZKmbmMZJxEZCUSCAT0OshF7DU5IV6qXwQJzoU5Ce9TXhmO
|
|
||||||
Xrns+PHjSBS9vb3Ui69fv05VfO/evQ8++IDaMc0V9CE+DHvqGfnlFTK3+ih6ZMTwETOHDfceCvMdqjXY
|
|
||||||
2FjPxdlmQoD3vNCp8+dOWzBv2oL50xcuCFyklPCSxUTFMOLlS6Fi1otXLohetTAmevG6tUviYpex6XhF
|
|
||||||
0uZVKUmY9GKz0tfnZMXn5mws2JZYVJBcWgwhp1eWZVVX5tRWs6bMarm5Ab5cvLOpBFpuhZx3le8hSaPi
|
|
||||||
5VY0YgMTSMIvUS4j+MHrIMN/aYrg9EvnOrhwd3c3lfAp9uJwMGLk4mvKd4N677334MXqKv4L+yYkfDt+
|
|
||||||
lYTMLQ19XamVpbGHu92EAK+Q4Enz2BfmKcRLCvqdAf0uDpu5ZHHQEjZLREDCy0IQiqNWQMLzWQmTRLE+
|
|
||||||
lk0U8cs3b1wJFacSFa/NSl+XnRnH2vHmovykksKU7cWp5SRaZLJCzq2vQVLOa6xHWC6ElluaiJZ3NpdA
|
|
||||||
y607kTQQnF8JRUOwfM1i0dhAlQvnpREY4kUKhnjhv9DvAfbKnNAvhjoECc6FOQlzRoxcjAGPXlyLRmNO
|
|
||||||
xfx0/EqqmL80FsyfBuWGLUAR8S5eSMQbvgjiZf13CfQ7m9Vv6MrIuatWzotetWDNKpolwuNil8SvXwYJ
|
|
||||||
w4gTN0WlJK1OS1mTnrY2M319dlZcbnZCfu6mwnzYcdL2otTSEuSKjKpyOHJ2bRUx5R2123bAlOvzmxqg
|
|
||||||
ZSJnquVdzUga2181RVO3hWZ3P991kCFeBOFz585R/V69ehVDHfT77rvvci788OFDhGJqxF+xb7iFXMwl
|
|
||||||
iv8cFfOXxtLwWcuWoIKXL5sdGYFBLmRlZGjUirmrqP+S8xJha9dAv4vj1i3ZsH5p/IaITfGRiRtXJpMs
|
|
||||||
sSotJXoLJLwlNjsDEt6wbWtC/raNBXmbiwqh4pRSYsdbKsvI62qrK7Ig5LrqrXU1udByQz3ryyRjFDY3
|
|
||||||
FrWQUrjzq6loCBZuSzX7PNdBvnnzJiLE7du332evH0ktmAYJ7hJ8cGEqYRUj/k9TMX9prI5CbJi/ZvWC
|
|
||||||
mOiFsWvC1q1dtH6tUrxxyzbGR27eGJm4aUXy5qhU6DcZ+o3J2EKyRA5x4bhtOfF5ucjFmwrzEoupikuI
|
|
||||||
iivIq2vhyBk1lVk1ldl11TlIFztqiZZ31G1jtZzfhPGPuvN/gqJhtRd/zHWQIV5ECL5+YcFckFBx4f9k
|
|
||||||
CassjY0blm1KiNicsDxxY2TSJkxxMF9WvDDf1DXpqTGZ6WuzMmJzMtdtzVrPuvCG/NyEgm0bi/I3Fxcg
|
|
||||||
FydtL04pK0GlkdfVlqZXlqdXwZErM2urkC6IllFUyw11qDylO/+HKRpW+6Oug8z3X75+qYSh398l3O/S
|
|
||||||
SE+NzkiLztiyJnPLmqz0tdkZyA+xrHjhv8SCqX4L8jYVF0DCiSXkFYlJpcXkRbVlxI5TWTveAjumV+1Q
|
|
||||||
aLlaoeX6mq2o3xVN3v0Ni7otNEsnNypb2C6nXIQHFfFy/vu7fp9naeQS2cblbd2Ays+NL9iWUMBeV4gt
|
|
||||||
ouKSQhTiBH2BeErZ9hTWixVX7SBa5l2BhmSMKuTl3xWtpmi+YKlmVWSLpaJcLMXd9Pt67qVRmLcRRSXM
|
|
||||||
ipcU73XhimscoJ7nmkq/K3pARbMxQSFYLIVi2aW4L35fP8fS4CSscnUDZfV/BZrfFf2jFa0A/vv6hdfP
|
|
||||||
cJWw3xX9u6JfoPW7on9X9Ku1flf074p+tdbviv5d0a/S+r//+/8BPTxUq6Ub7iwAAAAASUVORK5CYII=
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
168
Unity Studio/ExportOptions.Designer.cs
generated
168
Unity Studio/ExportOptions.Designer.cs
generated
@@ -46,10 +46,9 @@
|
|||||||
this.scaleLabel = new System.Windows.Forms.Label();
|
this.scaleLabel = new System.Windows.Forms.Label();
|
||||||
this.fbxOKbutton = new System.Windows.Forms.Button();
|
this.fbxOKbutton = new System.Windows.Forms.Button();
|
||||||
this.fbxCancel = new System.Windows.Forms.Button();
|
this.fbxCancel = new System.Windows.Forms.Button();
|
||||||
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
|
|
||||||
this.showExpOpt = new System.Windows.Forms.CheckBox();
|
this.showExpOpt = new System.Windows.Forms.CheckBox();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.convertfsb = new System.Windows.Forms.CheckBox();
|
this.convertAudio = new System.Windows.Forms.CheckBox();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
this.tojpg = new System.Windows.Forms.RadioButton();
|
this.tojpg = new System.Windows.Forms.RadioButton();
|
||||||
this.topng = new System.Windows.Forms.RadioButton();
|
this.topng = new System.Windows.Forms.RadioButton();
|
||||||
@@ -72,11 +71,9 @@
|
|||||||
this.includeBox.Controls.Add(this.camerasBox);
|
this.includeBox.Controls.Add(this.camerasBox);
|
||||||
this.includeBox.Controls.Add(this.exportDeformers);
|
this.includeBox.Controls.Add(this.exportDeformers);
|
||||||
this.includeBox.Controls.Add(this.geometryBox);
|
this.includeBox.Controls.Add(this.geometryBox);
|
||||||
this.includeBox.Location = new System.Drawing.Point(16, 15);
|
this.includeBox.Location = new System.Drawing.Point(12, 12);
|
||||||
this.includeBox.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.includeBox.Name = "includeBox";
|
this.includeBox.Name = "includeBox";
|
||||||
this.includeBox.Padding = new System.Windows.Forms.Padding(4);
|
this.includeBox.Size = new System.Drawing.Size(249, 267);
|
||||||
this.includeBox.Size = new System.Drawing.Size(332, 334);
|
|
||||||
this.includeBox.TabIndex = 0;
|
this.includeBox.TabIndex = 0;
|
||||||
this.includeBox.TabStop = false;
|
this.includeBox.TabStop = false;
|
||||||
this.includeBox.Text = "Include";
|
this.includeBox.Text = "Include";
|
||||||
@@ -84,10 +81,9 @@
|
|||||||
// convertDummies
|
// convertDummies
|
||||||
//
|
//
|
||||||
this.convertDummies.AutoSize = true;
|
this.convertDummies.AutoSize = true;
|
||||||
this.convertDummies.Location = new System.Drawing.Point(19, 205);
|
this.convertDummies.Location = new System.Drawing.Point(14, 164);
|
||||||
this.convertDummies.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.convertDummies.Name = "convertDummies";
|
this.convertDummies.Name = "convertDummies";
|
||||||
this.convertDummies.Size = new System.Drawing.Size(302, 20);
|
this.convertDummies.Size = new System.Drawing.Size(228, 16);
|
||||||
this.convertDummies.TabIndex = 5;
|
this.convertDummies.TabIndex = 5;
|
||||||
this.convertDummies.Text = "Convert Deforming Dummies to Bones";
|
this.convertDummies.Text = "Convert Deforming Dummies to Bones";
|
||||||
this.convertDummies.UseVisualStyleBackColor = true;
|
this.convertDummies.UseVisualStyleBackColor = true;
|
||||||
@@ -97,10 +93,9 @@
|
|||||||
//
|
//
|
||||||
this.embedBox.AutoSize = true;
|
this.embedBox.AutoSize = true;
|
||||||
this.embedBox.Enabled = false;
|
this.embedBox.Enabled = false;
|
||||||
this.embedBox.Location = new System.Drawing.Point(19, 288);
|
this.embedBox.Location = new System.Drawing.Point(14, 230);
|
||||||
this.embedBox.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.embedBox.Name = "embedBox";
|
this.embedBox.Name = "embedBox";
|
||||||
this.embedBox.Size = new System.Drawing.Size(118, 20);
|
this.embedBox.Size = new System.Drawing.Size(90, 16);
|
||||||
this.embedBox.TabIndex = 4;
|
this.embedBox.TabIndex = 4;
|
||||||
this.embedBox.Text = "Embed Media";
|
this.embedBox.Text = "Embed Media";
|
||||||
this.embedBox.UseVisualStyleBackColor = true;
|
this.embedBox.UseVisualStyleBackColor = true;
|
||||||
@@ -109,10 +104,9 @@
|
|||||||
//
|
//
|
||||||
this.lightsBox.AutoSize = true;
|
this.lightsBox.AutoSize = true;
|
||||||
this.lightsBox.Enabled = false;
|
this.lightsBox.Enabled = false;
|
||||||
this.lightsBox.Location = new System.Drawing.Point(19, 260);
|
this.lightsBox.Location = new System.Drawing.Point(14, 208);
|
||||||
this.lightsBox.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.lightsBox.Name = "lightsBox";
|
this.lightsBox.Name = "lightsBox";
|
||||||
this.lightsBox.Size = new System.Drawing.Size(78, 20);
|
this.lightsBox.Size = new System.Drawing.Size(60, 16);
|
||||||
this.lightsBox.TabIndex = 3;
|
this.lightsBox.TabIndex = 3;
|
||||||
this.lightsBox.Text = "Lights";
|
this.lightsBox.Text = "Lights";
|
||||||
this.lightsBox.UseVisualStyleBackColor = true;
|
this.lightsBox.UseVisualStyleBackColor = true;
|
||||||
@@ -121,10 +115,9 @@
|
|||||||
//
|
//
|
||||||
this.camerasBox.AutoSize = true;
|
this.camerasBox.AutoSize = true;
|
||||||
this.camerasBox.Enabled = false;
|
this.camerasBox.Enabled = false;
|
||||||
this.camerasBox.Location = new System.Drawing.Point(19, 232);
|
this.camerasBox.Location = new System.Drawing.Point(14, 186);
|
||||||
this.camerasBox.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.camerasBox.Name = "camerasBox";
|
this.camerasBox.Name = "camerasBox";
|
||||||
this.camerasBox.Size = new System.Drawing.Size(86, 20);
|
this.camerasBox.Size = new System.Drawing.Size(66, 16);
|
||||||
this.camerasBox.TabIndex = 2;
|
this.camerasBox.TabIndex = 2;
|
||||||
this.camerasBox.Text = "Cameras";
|
this.camerasBox.Text = "Cameras";
|
||||||
this.camerasBox.UseVisualStyleBackColor = true;
|
this.camerasBox.UseVisualStyleBackColor = true;
|
||||||
@@ -132,10 +125,9 @@
|
|||||||
// exportDeformers
|
// exportDeformers
|
||||||
//
|
//
|
||||||
this.exportDeformers.AutoSize = true;
|
this.exportDeformers.AutoSize = true;
|
||||||
this.exportDeformers.Location = new System.Drawing.Point(19, 178);
|
this.exportDeformers.Location = new System.Drawing.Point(14, 142);
|
||||||
this.exportDeformers.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.exportDeformers.Name = "exportDeformers";
|
this.exportDeformers.Name = "exportDeformers";
|
||||||
this.exportDeformers.Size = new System.Drawing.Size(142, 20);
|
this.exportDeformers.Size = new System.Drawing.Size(108, 16);
|
||||||
this.exportDeformers.TabIndex = 1;
|
this.exportDeformers.TabIndex = 1;
|
||||||
this.exportDeformers.Text = "Skin Deformers";
|
this.exportDeformers.Text = "Skin Deformers";
|
||||||
this.exportDeformers.UseVisualStyleBackColor = true;
|
this.exportDeformers.UseVisualStyleBackColor = true;
|
||||||
@@ -148,11 +140,9 @@
|
|||||||
this.geometryBox.Controls.Add(this.exportUVs);
|
this.geometryBox.Controls.Add(this.exportUVs);
|
||||||
this.geometryBox.Controls.Add(this.exportTangents);
|
this.geometryBox.Controls.Add(this.exportTangents);
|
||||||
this.geometryBox.Controls.Add(this.exportNormals);
|
this.geometryBox.Controls.Add(this.exportNormals);
|
||||||
this.geometryBox.Location = new System.Drawing.Point(9, 22);
|
this.geometryBox.Location = new System.Drawing.Point(7, 18);
|
||||||
this.geometryBox.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.geometryBox.Name = "geometryBox";
|
this.geometryBox.Name = "geometryBox";
|
||||||
this.geometryBox.Padding = new System.Windows.Forms.Padding(4);
|
this.geometryBox.Size = new System.Drawing.Size(235, 122);
|
||||||
this.geometryBox.Size = new System.Drawing.Size(313, 152);
|
|
||||||
this.geometryBox.TabIndex = 0;
|
this.geometryBox.TabIndex = 0;
|
||||||
this.geometryBox.TabStop = false;
|
this.geometryBox.TabStop = false;
|
||||||
this.geometryBox.Text = "Geometry";
|
this.geometryBox.Text = "Geometry";
|
||||||
@@ -162,10 +152,9 @@
|
|||||||
this.exportColors.AutoSize = true;
|
this.exportColors.AutoSize = true;
|
||||||
this.exportColors.Checked = true;
|
this.exportColors.Checked = true;
|
||||||
this.exportColors.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.exportColors.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.exportColors.Location = new System.Drawing.Point(9, 106);
|
this.exportColors.Location = new System.Drawing.Point(7, 85);
|
||||||
this.exportColors.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.exportColors.Name = "exportColors";
|
this.exportColors.Name = "exportColors";
|
||||||
this.exportColors.Size = new System.Drawing.Size(134, 20);
|
this.exportColors.Size = new System.Drawing.Size(102, 16);
|
||||||
this.exportColors.TabIndex = 3;
|
this.exportColors.TabIndex = 3;
|
||||||
this.exportColors.Text = "Vertex Colors";
|
this.exportColors.Text = "Vertex Colors";
|
||||||
this.exportColors.UseVisualStyleBackColor = true;
|
this.exportColors.UseVisualStyleBackColor = true;
|
||||||
@@ -176,10 +165,9 @@
|
|||||||
this.exportUVs.AutoSize = true;
|
this.exportUVs.AutoSize = true;
|
||||||
this.exportUVs.Checked = true;
|
this.exportUVs.Checked = true;
|
||||||
this.exportUVs.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.exportUVs.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.exportUVs.Location = new System.Drawing.Point(9, 79);
|
this.exportUVs.Location = new System.Drawing.Point(7, 63);
|
||||||
this.exportUVs.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.exportUVs.Name = "exportUVs";
|
this.exportUVs.Name = "exportUVs";
|
||||||
this.exportUVs.Size = new System.Drawing.Size(142, 20);
|
this.exportUVs.Size = new System.Drawing.Size(108, 16);
|
||||||
this.exportUVs.TabIndex = 2;
|
this.exportUVs.TabIndex = 2;
|
||||||
this.exportUVs.Text = "UV Coordinates";
|
this.exportUVs.Text = "UV Coordinates";
|
||||||
this.exportUVs.UseVisualStyleBackColor = true;
|
this.exportUVs.UseVisualStyleBackColor = true;
|
||||||
@@ -188,10 +176,9 @@
|
|||||||
// exportTangents
|
// exportTangents
|
||||||
//
|
//
|
||||||
this.exportTangents.AutoSize = true;
|
this.exportTangents.AutoSize = true;
|
||||||
this.exportTangents.Location = new System.Drawing.Point(9, 51);
|
this.exportTangents.Location = new System.Drawing.Point(7, 41);
|
||||||
this.exportTangents.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.exportTangents.Name = "exportTangents";
|
this.exportTangents.Name = "exportTangents";
|
||||||
this.exportTangents.Size = new System.Drawing.Size(94, 20);
|
this.exportTangents.Size = new System.Drawing.Size(72, 16);
|
||||||
this.exportTangents.TabIndex = 1;
|
this.exportTangents.TabIndex = 1;
|
||||||
this.exportTangents.Text = "Tangents";
|
this.exportTangents.Text = "Tangents";
|
||||||
this.exportTangents.UseVisualStyleBackColor = true;
|
this.exportTangents.UseVisualStyleBackColor = true;
|
||||||
@@ -202,10 +189,9 @@
|
|||||||
this.exportNormals.AutoSize = true;
|
this.exportNormals.AutoSize = true;
|
||||||
this.exportNormals.Checked = true;
|
this.exportNormals.Checked = true;
|
||||||
this.exportNormals.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.exportNormals.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.exportNormals.Location = new System.Drawing.Point(9, 22);
|
this.exportNormals.Location = new System.Drawing.Point(7, 18);
|
||||||
this.exportNormals.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.exportNormals.Name = "exportNormals";
|
this.exportNormals.Name = "exportNormals";
|
||||||
this.exportNormals.Size = new System.Drawing.Size(86, 20);
|
this.exportNormals.Size = new System.Drawing.Size(66, 16);
|
||||||
this.exportNormals.TabIndex = 0;
|
this.exportNormals.TabIndex = 0;
|
||||||
this.exportNormals.Text = "Normals";
|
this.exportNormals.Text = "Normals";
|
||||||
this.exportNormals.UseVisualStyleBackColor = true;
|
this.exportNormals.UseVisualStyleBackColor = true;
|
||||||
@@ -218,11 +204,9 @@
|
|||||||
this.advancedBox.Controls.Add(this.upAxis);
|
this.advancedBox.Controls.Add(this.upAxis);
|
||||||
this.advancedBox.Controls.Add(this.scaleFactor);
|
this.advancedBox.Controls.Add(this.scaleFactor);
|
||||||
this.advancedBox.Controls.Add(this.scaleLabel);
|
this.advancedBox.Controls.Add(this.scaleLabel);
|
||||||
this.advancedBox.Location = new System.Drawing.Point(16, 355);
|
this.advancedBox.Location = new System.Drawing.Point(12, 284);
|
||||||
this.advancedBox.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.advancedBox.Name = "advancedBox";
|
this.advancedBox.Name = "advancedBox";
|
||||||
this.advancedBox.Padding = new System.Windows.Forms.Padding(4);
|
this.advancedBox.Size = new System.Drawing.Size(249, 78);
|
||||||
this.advancedBox.Size = new System.Drawing.Size(332, 96);
|
|
||||||
this.advancedBox.TabIndex = 5;
|
this.advancedBox.TabIndex = 5;
|
||||||
this.advancedBox.TabStop = false;
|
this.advancedBox.TabStop = false;
|
||||||
this.advancedBox.Text = "Advanced Options";
|
this.advancedBox.Text = "Advanced Options";
|
||||||
@@ -230,10 +214,9 @@
|
|||||||
// axisLabel
|
// axisLabel
|
||||||
//
|
//
|
||||||
this.axisLabel.AutoSize = true;
|
this.axisLabel.AutoSize = true;
|
||||||
this.axisLabel.Location = new System.Drawing.Point(8, 50);
|
this.axisLabel.Location = new System.Drawing.Point(6, 40);
|
||||||
this.axisLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
|
||||||
this.axisLabel.Name = "axisLabel";
|
this.axisLabel.Name = "axisLabel";
|
||||||
this.axisLabel.Size = new System.Drawing.Size(72, 16);
|
this.axisLabel.Size = new System.Drawing.Size(53, 12);
|
||||||
this.axisLabel.TabIndex = 3;
|
this.axisLabel.TabIndex = 3;
|
||||||
this.axisLabel.Text = "Up Axis:";
|
this.axisLabel.Text = "Up Axis:";
|
||||||
//
|
//
|
||||||
@@ -242,11 +225,10 @@
|
|||||||
this.upAxis.FormattingEnabled = true;
|
this.upAxis.FormattingEnabled = true;
|
||||||
this.upAxis.Items.AddRange(new object[] {
|
this.upAxis.Items.AddRange(new object[] {
|
||||||
"Y-up"});
|
"Y-up"});
|
||||||
this.upAxis.Location = new System.Drawing.Point(88, 47);
|
this.upAxis.Location = new System.Drawing.Point(66, 38);
|
||||||
this.upAxis.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.upAxis.MaxDropDownItems = 2;
|
this.upAxis.MaxDropDownItems = 2;
|
||||||
this.upAxis.Name = "upAxis";
|
this.upAxis.Name = "upAxis";
|
||||||
this.upAxis.Size = new System.Drawing.Size(92, 23);
|
this.upAxis.Size = new System.Drawing.Size(70, 20);
|
||||||
this.upAxis.TabIndex = 2;
|
this.upAxis.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// scaleFactor
|
// scaleFactor
|
||||||
@@ -257,10 +239,9 @@
|
|||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
131072});
|
131072});
|
||||||
this.scaleFactor.Location = new System.Drawing.Point(128, 17);
|
this.scaleFactor.Location = new System.Drawing.Point(96, 14);
|
||||||
this.scaleFactor.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.scaleFactor.Name = "scaleFactor";
|
this.scaleFactor.Name = "scaleFactor";
|
||||||
this.scaleFactor.Size = new System.Drawing.Size(61, 25);
|
this.scaleFactor.Size = new System.Drawing.Size(46, 21);
|
||||||
this.scaleFactor.TabIndex = 1;
|
this.scaleFactor.TabIndex = 1;
|
||||||
this.scaleFactor.Value = new decimal(new int[] {
|
this.scaleFactor.Value = new decimal(new int[] {
|
||||||
254,
|
254,
|
||||||
@@ -271,19 +252,17 @@
|
|||||||
// scaleLabel
|
// scaleLabel
|
||||||
//
|
//
|
||||||
this.scaleLabel.AutoSize = true;
|
this.scaleLabel.AutoSize = true;
|
||||||
this.scaleLabel.Location = new System.Drawing.Point(8, 19);
|
this.scaleLabel.Location = new System.Drawing.Point(6, 15);
|
||||||
this.scaleLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
|
||||||
this.scaleLabel.Name = "scaleLabel";
|
this.scaleLabel.Name = "scaleLabel";
|
||||||
this.scaleLabel.Size = new System.Drawing.Size(112, 16);
|
this.scaleLabel.Size = new System.Drawing.Size(83, 12);
|
||||||
this.scaleLabel.TabIndex = 0;
|
this.scaleLabel.TabIndex = 0;
|
||||||
this.scaleLabel.Text = "Scale Factor:";
|
this.scaleLabel.Text = "Scale Factor:";
|
||||||
//
|
//
|
||||||
// fbxOKbutton
|
// fbxOKbutton
|
||||||
//
|
//
|
||||||
this.fbxOKbutton.Location = new System.Drawing.Point(443, 455);
|
this.fbxOKbutton.Location = new System.Drawing.Point(332, 364);
|
||||||
this.fbxOKbutton.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.fbxOKbutton.Name = "fbxOKbutton";
|
this.fbxOKbutton.Name = "fbxOKbutton";
|
||||||
this.fbxOKbutton.Size = new System.Drawing.Size(100, 26);
|
this.fbxOKbutton.Size = new System.Drawing.Size(75, 21);
|
||||||
this.fbxOKbutton.TabIndex = 6;
|
this.fbxOKbutton.TabIndex = 6;
|
||||||
this.fbxOKbutton.Text = "OK";
|
this.fbxOKbutton.Text = "OK";
|
||||||
this.fbxOKbutton.UseVisualStyleBackColor = true;
|
this.fbxOKbutton.UseVisualStyleBackColor = true;
|
||||||
@@ -292,76 +271,64 @@
|
|||||||
// fbxCancel
|
// fbxCancel
|
||||||
//
|
//
|
||||||
this.fbxCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
this.fbxCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
this.fbxCancel.Location = new System.Drawing.Point(560, 455);
|
this.fbxCancel.Location = new System.Drawing.Point(420, 364);
|
||||||
this.fbxCancel.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.fbxCancel.Name = "fbxCancel";
|
this.fbxCancel.Name = "fbxCancel";
|
||||||
this.fbxCancel.Size = new System.Drawing.Size(100, 26);
|
this.fbxCancel.Size = new System.Drawing.Size(75, 21);
|
||||||
this.fbxCancel.TabIndex = 7;
|
this.fbxCancel.TabIndex = 7;
|
||||||
this.fbxCancel.Text = "Cancel";
|
this.fbxCancel.Text = "Cancel";
|
||||||
this.fbxCancel.UseVisualStyleBackColor = true;
|
this.fbxCancel.UseVisualStyleBackColor = true;
|
||||||
this.fbxCancel.Click += new System.EventHandler(this.fbxCancel_Click);
|
this.fbxCancel.Click += new System.EventHandler(this.fbxCancel_Click);
|
||||||
//
|
//
|
||||||
// saveFileDialog1
|
|
||||||
//
|
|
||||||
this.saveFileDialog1.Filter = "FBX file|*.fbx|Collada|*.dae";
|
|
||||||
this.saveFileDialog1.RestoreDirectory = true;
|
|
||||||
//
|
|
||||||
// showExpOpt
|
// showExpOpt
|
||||||
//
|
//
|
||||||
this.showExpOpt.AutoSize = true;
|
this.showExpOpt.AutoSize = true;
|
||||||
this.showExpOpt.Location = new System.Drawing.Point(16, 459);
|
this.showExpOpt.Location = new System.Drawing.Point(12, 367);
|
||||||
this.showExpOpt.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.showExpOpt.Name = "showExpOpt";
|
this.showExpOpt.Name = "showExpOpt";
|
||||||
this.showExpOpt.Size = new System.Drawing.Size(294, 20);
|
this.showExpOpt.Size = new System.Drawing.Size(222, 16);
|
||||||
this.showExpOpt.TabIndex = 8;
|
this.showExpOpt.TabIndex = 8;
|
||||||
this.showExpOpt.Text = "Show this dialog for every export";
|
this.showExpOpt.Text = "Show this dialog for every export";
|
||||||
this.showExpOpt.UseVisualStyleBackColor = true;
|
this.showExpOpt.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
this.groupBox1.Controls.Add(this.convertfsb);
|
this.groupBox1.Controls.Add(this.convertAudio);
|
||||||
this.groupBox1.Controls.Add(this.panel1);
|
this.groupBox1.Controls.Add(this.panel1);
|
||||||
this.groupBox1.Controls.Add(this.converttexture);
|
this.groupBox1.Controls.Add(this.converttexture);
|
||||||
this.groupBox1.Location = new System.Drawing.Point(356, 15);
|
this.groupBox1.Location = new System.Drawing.Point(267, 12);
|
||||||
this.groupBox1.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.Padding = new System.Windows.Forms.Padding(4);
|
this.groupBox1.Size = new System.Drawing.Size(228, 349);
|
||||||
this.groupBox1.Size = new System.Drawing.Size(304, 436);
|
|
||||||
this.groupBox1.TabIndex = 9;
|
this.groupBox1.TabIndex = 9;
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
this.groupBox1.Text = "Convert";
|
this.groupBox1.Text = "Convert";
|
||||||
//
|
//
|
||||||
// convertfsb
|
// convertAudio
|
||||||
//
|
//
|
||||||
this.convertfsb.AutoSize = true;
|
this.convertAudio.AutoSize = true;
|
||||||
this.convertfsb.Checked = true;
|
this.convertAudio.Checked = true;
|
||||||
this.convertfsb.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.convertAudio.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.convertfsb.Location = new System.Drawing.Point(11, 101);
|
this.convertAudio.Location = new System.Drawing.Point(8, 81);
|
||||||
this.convertfsb.Margin = new System.Windows.Forms.Padding(4);
|
this.convertAudio.Name = "convertAudio";
|
||||||
this.convertfsb.Name = "convertfsb";
|
this.convertAudio.Size = new System.Drawing.Size(198, 28);
|
||||||
this.convertfsb.Size = new System.Drawing.Size(174, 20);
|
this.convertAudio.TabIndex = 6;
|
||||||
this.convertfsb.TabIndex = 6;
|
this.convertAudio.Text = "Convert AudioClip to WAV(PCM)\r\n(If support)";
|
||||||
this.convertfsb.Text = "Convert FSB to WAV";
|
this.convertAudio.UseVisualStyleBackColor = true;
|
||||||
this.convertfsb.UseVisualStyleBackColor = true;
|
|
||||||
//
|
//
|
||||||
// panel1
|
// panel1
|
||||||
//
|
//
|
||||||
this.panel1.Controls.Add(this.tojpg);
|
this.panel1.Controls.Add(this.tojpg);
|
||||||
this.panel1.Controls.Add(this.topng);
|
this.panel1.Controls.Add(this.topng);
|
||||||
this.panel1.Controls.Add(this.tobmp);
|
this.panel1.Controls.Add(this.tobmp);
|
||||||
this.panel1.Location = new System.Drawing.Point(40, 52);
|
this.panel1.Location = new System.Drawing.Point(30, 42);
|
||||||
this.panel1.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.panel1.Name = "panel1";
|
this.panel1.Name = "panel1";
|
||||||
this.panel1.Size = new System.Drawing.Size(195, 38);
|
this.panel1.Size = new System.Drawing.Size(146, 30);
|
||||||
this.panel1.TabIndex = 5;
|
this.panel1.TabIndex = 5;
|
||||||
//
|
//
|
||||||
// tojpg
|
// tojpg
|
||||||
//
|
//
|
||||||
this.tojpg.AutoSize = true;
|
this.tojpg.AutoSize = true;
|
||||||
this.tojpg.Location = new System.Drawing.Point(129, 8);
|
this.tojpg.Location = new System.Drawing.Point(97, 6);
|
||||||
this.tojpg.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.tojpg.Name = "tojpg";
|
this.tojpg.Name = "tojpg";
|
||||||
this.tojpg.Size = new System.Drawing.Size(61, 20);
|
this.tojpg.Size = new System.Drawing.Size(47, 16);
|
||||||
this.tojpg.TabIndex = 4;
|
this.tojpg.TabIndex = 4;
|
||||||
this.tojpg.Text = "JPEG";
|
this.tojpg.Text = "JPEG";
|
||||||
this.tojpg.UseVisualStyleBackColor = true;
|
this.tojpg.UseVisualStyleBackColor = true;
|
||||||
@@ -370,10 +337,9 @@
|
|||||||
//
|
//
|
||||||
this.topng.AutoSize = true;
|
this.topng.AutoSize = true;
|
||||||
this.topng.Checked = true;
|
this.topng.Checked = true;
|
||||||
this.topng.Location = new System.Drawing.Point(67, 8);
|
this.topng.Location = new System.Drawing.Point(50, 6);
|
||||||
this.topng.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.topng.Name = "topng";
|
this.topng.Name = "topng";
|
||||||
this.topng.Size = new System.Drawing.Size(53, 20);
|
this.topng.Size = new System.Drawing.Size(41, 16);
|
||||||
this.topng.TabIndex = 3;
|
this.topng.TabIndex = 3;
|
||||||
this.topng.TabStop = true;
|
this.topng.TabStop = true;
|
||||||
this.topng.Text = "PNG";
|
this.topng.Text = "PNG";
|
||||||
@@ -382,10 +348,9 @@
|
|||||||
// tobmp
|
// tobmp
|
||||||
//
|
//
|
||||||
this.tobmp.AutoSize = true;
|
this.tobmp.AutoSize = true;
|
||||||
this.tobmp.Location = new System.Drawing.Point(4, 8);
|
this.tobmp.Location = new System.Drawing.Point(3, 6);
|
||||||
this.tobmp.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.tobmp.Name = "tobmp";
|
this.tobmp.Name = "tobmp";
|
||||||
this.tobmp.Size = new System.Drawing.Size(53, 20);
|
this.tobmp.Size = new System.Drawing.Size(41, 16);
|
||||||
this.tobmp.TabIndex = 2;
|
this.tobmp.TabIndex = 2;
|
||||||
this.tobmp.Text = "BMP";
|
this.tobmp.Text = "BMP";
|
||||||
this.tobmp.UseVisualStyleBackColor = true;
|
this.tobmp.UseVisualStyleBackColor = true;
|
||||||
@@ -395,10 +360,9 @@
|
|||||||
this.converttexture.AutoSize = true;
|
this.converttexture.AutoSize = true;
|
||||||
this.converttexture.Checked = true;
|
this.converttexture.Checked = true;
|
||||||
this.converttexture.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.converttexture.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.converttexture.Location = new System.Drawing.Point(11, 25);
|
this.converttexture.Location = new System.Drawing.Point(8, 20);
|
||||||
this.converttexture.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.converttexture.Name = "converttexture";
|
this.converttexture.Name = "converttexture";
|
||||||
this.converttexture.Size = new System.Drawing.Size(254, 20);
|
this.converttexture.Size = new System.Drawing.Size(192, 16);
|
||||||
this.converttexture.TabIndex = 1;
|
this.converttexture.TabIndex = 1;
|
||||||
this.converttexture.Text = "Convert Texture (If support)";
|
this.converttexture.Text = "Convert Texture (If support)";
|
||||||
this.converttexture.UseVisualStyleBackColor = true;
|
this.converttexture.UseVisualStyleBackColor = true;
|
||||||
@@ -406,17 +370,16 @@
|
|||||||
// ExportOptions
|
// ExportOptions
|
||||||
//
|
//
|
||||||
this.AcceptButton = this.fbxOKbutton;
|
this.AcceptButton = this.fbxOKbutton;
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.CancelButton = this.fbxCancel;
|
this.CancelButton = this.fbxCancel;
|
||||||
this.ClientSize = new System.Drawing.Size(684, 490);
|
this.ClientSize = new System.Drawing.Size(513, 392);
|
||||||
this.Controls.Add(this.groupBox1);
|
this.Controls.Add(this.groupBox1);
|
||||||
this.Controls.Add(this.showExpOpt);
|
this.Controls.Add(this.showExpOpt);
|
||||||
this.Controls.Add(this.fbxCancel);
|
this.Controls.Add(this.fbxCancel);
|
||||||
this.Controls.Add(this.fbxOKbutton);
|
this.Controls.Add(this.fbxOKbutton);
|
||||||
this.Controls.Add(this.advancedBox);
|
this.Controls.Add(this.advancedBox);
|
||||||
this.Controls.Add(this.includeBox);
|
this.Controls.Add(this.includeBox);
|
||||||
this.Margin = new System.Windows.Forms.Padding(4);
|
|
||||||
this.MaximizeBox = false;
|
this.MaximizeBox = false;
|
||||||
this.MinimizeBox = false;
|
this.MinimizeBox = false;
|
||||||
this.Name = "ExportOptions";
|
this.Name = "ExportOptions";
|
||||||
@@ -460,7 +423,6 @@
|
|||||||
private System.Windows.Forms.ComboBox upAxis;
|
private System.Windows.Forms.ComboBox upAxis;
|
||||||
private System.Windows.Forms.Button fbxOKbutton;
|
private System.Windows.Forms.Button fbxOKbutton;
|
||||||
private System.Windows.Forms.Button fbxCancel;
|
private System.Windows.Forms.Button fbxCancel;
|
||||||
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
|
|
||||||
private System.Windows.Forms.CheckBox showExpOpt;
|
private System.Windows.Forms.CheckBox showExpOpt;
|
||||||
private System.Windows.Forms.CheckBox convertDummies;
|
private System.Windows.Forms.CheckBox convertDummies;
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
@@ -468,7 +430,7 @@
|
|||||||
private System.Windows.Forms.RadioButton tojpg;
|
private System.Windows.Forms.RadioButton tojpg;
|
||||||
private System.Windows.Forms.RadioButton topng;
|
private System.Windows.Forms.RadioButton topng;
|
||||||
private System.Windows.Forms.RadioButton tobmp;
|
private System.Windows.Forms.RadioButton tobmp;
|
||||||
private System.Windows.Forms.CheckBox convertfsb;
|
private System.Windows.Forms.CheckBox convertAudio;
|
||||||
private System.Windows.Forms.Panel panel1;
|
private System.Windows.Forms.Panel panel1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ namespace Unity_Studio
|
|||||||
upAxis.SelectedIndex = (int)Properties.Settings.Default["upAxis"];
|
upAxis.SelectedIndex = (int)Properties.Settings.Default["upAxis"];
|
||||||
showExpOpt.Checked = (bool)Properties.Settings.Default["showExpOpt"];
|
showExpOpt.Checked = (bool)Properties.Settings.Default["showExpOpt"];
|
||||||
converttexture.Checked = (bool)Properties.Settings.Default["convertTexture"];
|
converttexture.Checked = (bool)Properties.Settings.Default["convertTexture"];
|
||||||
convertfsb.Checked = (bool)Properties.Settings.Default["convertfsb"];
|
convertAudio.Checked = (bool)Properties.Settings.Default["convertAudio"];
|
||||||
var str = (string)Properties.Settings.Default["convertType"];
|
var str = (string)Properties.Settings.Default["convertType"];
|
||||||
foreach (Control c in panel1.Controls)
|
foreach (Control c in panel1.Controls)
|
||||||
{
|
{
|
||||||
@@ -54,7 +54,7 @@ namespace Unity_Studio
|
|||||||
Properties.Settings.Default["scaleFactor"] = scaleFactor.Value;
|
Properties.Settings.Default["scaleFactor"] = scaleFactor.Value;
|
||||||
Properties.Settings.Default["upAxis"] = upAxis.SelectedIndex;
|
Properties.Settings.Default["upAxis"] = upAxis.SelectedIndex;
|
||||||
Properties.Settings.Default["convertTexture"] = converttexture.Checked;
|
Properties.Settings.Default["convertTexture"] = converttexture.Checked;
|
||||||
Properties.Settings.Default["convertfsb"] = convertfsb.Checked;
|
Properties.Settings.Default["convertAudio"] = convertAudio.Checked;
|
||||||
foreach (Control c in panel1.Controls)
|
foreach (Control c in panel1.Controls)
|
||||||
{
|
{
|
||||||
if (((RadioButton)c).Checked)
|
if (((RadioButton)c).Checked)
|
||||||
|
|||||||
@@ -117,7 +117,4 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
</root>
|
||||||
232
Unity Studio/OpenFolderDialog.cs
Normal file
232
Unity Studio/OpenFolderDialog.cs
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Unity_Studio
|
||||||
|
{
|
||||||
|
class OpenFolderDialog
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets/sets folder in which dialog will be open.
|
||||||
|
/// </summary>
|
||||||
|
public string InitialFolder { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets/sets directory in which dialog will be open if there is no recent directory available.
|
||||||
|
/// </summary>
|
||||||
|
public string DefaultFolder { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets selected folder.
|
||||||
|
/// </summary>
|
||||||
|
public string Folder { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
internal DialogResult ShowDialog(IWin32Window owner)
|
||||||
|
{
|
||||||
|
if (Environment.OSVersion.Version.Major >= 6)
|
||||||
|
{
|
||||||
|
return ShowVistaDialog(owner);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ShowLegacyDialog(owner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogResult ShowVistaDialog(IWin32Window owner)
|
||||||
|
{
|
||||||
|
var frm = (NativeMethods.IFileDialog)(new NativeMethods.FileOpenDialogRCW());
|
||||||
|
frm.GetOptions(out var options);
|
||||||
|
options |= NativeMethods.FOS_PICKFOLDERS | NativeMethods.FOS_FORCEFILESYSTEM | NativeMethods.FOS_NOVALIDATE | NativeMethods.FOS_NOTESTFILECREATE | NativeMethods.FOS_DONTADDTORECENT;
|
||||||
|
frm.SetOptions(options);
|
||||||
|
if (this.InitialFolder != null)
|
||||||
|
{
|
||||||
|
var riid = new Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"); //IShellItem
|
||||||
|
if (NativeMethods.SHCreateItemFromParsingName(this.InitialFolder, IntPtr.Zero, ref riid, out var directoryShellItem) == NativeMethods.S_OK)
|
||||||
|
{
|
||||||
|
frm.SetFolder(directoryShellItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.DefaultFolder != null)
|
||||||
|
{
|
||||||
|
var riid = new Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"); //IShellItem
|
||||||
|
if (NativeMethods.SHCreateItemFromParsingName(this.DefaultFolder, IntPtr.Zero, ref riid, out var directoryShellItem) == NativeMethods.S_OK)
|
||||||
|
{
|
||||||
|
frm.SetDefaultFolder(directoryShellItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (frm.Show(owner.Handle) == NativeMethods.S_OK)
|
||||||
|
{
|
||||||
|
if (frm.GetResult(out var shellItem) == NativeMethods.S_OK)
|
||||||
|
{
|
||||||
|
if (shellItem.GetDisplayName(NativeMethods.SIGDN_FILESYSPATH, out var pszString) == NativeMethods.S_OK)
|
||||||
|
{
|
||||||
|
if (pszString != IntPtr.Zero)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.Folder = Marshal.PtrToStringAuto(pszString);
|
||||||
|
return DialogResult.OK;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
Marshal.FreeCoTaskMem(pszString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DialogResult.Cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogResult ShowLegacyDialog(IWin32Window owner)
|
||||||
|
{
|
||||||
|
using (var frm = new FolderBrowserDialog())
|
||||||
|
{
|
||||||
|
if (this.InitialFolder != null) { frm.SelectedPath = this.InitialFolder; }
|
||||||
|
if (frm.ShowDialog(owner) == DialogResult.OK)
|
||||||
|
{
|
||||||
|
this.Folder = Path.GetDirectoryName(frm.SelectedPath);
|
||||||
|
return DialogResult.OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return DialogResult.Cancel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static class NativeMethods
|
||||||
|
{
|
||||||
|
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
public const uint FOS_PICKFOLDERS = 0x00000020;
|
||||||
|
public const uint FOS_FORCEFILESYSTEM = 0x00000040;
|
||||||
|
public const uint FOS_NOVALIDATE = 0x00000100;
|
||||||
|
public const uint FOS_NOTESTFILECREATE = 0x00010000;
|
||||||
|
public const uint FOS_DONTADDTORECENT = 0x02000000;
|
||||||
|
|
||||||
|
public const uint S_OK = 0x0000;
|
||||||
|
|
||||||
|
public const uint SIGDN_FILESYSPATH = 0x80058000;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region COM
|
||||||
|
|
||||||
|
[ComImport, ClassInterface(ClassInterfaceType.None), TypeLibType(TypeLibTypeFlags.FCanCreate), Guid("DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7")]
|
||||||
|
internal class FileOpenDialogRCW { }
|
||||||
|
|
||||||
|
|
||||||
|
[ComImport(), Guid("42F85136-DB7E-439C-85F1-E4075D135FC8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||||
|
internal interface IFileDialog
|
||||||
|
{
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
[PreserveSig()]
|
||||||
|
uint Show([In, Optional] IntPtr hwndOwner); //IModalWindow
|
||||||
|
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetFileTypes([In] uint cFileTypes, [In, MarshalAs(UnmanagedType.LPArray)] IntPtr rgFilterSpec);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetFileTypeIndex([In] uint iFileType);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetFileTypeIndex(out uint piFileType);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint Advise([In, MarshalAs(UnmanagedType.Interface)] IntPtr pfde, out uint pdwCookie);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint Unadvise([In] uint dwCookie);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetOptions([In] uint fos);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetOptions(out uint fos);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
void SetDefaultFolder([In, MarshalAs(UnmanagedType.Interface)] IShellItem psi);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetFolder([In, MarshalAs(UnmanagedType.Interface)] IShellItem psi);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetFolder([MarshalAs(UnmanagedType.Interface)] out IShellItem ppsi);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetCurrentSelection([MarshalAs(UnmanagedType.Interface)] out IShellItem ppsi);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetFileName([In, MarshalAs(UnmanagedType.LPWStr)] string pszName);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetFileName([MarshalAs(UnmanagedType.LPWStr)] out string pszName);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetTitle([In, MarshalAs(UnmanagedType.LPWStr)] string pszTitle);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetOkButtonLabel([In, MarshalAs(UnmanagedType.LPWStr)] string pszText);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetFileNameLabel([In, MarshalAs(UnmanagedType.LPWStr)] string pszLabel);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetResult([MarshalAs(UnmanagedType.Interface)] out IShellItem ppsi);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint AddPlace([In, MarshalAs(UnmanagedType.Interface)] IShellItem psi, uint fdap);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetDefaultExtension([In, MarshalAs(UnmanagedType.LPWStr)] string pszDefaultExtension);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint Close([MarshalAs(UnmanagedType.Error)] uint hr);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetClientGuid([In] ref Guid guid);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint ClearClientData();
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint SetFilter([MarshalAs(UnmanagedType.Interface)] IntPtr pFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[ComImport, Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||||
|
internal interface IShellItem
|
||||||
|
{
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint BindToHandler([In] IntPtr pbc, [In] ref Guid rbhid, [In] ref Guid riid, [Out, MarshalAs(UnmanagedType.Interface)] out IntPtr ppvOut);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetParent([MarshalAs(UnmanagedType.Interface)] out IShellItem ppsi);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetDisplayName([In] uint sigdnName, out IntPtr ppszName);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint GetAttributes([In] uint sfgaoMask, out uint psfgaoAttribs);
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
|
||||||
|
uint Compare([In, MarshalAs(UnmanagedType.Interface)] IShellItem psi, [In] uint hint, out int piOrder);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
[DllImport("shell32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
||||||
|
internal static extern int SHCreateItemFromParsingName([MarshalAs(UnmanagedType.LPWStr)] string pszPath, IntPtr pbc, ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out IShellItem ppv);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,7 +13,6 @@ namespace Unity_Studio
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
OpenTK.Toolkit.Init(new OpenTK.ToolkitOptions { EnableHighResolution = false });
|
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
Application.Run(new UnityStudioForm());
|
Application.Run(new UnityStudioForm());
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ using System.Runtime.InteropServices;
|
|||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("Unity Studio")]
|
[assembly: AssemblyTitle("Unity Studio")]
|
||||||
[assembly: AssemblyDescription("- Compatible with all Unity versions from 2.5.0 to 5.5.1f1\r\n- Compatible with Web, PC, iOS, Android, PS3, Xbox 360, OSX and Linux games/apps\r\n- Automatically merges .split\r\n- 3D objets exported to FBX\r\n- Able to load audio streams from resources files\r\n- Real-time preview window and export function for textures, audio clips, shaders and fonts\r\n - Textures: DDS (Alpha8, ARGB4444, RGB24, RGBA32, ARGB32, RGB565, R16, DXT1, DXT1Crunched, DXT5, DXT5Crunched, RGBA4444, BGRA32)\r\n PVR (YUY2, PVRTC_RGB2, PVRTC_RGBA2, PVRTC_RGB4, PVRTC_RGBA4, ETC_RGB4, ETC2_RGB, ETC2_RGBA1, ETC2_RGBA8, ASTC_RGB_4x4, ASTC_RGB_5x5, ASTC_RGB_6x6, ASTC_RGB_8x8, ASTC_RGB_10x10, ASTC_RGB_12x12, ASTC_RGBA_4x4, ASTC_RGBA_5x5, ASTC_RGBA_6x6, ASTC_RGBA_8x8, ASTC_RGBA_10x10, ASTC_RGBA_12x12, ETC_RGB4_3DS, ETC_RGBA8_3DS)\r\n KTX (RHalf, RGHalf, RGBAHalf, RFloat, RGFloat, RGBAFloat, BC4, BC5, BC6H, BC7, ATC_RGB4, ATC_RGBA8, EAC_R, EAC_R_SIGNED, EAC_RG, EAC_RG_SIGNED)\r\n - Audio clips: mp3, ogg, wav, xbox wav, fsb\r\n - Shader files are exported in plain-text\r\n - Fonts: ttf, otf")]
|
[assembly: AssemblyDescription("Unity Studio is a tool for exploring, extracting and exporting assets from Unity games and apps. It has been tested with Unity builds from most platforms, ranging from Web, PC, Linux, MacOS to Xbox360, PS3, Android and iOS, and it is currently maintained to be compatible with Unity builds from 2.5 up to the 2017.3 version.")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("Unity Studio")]
|
[assembly: AssemblyProduct("Unity Studio")]
|
||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.8.0.0")]
|
[assembly: AssemblyVersion("0.9.0.0")]
|
||||||
[assembly: AssemblyFileVersion("0.8.0.0")]
|
[assembly: AssemblyFileVersion("0.9.0.0")]
|
||||||
|
|||||||
86
Unity Studio/Properties/Resources.Designer.cs
generated
86
Unity Studio/Properties/Resources.Designer.cs
generated
@@ -19,7 +19,7 @@ namespace Unity_Studio.Properties {
|
|||||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
internal class Resources {
|
||||||
@@ -60,6 +60,63 @@ namespace Unity_Studio.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 #version 140
|
||||||
|
///
|
||||||
|
///in vec3 normal;
|
||||||
|
///
|
||||||
|
///out vec4 outputColor;
|
||||||
|
///
|
||||||
|
///void main()
|
||||||
|
///{
|
||||||
|
/// vec3 unitNormal = normalize(normal);
|
||||||
|
/// float nDotProduct = clamp(dot(unitNormal, vec3(0.707, 0, 0.707)), 0, 1);
|
||||||
|
/// vec2 ContributionWeightsSqrt = vec2(0.5, 0.5f) + vec2(0.5f, -0.5f) * unitNormal.y;
|
||||||
|
/// vec2 ContributionWeights = ContributionWeightsSqrt * ContributionWeightsSqrt;
|
||||||
|
///
|
||||||
|
/// vec3 color = nDotProduct * vec3(1, 0.957, 0.839) / 3.14159;
|
||||||
|
/// color += vec3(0.779, 0.716, 0.453) * ContributionWeights.y;
|
||||||
|
/// color += vec3(0.368, 0.477, 0. [字符串的其余部分被截断]"; 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string fs {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("fs", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 #version 140
|
||||||
|
///
|
||||||
|
///out vec4 outputColor;
|
||||||
|
///
|
||||||
|
///void main()
|
||||||
|
///{
|
||||||
|
/// outputColor = vec4(0, 0, 0, 1);
|
||||||
|
///} 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string fsBlack {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("fsBlack", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 #version 140
|
||||||
|
///
|
||||||
|
///out vec4 outputColor;
|
||||||
|
///in vec4 color;
|
||||||
|
///
|
||||||
|
///void main()
|
||||||
|
///{
|
||||||
|
/// outputColor = color;
|
||||||
|
///} 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string fsColor {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("fsColor", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -71,7 +128,7 @@ namespace Unity_Studio.Properties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似于 (Icon) 的 System.Drawing.Icon 类型的本地化资源。
|
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static System.Drawing.Icon unity {
|
internal static System.Drawing.Icon unity {
|
||||||
get {
|
get {
|
||||||
@@ -79,5 +136,30 @@ namespace Unity_Studio.Properties {
|
|||||||
return ((System.Drawing.Icon)(obj));
|
return ((System.Drawing.Icon)(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 #version 140
|
||||||
|
///
|
||||||
|
///in vec3 vertexPosition;
|
||||||
|
///in vec3 normalDirection;
|
||||||
|
///in vec4 vertexColor;
|
||||||
|
///uniform mat4 modelMatrix;
|
||||||
|
///uniform mat4 viewMatrix;
|
||||||
|
///
|
||||||
|
///out vec3 normal;
|
||||||
|
///out vec4 color;
|
||||||
|
///
|
||||||
|
///void main()
|
||||||
|
///{
|
||||||
|
/// gl_Position = viewMatrix * modelMatrix * vec4(vertexPosition, 1.0);
|
||||||
|
/// normal = normalDirection;
|
||||||
|
/// color = vertexColor;
|
||||||
|
///} 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string vs {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("vs", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,6 +117,47 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="fs" xml:space="preserve">
|
||||||
|
<value>#version 140
|
||||||
|
|
||||||
|
in vec3 normal;
|
||||||
|
|
||||||
|
out vec4 outputColor;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec3 unitNormal = normalize(normal);
|
||||||
|
float nDotProduct = clamp(dot(unitNormal, vec3(0.707, 0, 0.707)), 0, 1);
|
||||||
|
vec2 ContributionWeightsSqrt = vec2(0.5, 0.5f) + vec2(0.5f, -0.5f) * unitNormal.y;
|
||||||
|
vec2 ContributionWeights = ContributionWeightsSqrt * ContributionWeightsSqrt;
|
||||||
|
|
||||||
|
vec3 color = nDotProduct * vec3(1, 0.957, 0.839) / 3.14159;
|
||||||
|
color += vec3(0.779, 0.716, 0.453) * ContributionWeights.y;
|
||||||
|
color += vec3(0.368, 0.477, 0.735) * ContributionWeights.x;
|
||||||
|
outputColor = vec4(sqrt(color), 1);
|
||||||
|
}</value>
|
||||||
|
</data>
|
||||||
|
<data name="fsBlack" xml:space="preserve">
|
||||||
|
<value>#version 140
|
||||||
|
|
||||||
|
out vec4 outputColor;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
outputColor = vec4(0, 0, 0, 1);
|
||||||
|
}</value>
|
||||||
|
</data>
|
||||||
|
<data name="fsColor" xml:space="preserve">
|
||||||
|
<value>#version 140
|
||||||
|
|
||||||
|
out vec4 outputColor;
|
||||||
|
in vec4 color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
outputColor = color;
|
||||||
|
}</value>
|
||||||
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="preview" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="preview" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\preview.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\preview.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
@@ -124,4 +165,23 @@
|
|||||||
<data name="unity" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="unity" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\unity.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\unity.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="vs" xml:space="preserve">
|
||||||
|
<value>#version 140
|
||||||
|
|
||||||
|
in vec3 vertexPosition;
|
||||||
|
in vec3 normalDirection;
|
||||||
|
in vec4 vertexColor;
|
||||||
|
uniform mat4 modelMatrix;
|
||||||
|
uniform mat4 viewMatrix;
|
||||||
|
|
||||||
|
out vec3 normal;
|
||||||
|
out vec4 color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = viewMatrix * modelMatrix * vec4(vertexPosition, 1.0);
|
||||||
|
normal = normalDirection;
|
||||||
|
color = vertexColor;
|
||||||
|
}</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
8
Unity Studio/Properties/Settings.Designer.cs
generated
8
Unity Studio/Properties/Settings.Designer.cs
generated
@@ -12,7 +12,7 @@ namespace Unity_Studio.Properties {
|
|||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")]
|
||||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
@@ -206,12 +206,12 @@ namespace Unity_Studio.Properties {
|
|||||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
public bool convertfsb {
|
public bool convertAudio {
|
||||||
get {
|
get {
|
||||||
return ((bool)(this["convertfsb"]));
|
return ((bool)(this["convertAudio"]));
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
this["convertfsb"] = value;
|
this["convertAudio"] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
<Setting Name="convertTexture" Type="System.Boolean" Scope="User">
|
<Setting Name="convertTexture" Type="System.Boolean" Scope="User">
|
||||||
<Value Profile="(Default)">True</Value>
|
<Value Profile="(Default)">True</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
<Setting Name="convertfsb" Type="System.Boolean" Scope="User">
|
<Setting Name="convertAudio" Type="System.Boolean" Scope="User">
|
||||||
<Value Profile="(Default)">True</Value>
|
<Value Profile="(Default)">True</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
<Setting Name="convertType" Type="System.String" Scope="User">
|
<Setting Name="convertType" Type="System.String" Scope="User">
|
||||||
|
|||||||
120
Unity Studio/Resource1.Designer.cs
generated
120
Unity Studio/Resource1.Designer.cs
generated
@@ -1,120 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// 此代码由工具生成。
|
|
||||||
// 运行时版本:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
|
||||||
// 重新生成代码,这些更改将会丢失。
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace Unity_Studio {
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
|
||||||
/// </summary>
|
|
||||||
// 此类是由 StronglyTypedResourceBuilder
|
|
||||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
|
||||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
|
||||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
internal class Resource1 {
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
|
||||||
internal Resource1() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 返回此类使用的缓存的 ResourceManager 实例。
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
|
||||||
get {
|
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Unity_Studio.Resource1", typeof(Resource1).Assembly);
|
|
||||||
resourceMan = temp;
|
|
||||||
}
|
|
||||||
return resourceMan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 使用此强类型资源类,为所有资源查找
|
|
||||||
/// 重写当前线程的 CurrentUICulture 属性。
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Globalization.CultureInfo Culture {
|
|
||||||
get {
|
|
||||||
return resourceCulture;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
resourceCulture = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 #version 140
|
|
||||||
///
|
|
||||||
///in vec3 surfaceNormal;
|
|
||||||
///in vec3 toLightVector;
|
|
||||||
///in vec4 color;
|
|
||||||
///
|
|
||||||
///out vec4 outputColor;
|
|
||||||
///
|
|
||||||
///void main()
|
|
||||||
///{
|
|
||||||
/// vec3 lightColor = vec3(0.5, 0.5, 0.5);
|
|
||||||
///
|
|
||||||
/// // Ambient
|
|
||||||
/// float ambientStrength = 0.9;
|
|
||||||
/// vec3 ambient = ambientStrength * lightColor;
|
|
||||||
///
|
|
||||||
/// // Diffuse
|
|
||||||
/// vec3 unitNormal = normalize(surfaceNormal);
|
|
||||||
/// vec3 unitLightVector = normalize(toLightVector);
|
|
||||||
/// float nDotProduct = dot(unitNormal, unitLightVector);
|
|
||||||
/// float brightness = clamp(nDotProduct, 0, 1); // max(nDotProduct, 0.0);
|
|
||||||
/// vec3 diffuse [字符串的其余部分被截断]"; 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string fs {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("fs", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 #version 140
|
|
||||||
///
|
|
||||||
///in vec3 vertexPosition;
|
|
||||||
///in vec3 normalDirection;
|
|
||||||
///in vec4 vertexColor;
|
|
||||||
///uniform mat4 viewMatrix;
|
|
||||||
///
|
|
||||||
///out vec3 surfaceNormal;
|
|
||||||
///out vec3 toLightVector;
|
|
||||||
///out vec4 color;
|
|
||||||
///
|
|
||||||
///void main()
|
|
||||||
///{
|
|
||||||
/// vec3 lightPosition = vec3(200.0, 200.0, 200.0);
|
|
||||||
/// gl_Position = viewMatrix * vec4(vertexPosition, 1.0);
|
|
||||||
/// surfaceNormal = normalDirection;
|
|
||||||
/// toLightVector = lightPosition - vertexPosition;
|
|
||||||
/// color = vertexColor;
|
|
||||||
///} 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string vs {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("vs", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="fs" xml:space="preserve">
|
|
||||||
<value>#version 140
|
|
||||||
|
|
||||||
in vec3 surfaceNormal;
|
|
||||||
in vec3 toLightVector;
|
|
||||||
in vec4 color;
|
|
||||||
|
|
||||||
out vec4 outputColor;
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
vec3 lightColor = vec3(0.5, 0.5, 0.5);
|
|
||||||
|
|
||||||
// Ambient
|
|
||||||
float ambientStrength = 0.9;
|
|
||||||
vec3 ambient = ambientStrength * lightColor;
|
|
||||||
|
|
||||||
// Diffuse
|
|
||||||
vec3 unitNormal = normalize(surfaceNormal);
|
|
||||||
vec3 unitLightVector = normalize(toLightVector);
|
|
||||||
float nDotProduct = dot(unitNormal, unitLightVector);
|
|
||||||
float brightness = clamp(nDotProduct, 0, 1); // max(nDotProduct, 0.0);
|
|
||||||
vec3 diffuse = brightness * lightColor;
|
|
||||||
|
|
||||||
// Output Color
|
|
||||||
vec4 result = color * vec4((ambient + diffuse/2), 0.0);
|
|
||||||
outputColor = result;
|
|
||||||
}</value>
|
|
||||||
</data>
|
|
||||||
<data name="vs" xml:space="preserve">
|
|
||||||
<value>#version 140
|
|
||||||
|
|
||||||
in vec3 vertexPosition;
|
|
||||||
in vec3 normalDirection;
|
|
||||||
in vec4 vertexColor;
|
|
||||||
uniform mat4 viewMatrix;
|
|
||||||
|
|
||||||
out vec3 surfaceNormal;
|
|
||||||
out vec3 toLightVector;
|
|
||||||
out vec4 color;
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
vec3 lightPosition = vec3(200.0, 200.0, 200.0);
|
|
||||||
gl_Position = viewMatrix * vec4(vertexPosition, 1.0);
|
|
||||||
surfaceNormal = normalDirection;
|
|
||||||
toLightVector = lightPosition - vertexPosition;
|
|
||||||
color = vertexColor;
|
|
||||||
}</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 42 KiB |
20
Unity Studio/ShaderResource.Designer.cs
generated
20
Unity Studio/ShaderResource.Designer.cs
generated
@@ -19,7 +19,7 @@ namespace Unity_Studio {
|
|||||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class ShaderResource {
|
internal class ShaderResource {
|
||||||
@@ -69,6 +69,24 @@ namespace Unity_Studio {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 [{"Level":0,"Type":"string","Name":"m_Name","Size":-1,"Flag":32769},{"Level":1,"Type":"Array","Name":"Array","Size":-1,"Flag":16385},{"Level":2,"Type":"int","Name":"size","Size":4,"Flag":1},{"Level":2,"Type":"char","Name":"data","Size":1,"Flag":1},{"Level":0,"Type":"SerializedShader","Name":"m_ParsedForm","Size":-1,"Flag":32768},{"Level":1,"Type":"SerializedProperties","Name":"m_PropInfo","Size":-1,"Flag":32768},{"Level":2,"Type":"vector","Name":"m_Props","Size":-1,"Flag":32768},{"Level":3,"Type":"Arr... 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string Shader20172 {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Shader20172", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 [{"Level":0,"Type":"string","Name":"m_Name","Size":-1,"Flag":32769},{"Level":1,"Type":"Array","Name":"Array","Size":-1,"Flag":16385},{"Level":2,"Type":"int","Name":"size","Size":4,"Flag":1},{"Level":2,"Type":"char","Name":"data","Size":1,"Flag":1},{"Level":0,"Type":"SerializedShader","Name":"m_ParsedForm","Size":-1,"Flag":32768},{"Level":1,"Type":"SerializedProperties","Name":"m_PropInfo","Size":-1,"Flag":32768},{"Level":2,"Type":"vector","Name":"m_Props","Size":-1,"Flag":32768},{"Level":3,"Type":"Arr... 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string Shader20173 {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Shader20173", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 [{"Level":0,"Type":"string","Name":"m_Name","Size":-1,"Flag":32769},{"Level":1,"Type":"Array","Name":"Array","Size":-1,"Flag":16385},{"Level":2,"Type":"int","Name":"size","Size":4,"Flag":1},{"Level":2,"Type":"char","Name":"data","Size":1,"Flag":1},{"Level":0,"Type":"SerializedShader","Name":"m_ParsedForm","Size":-1,"Flag":32768},{"Level":1,"Type":"SerializedProperties","Name":"m_PropInfo","Size":-1,"Flag":32768},{"Level":2,"Type":"vector","Name":"m_Props","Size":-1,"Flag":32768},{"Level":3,"Type":"Arr... 的本地化字符串。
|
/// 查找类似 [{"Level":0,"Type":"string","Name":"m_Name","Size":-1,"Flag":32769},{"Level":1,"Type":"Array","Name":"Array","Size":-1,"Flag":16385},{"Level":2,"Type":"int","Name":"size","Size":4,"Flag":1},{"Level":2,"Type":"char","Name":"data","Size":1,"Flag":1},{"Level":0,"Type":"SerializedShader","Name":"m_ParsedForm","Size":-1,"Flag":32768},{"Level":1,"Type":"SerializedProperties","Name":"m_PropInfo","Size":-1,"Flag":32768},{"Level":2,"Type":"vector","Name":"m_Props","Size":-1,"Flag":32768},{"Level":3,"Type":"Arr... 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace Unity_Studio
|
namespace Unity_Studio
|
||||||
{
|
{
|
||||||
@@ -10,7 +11,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
public string m_Name;
|
public string m_Name;
|
||||||
public int m_Format;
|
public int m_Format;
|
||||||
public int m_Type = -1;
|
public AudioType m_Type;
|
||||||
public bool m_3D;
|
public bool m_3D;
|
||||||
public bool m_UseHardware;
|
public bool m_UseHardware;
|
||||||
|
|
||||||
@@ -25,13 +26,15 @@ namespace Unity_Studio
|
|||||||
public bool m_PreloadAudioData;
|
public bool m_PreloadAudioData;
|
||||||
public bool m_LoadInBackground;
|
public bool m_LoadInBackground;
|
||||||
public bool m_Legacy3D;
|
public bool m_Legacy3D;
|
||||||
public int m_CompressionFormat = -1;
|
public AudioCompressionFormat m_CompressionFormat;
|
||||||
|
|
||||||
public string m_Source;
|
public string m_Source;
|
||||||
public long m_Offset;
|
public long m_Offset;
|
||||||
public long m_Size;
|
public long m_Size;
|
||||||
public byte[] m_AudioData;
|
public byte[] m_AudioData;
|
||||||
|
|
||||||
|
public bool version5;
|
||||||
|
|
||||||
public AudioClip(AssetPreloadData preloadData, bool readSwitch)
|
public AudioClip(AssetPreloadData preloadData, bool readSwitch)
|
||||||
{
|
{
|
||||||
var sourceFile = preloadData.sourceFile;
|
var sourceFile = preloadData.sourceFile;
|
||||||
@@ -46,12 +49,12 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
version5 = sourceFile.version[0] >= 5;
|
||||||
if (sourceFile.version[0] < 5)
|
if (sourceFile.version[0] < 5)
|
||||||
{
|
{
|
||||||
|
|
||||||
m_Format = a_Stream.ReadInt32(); //channels?
|
m_Format = a_Stream.ReadInt32(); //channels?
|
||||||
m_Type = a_Stream.ReadInt32();
|
m_Type = (AudioType)a_Stream.ReadInt32();
|
||||||
m_3D = a_Stream.ReadBoolean();
|
m_3D = a_Stream.ReadBoolean();
|
||||||
m_UseHardware = a_Stream.ReadBoolean();
|
m_UseHardware = a_Stream.ReadBoolean();
|
||||||
a_Stream.Position += 2; //4 byte alignment
|
a_Stream.Position += 2; //4 byte alignment
|
||||||
@@ -60,18 +63,22 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
int m_Stream = a_Stream.ReadInt32();
|
int m_Stream = a_Stream.ReadInt32();
|
||||||
m_Size = a_Stream.ReadInt32();
|
m_Size = a_Stream.ReadInt32();
|
||||||
var asize = m_Size % 4 != 0 ? m_Size + 4 - m_Size % 4 : m_Size;
|
var tsize = m_Size % 4 != 0 ? m_Size + 4 - m_Size % 4 : m_Size;
|
||||||
if (m_Stream > 1 && preloadData.Size + preloadData.Offset - a_Stream.Position > asize)
|
//TODO: Need more test
|
||||||
|
if (preloadData.Size + preloadData.Offset - a_Stream.Position != tsize)
|
||||||
{
|
{
|
||||||
m_Offset = a_Stream.ReadInt32();
|
m_Offset = a_Stream.ReadInt32();
|
||||||
m_Source = sourceFile.filePath + ".resS";
|
m_Source = sourceFile.filePath + ".resS";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { m_Size = a_Stream.ReadInt32(); }
|
else
|
||||||
|
{
|
||||||
|
m_Size = a_Stream.ReadInt32();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_LoadType = a_Stream.ReadInt32();//Decompress on load, Compressed in memory, Streaming
|
m_LoadType = a_Stream.ReadInt32(); //Decompress on load, Compressed in memory, Streaming
|
||||||
m_Channels = a_Stream.ReadInt32();
|
m_Channels = a_Stream.ReadInt32();
|
||||||
m_Frequency = a_Stream.ReadInt32();
|
m_Frequency = a_Stream.ReadInt32();
|
||||||
m_BitsPerSample = a_Stream.ReadInt32();
|
m_BitsPerSample = a_Stream.ReadInt32();
|
||||||
@@ -86,20 +93,22 @@ namespace Unity_Studio
|
|||||||
m_3D = m_Legacy3D;
|
m_3D = m_Legacy3D;
|
||||||
|
|
||||||
m_Source = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
m_Source = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
m_Source = Path.Combine(Path.GetDirectoryName(sourceFile.filePath), m_Source.Replace("archive:/", ""));
|
if (m_Source != "")
|
||||||
|
m_Source = Path.Combine(Path.GetDirectoryName(sourceFile.filePath), m_Source.Replace("archive:/", ""));
|
||||||
m_Offset = a_Stream.ReadInt64();
|
m_Offset = a_Stream.ReadInt64();
|
||||||
m_Size = a_Stream.ReadInt64();
|
m_Size = a_Stream.ReadInt64();
|
||||||
m_CompressionFormat = a_Stream.ReadInt32();
|
m_CompressionFormat = (AudioCompressionFormat)a_Stream.ReadInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (readSwitch)
|
if (readSwitch)
|
||||||
{
|
{
|
||||||
if (m_Source == null)
|
if (string.IsNullOrEmpty(m_Source))
|
||||||
{
|
{
|
||||||
m_AudioData = a_Stream.ReadBytes((int)m_Size);
|
if (m_Size > 0)
|
||||||
|
m_AudioData = a_Stream.ReadBytes((int)m_Size);
|
||||||
}
|
}
|
||||||
else if (File.Exists(m_Source) ||
|
else if (File.Exists(m_Source) ||
|
||||||
File.Exists(m_Source = Path.Combine(Path.GetDirectoryName(sourceFile.filePath), Path.GetFileName(m_Source))))
|
File.Exists(m_Source = Path.Combine(Path.GetDirectoryName(sourceFile.filePath), Path.GetFileName(m_Source))))
|
||||||
{
|
{
|
||||||
BinaryReader reader = new BinaryReader(File.OpenRead(m_Source));
|
BinaryReader reader = new BinaryReader(File.OpenRead(m_Source));
|
||||||
reader.BaseStream.Position = m_Offset;
|
reader.BaseStream.Position = m_Offset;
|
||||||
@@ -108,64 +117,121 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
EndianStream estream;
|
if (UnityStudio.assetsfileandstream.TryGetValue(Path.GetFileName(m_Source), out var estream))
|
||||||
if (UnityStudio.assetsfileandstream.TryGetValue(Path.GetFileName(m_Source), out estream))
|
|
||||||
{
|
{
|
||||||
estream.Position = m_Offset;
|
estream.Position = m_Offset;
|
||||||
m_AudioData = estream.ReadBytes((int)m_Size);
|
m_AudioData = estream.ReadBytes((int)m_Size);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show($"can't find the resource file {Path.GetFileName(m_Source)}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
preloadData.InfoText = "Compression format: ";
|
preloadData.InfoText = "Compression format: ";
|
||||||
|
|
||||||
switch (m_Type)
|
if (sourceFile.version[0] < 5)
|
||||||
{
|
{
|
||||||
case 2:
|
switch (m_Type)
|
||||||
preloadData.extension = ".aif";
|
{
|
||||||
preloadData.InfoText += "AIFF";
|
case AudioType.ACC:
|
||||||
break;
|
preloadData.extension = ".m4a";
|
||||||
case 13:
|
preloadData.InfoText += "Acc";
|
||||||
preloadData.extension = ".mp3";
|
break;
|
||||||
preloadData.InfoText += "MP3";
|
case AudioType.AIFF:
|
||||||
break;
|
preloadData.extension = ".aif";
|
||||||
case 14:
|
preloadData.InfoText += "AIFF";
|
||||||
preloadData.extension = ".ogg";
|
break;
|
||||||
preloadData.InfoText += "Ogg Vorbis";
|
case AudioType.IT:
|
||||||
break;
|
preloadData.extension = ".it";
|
||||||
case 20:
|
preloadData.InfoText += "Impulse tracker";
|
||||||
preloadData.extension = ".wav";
|
break;
|
||||||
preloadData.InfoText += "WAV";
|
case AudioType.MOD:
|
||||||
break;
|
preloadData.extension = ".mod";
|
||||||
case 22: //xbox encoding
|
preloadData.InfoText += "Protracker / Fasttracker MOD";
|
||||||
preloadData.extension = ".wav";
|
break;
|
||||||
preloadData.InfoText += "Xbox360 WAV";
|
case AudioType.MPEG:
|
||||||
break;
|
preloadData.extension = ".mp3";
|
||||||
}
|
preloadData.InfoText += "MP2/MP3 MPEG";
|
||||||
|
break;
|
||||||
|
case AudioType.OGGVORBIS:
|
||||||
|
preloadData.extension = ".ogg";
|
||||||
|
preloadData.InfoText += "Ogg vorbis";
|
||||||
|
break;
|
||||||
|
case AudioType.S3M:
|
||||||
|
preloadData.extension = ".s3m";
|
||||||
|
preloadData.InfoText += "ScreamTracker 3";
|
||||||
|
break;
|
||||||
|
case AudioType.WAV:
|
||||||
|
preloadData.extension = ".wav";
|
||||||
|
preloadData.InfoText += "Microsoft WAV";
|
||||||
|
break;
|
||||||
|
case AudioType.XM:
|
||||||
|
preloadData.extension = ".xm";
|
||||||
|
preloadData.InfoText += "FastTracker 2 XM";
|
||||||
|
break;
|
||||||
|
case AudioType.XMA:
|
||||||
|
preloadData.extension = ".wav";
|
||||||
|
preloadData.InfoText += "Xbox360 XMA";
|
||||||
|
break;
|
||||||
|
case AudioType.VAG:
|
||||||
|
preloadData.extension = ".vag";
|
||||||
|
preloadData.InfoText += "PlayStation Portable ADPCM";
|
||||||
|
break;
|
||||||
|
case AudioType.AUDIOQUEUE:
|
||||||
|
preloadData.extension = ".fsb";
|
||||||
|
preloadData.InfoText += "iPhone";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
switch (m_CompressionFormat)
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
case 0:
|
switch (m_CompressionFormat)
|
||||||
preloadData.extension = ".fsb";
|
{
|
||||||
preloadData.InfoText += "PCM";
|
case AudioCompressionFormat.PCM:
|
||||||
break;
|
preloadData.extension = ".fsb";
|
||||||
case 1:
|
preloadData.InfoText += "PCM";
|
||||||
preloadData.extension = ".fsb";
|
break;
|
||||||
preloadData.InfoText += "Vorbis";
|
case AudioCompressionFormat.Vorbis:
|
||||||
break;
|
preloadData.extension = ".fsb";
|
||||||
case 2:
|
preloadData.InfoText += "Vorbis";
|
||||||
preloadData.extension = ".fsb";
|
break;
|
||||||
preloadData.InfoText += "ADPCM";
|
case AudioCompressionFormat.ADPCM:
|
||||||
break;
|
preloadData.extension = ".fsb";
|
||||||
case 3:
|
preloadData.InfoText += "ADPCM";
|
||||||
preloadData.extension = ".fsb";
|
break;
|
||||||
preloadData.InfoText += "MP3";//not sure
|
case AudioCompressionFormat.MP3:
|
||||||
break;
|
preloadData.extension = ".fsb";
|
||||||
case 7:
|
preloadData.InfoText += "MP3";
|
||||||
preloadData.extension = ".m4a";
|
break;
|
||||||
preloadData.InfoText += "M4a";
|
case AudioCompressionFormat.VAG:
|
||||||
break;
|
preloadData.extension = ".vag";
|
||||||
|
preloadData.InfoText += "PlayStation Portable ADPCM";
|
||||||
|
break;
|
||||||
|
case AudioCompressionFormat.HEVAG:
|
||||||
|
preloadData.extension = ".vag";
|
||||||
|
preloadData.InfoText += "PSVita ADPCM";
|
||||||
|
break;
|
||||||
|
case AudioCompressionFormat.XMA:
|
||||||
|
preloadData.extension = ".wav";
|
||||||
|
preloadData.InfoText += "Xbox360 XMA";
|
||||||
|
break;
|
||||||
|
case AudioCompressionFormat.AAC:
|
||||||
|
preloadData.extension = ".m4a";
|
||||||
|
preloadData.InfoText += "Acc";
|
||||||
|
break;
|
||||||
|
case AudioCompressionFormat.GCADPCM:
|
||||||
|
preloadData.extension = ".fsb";
|
||||||
|
preloadData.InfoText += "Nintendo 3DS/Wii DSP";
|
||||||
|
break;
|
||||||
|
case AudioCompressionFormat.ATRAC9:
|
||||||
|
preloadData.extension = ".at9";
|
||||||
|
preloadData.InfoText += "PSVita ATRAC9";
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preloadData.extension == null)
|
if (preloadData.extension == null)
|
||||||
@@ -173,11 +239,54 @@ namespace Unity_Studio
|
|||||||
preloadData.extension = ".AudioClip";
|
preloadData.extension = ".AudioClip";
|
||||||
preloadData.InfoText += "Unknown";
|
preloadData.InfoText += "Unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
preloadData.InfoText += "\n3D: " + m_3D;
|
preloadData.InfoText += "\n3D: " + m_3D;
|
||||||
|
|
||||||
if (m_Name != "") { preloadData.Text = m_Name; }
|
preloadData.Text = m_Name;
|
||||||
else { preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID; }
|
if (m_Source != null)
|
||||||
preloadData.SubItems.AddRange(new[] { preloadData.TypeString, preloadData.Size.ToString() });
|
preloadData.fullSize = preloadData.Size + (int)m_Size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsFMODSupport
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!version5)
|
||||||
|
{
|
||||||
|
switch (m_Type)
|
||||||
|
{
|
||||||
|
case AudioType.AIFF:
|
||||||
|
case AudioType.IT:
|
||||||
|
case AudioType.MOD:
|
||||||
|
case AudioType.S3M:
|
||||||
|
case AudioType.XM:
|
||||||
|
case AudioType.XMA:
|
||||||
|
case AudioType.VAG:
|
||||||
|
case AudioType.AUDIOQUEUE:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (m_CompressionFormat)
|
||||||
|
{
|
||||||
|
case AudioCompressionFormat.PCM:
|
||||||
|
case AudioCompressionFormat.Vorbis:
|
||||||
|
case AudioCompressionFormat.ADPCM:
|
||||||
|
case AudioCompressionFormat.MP3:
|
||||||
|
case AudioCompressionFormat.VAG:
|
||||||
|
case AudioCompressionFormat.HEVAG:
|
||||||
|
case AudioCompressionFormat.XMA:
|
||||||
|
case AudioCompressionFormat.GCADPCM:
|
||||||
|
case AudioCompressionFormat.ATRAC9:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,8 +71,7 @@ namespace Unity_Studio
|
|||||||
int m_FontData_size = a_Stream.ReadInt32();
|
int m_FontData_size = a_Stream.ReadInt32();
|
||||||
if (m_FontData_size > 0)
|
if (m_FontData_size > 0)
|
||||||
{
|
{
|
||||||
m_FontData = new byte[m_FontData_size];
|
m_FontData = a_Stream.ReadBytes(m_FontData_size);
|
||||||
a_Stream.Read(m_FontData, 0, m_FontData_size);
|
|
||||||
|
|
||||||
if (m_FontData[0] == 79 && m_FontData[1] == 84 && m_FontData[2] == 84 && m_FontData[3] == 79)
|
if (m_FontData[0] == 79 && m_FontData[1] == 84 && m_FontData[2] == 84 && m_FontData[3] == 79)
|
||||||
{ preloadData.extension = ".otf"; }
|
{ preloadData.extension = ".otf"; }
|
||||||
@@ -153,8 +152,7 @@ namespace Unity_Studio
|
|||||||
int m_FontData_size = a_Stream.ReadInt32();
|
int m_FontData_size = a_Stream.ReadInt32();
|
||||||
if (m_FontData_size > 0)
|
if (m_FontData_size > 0)
|
||||||
{
|
{
|
||||||
m_FontData = new byte[m_FontData_size];
|
m_FontData = a_Stream.ReadBytes(m_FontData_size);
|
||||||
a_Stream.Read(m_FontData, 0, m_FontData_size);
|
|
||||||
|
|
||||||
if (m_FontData[0] == 79 && m_FontData[1] == 84 && m_FontData[2] == 84 && m_FontData[3] == 79)
|
if (m_FontData[0] == 79 && m_FontData[1] == 84 && m_FontData[2] == 84 && m_FontData[3] == 79)
|
||||||
{ preloadData.extension = ".otf"; }
|
{ preloadData.extension = ".otf"; }
|
||||||
@@ -186,9 +184,7 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_Name != "") { preloadData.Text = m_Name; }
|
preloadData.Text = m_Name;
|
||||||
else { preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID; }
|
|
||||||
preloadData.SubItems.AddRange(new[] { preloadData.TypeString, preloadData.Size.ToString() });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,8 +52,7 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_Layer = a_Stream.ReadInt32();
|
m_Layer = a_Stream.ReadInt32();
|
||||||
int namesize = a_Stream.ReadInt32();
|
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
m_Name = a_Stream.ReadAlignedString(namesize);
|
|
||||||
if (m_Name == "") { m_Name = "GameObject #" + uniqueID; }
|
if (m_Name == "") { m_Name = "GameObject #" + uniqueID; }
|
||||||
m_Tag = a_Stream.ReadUInt16();
|
m_Tag = a_Stream.ReadUInt16();
|
||||||
m_IsActive = a_Stream.ReadBoolean();
|
m_IsActive = a_Stream.ReadBoolean();
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else if (sourceFile.version[0] >= 5)//5.0 and up
|
else if (sourceFile.version[0] >= 5)//5.0 and up
|
||||||
{
|
{
|
||||||
m_ShaderKeywords = new string[1] { a_Stream.ReadAlignedString(a_Stream.ReadInt32()) };
|
m_ShaderKeywords = new[] { a_Stream.ReadAlignedString(a_Stream.ReadInt32()) };
|
||||||
uint m_LightmapFlags = a_Stream.ReadUInt32();
|
uint m_LightmapFlags = a_Stream.ReadUInt32();
|
||||||
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 6 || sourceFile.version[0] > 5)//5.6.0 and up
|
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 6 || sourceFile.version[0] > 5)//5.6.0 and up
|
||||||
{
|
{
|
||||||
@@ -59,7 +59,7 @@ namespace Unity_Studio
|
|||||||
string[][] stringTagMap = new string[a_Stream.ReadInt32()][];
|
string[][] stringTagMap = new string[a_Stream.ReadInt32()][];
|
||||||
for (int i = 0; i < stringTagMap.Length; i++)
|
for (int i = 0; i < stringTagMap.Length; i++)
|
||||||
{
|
{
|
||||||
stringTagMap[i] = new string[2] { a_Stream.ReadAlignedString(a_Stream.ReadInt32()), a_Stream.ReadAlignedString(a_Stream.ReadInt32()) };
|
stringTagMap[i] = new[] { a_Stream.ReadAlignedString(a_Stream.ReadInt32()), a_Stream.ReadAlignedString(a_Stream.ReadInt32()) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//disabledShaderPasses
|
//disabledShaderPasses
|
||||||
@@ -79,8 +79,8 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
name = a_Stream.ReadAlignedString(a_Stream.ReadInt32()),
|
name = a_Stream.ReadAlignedString(a_Stream.ReadInt32()),
|
||||||
m_Texture = sourceFile.ReadPPtr(),
|
m_Texture = sourceFile.ReadPPtr(),
|
||||||
m_Scale = new float[2] { a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
m_Scale = new[] { a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
m_Offset = new float[2] { a_Stream.ReadSingle(), a_Stream.ReadSingle() }
|
m_Offset = new[] { a_Stream.ReadSingle(), a_Stream.ReadSingle() }
|
||||||
};
|
};
|
||||||
m_TexEnvs[i] = m_TexEnv;
|
m_TexEnvs[i] = m_TexEnv;
|
||||||
}
|
}
|
||||||
@@ -102,7 +102,7 @@ namespace Unity_Studio
|
|||||||
strColorPair m_Color = new strColorPair()
|
strColorPair m_Color = new strColorPair()
|
||||||
{
|
{
|
||||||
first = a_Stream.ReadAlignedString(a_Stream.ReadInt32()),
|
first = a_Stream.ReadAlignedString(a_Stream.ReadInt32()),
|
||||||
second = new float[4] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() }
|
second = new[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() }
|
||||||
};
|
};
|
||||||
m_Colors[i] = m_Color;
|
m_Colors[i] = m_Color;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ Y Top Y Up
|
|||||||
| / |
|
| / |
|
||||||
| / |
|
| / |
|
||||||
+--------X X--------+
|
+--------X X--------+
|
||||||
Right to the \
|
Right to the \
|
||||||
left \
|
left \
|
||||||
Z towards viewer
|
Z towards viewer
|
||||||
|
|
||||||
3ds Max is right-handed with Z up
|
3ds Max is right-handed with Z up
|
||||||
Aircraft View
|
Aircraft View
|
||||||
@@ -36,7 +36,7 @@ Z Top Z Up (Viewcube Top)
|
|||||||
| / from \ |
|
| / from \ |
|
||||||
| / viewer \ |
|
| / viewer \ |
|
||||||
+--------(-X) (VC Back) +--------X to the right
|
+--------(-X) (VC Back) +--------X to the right
|
||||||
Right (Viewcube Right)
|
Right (Viewcube Right)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -48,10 +48,10 @@ Y Top Y Up (Viewcube Top)
|
|||||||
| / |
|
| / |
|
||||||
| / |
|
| / |
|
||||||
+--------(-X) +--------X to the right
|
+--------(-X) +--------X to the right
|
||||||
Right \ (Viewcube Right)
|
Right \ (Viewcube Right)
|
||||||
\
|
\
|
||||||
Z towards viewer
|
Z towards viewer
|
||||||
(Viewcube Front)
|
(Viewcube Front)
|
||||||
|
|
||||||
Exporting FBX from Max, vertex components are ALWAYS written as they are in max: X Y Z.
|
Exporting FBX from Max, vertex components are ALWAYS written as they are in max: X Y Z.
|
||||||
The Axis option only affects GlobalSettings and PreRotation in the FBX file.
|
The Axis option only affects GlobalSettings and PreRotation in the FBX file.
|
||||||
@@ -102,7 +102,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
public class Mesh
|
public class Mesh
|
||||||
{
|
{
|
||||||
private EndianStream a_Stream;
|
private EndianBinaryReader a_Stream;
|
||||||
public string m_Name;
|
public string m_Name;
|
||||||
public List<SubMesh> m_SubMeshes = new List<SubMesh>();
|
public List<SubMesh> m_SubMeshes = new List<SubMesh>();
|
||||||
public List<uint> m_Indices = new List<uint>(); //use a list because I don't always know the facecount for triangle strips
|
public List<uint> m_Indices = new List<uint>(); //use a list because I don't always know the facecount for triangle strips
|
||||||
@@ -166,7 +166,7 @@ namespace Unity_Studio
|
|||||||
public byte m_BitSize;
|
public byte m_BitSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float bytesToFloat (byte[] inputBytes)
|
public float bytesToFloat(byte[] inputBytes)
|
||||||
{
|
{
|
||||||
float result = 0;
|
float result = 0;
|
||||||
if (a_Stream.endian == EndianType.BigEndian) { Array.Reverse(inputBytes); }
|
if (a_Stream.endian == EndianType.BigEndian) { Array.Reverse(inputBytes); }
|
||||||
@@ -187,7 +187,7 @@ namespace Unity_Studio
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint[] UnpackBitVector (PackedBitVector pakData)
|
public uint[] UnpackBitVector(PackedBitVector pakData)
|
||||||
{
|
{
|
||||||
uint[] unpackedVectors = new uint[pakData.m_NumItems];
|
uint[] unpackedVectors = new uint[pakData.m_NumItems];
|
||||||
//int bitmax = 0;//used to convert int value to float
|
//int bitmax = 0;//used to convert int value to float
|
||||||
@@ -257,35 +257,35 @@ namespace Unity_Studio
|
|||||||
//compute bit position in m_Data for each value
|
//compute bit position in m_Data for each value
|
||||||
/*byte[] value = new byte[4] { 0, 0, 0, 0 };
|
/*byte[] value = new byte[4] { 0, 0, 0, 0 };
|
||||||
|
|
||||||
int byteCount = pakData.m_BitSize / 8;//bytes in single value
|
int byteCount = pakData.m_BitSize / 8;//bytes in single value
|
||||||
int bitCount = pakData.m_BitSize % 8;
|
int bitCount = pakData.m_BitSize % 8;
|
||||||
|
|
||||||
for (int v = 0; v < pakData.m_NumItems; v++)
|
for (int v = 0; v < pakData.m_NumItems; v++)
|
||||||
{
|
{
|
||||||
if ((bitCount * v) % 8 == 0) //bitstream is "aligned"
|
if ((bitCount * v) % 8 == 0) //bitstream is "aligned"
|
||||||
{//does this make sense if I'm gonna compute unaligned anywhay?
|
{//does this make sense if I'm gonna compute unaligned anywhay?
|
||||||
for (int b = 0; b < byteCount; b++)
|
for (int b = 0; b < byteCount; b++)
|
||||||
{
|
{
|
||||||
value[b] = pakData.m_Data[b + v * (byteCount+1)];
|
value[b] = pakData.m_Data[b + v * (byteCount+1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (byteCount < 4) //shouldn't it be always?
|
if (byteCount < 4) //shouldn't it be always?
|
||||||
{
|
{
|
||||||
byte lastByte = pakData.m_Data[bitCount * v / 8];
|
byte lastByte = pakData.m_Data[bitCount * v / 8];
|
||||||
|
|
||||||
for (int b = 0; b < bitCount; b++)//no
|
for (int b = 0; b < bitCount; b++)//no
|
||||||
{
|
{
|
||||||
//set bit in val[byteCount+1]
|
//set bit in val[byteCount+1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//god knows
|
//god knows
|
||||||
}
|
}
|
||||||
|
|
||||||
unpackedVectors[v] = BitConverter.ToSingle(value, 0);
|
unpackedVectors[v] = BitConverter.ToSingle(value, 0);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
||||||
//first I split the data into byte-aligned arrays
|
//first I split the data into byte-aligned arrays
|
||||||
@@ -293,35 +293,35 @@ namespace Unity_Studio
|
|||||||
//then no point in dividing?
|
//then no point in dividing?
|
||||||
/*int groupSize = byteCount + (bitCount + 7)/8;
|
/*int groupSize = byteCount + (bitCount + 7)/8;
|
||||||
|
|
||||||
int groups = pakData.m_Data.Length / groupSize;
|
int groups = pakData.m_Data.Length / groupSize;
|
||||||
int valPerGr = (int)(pakData.m_NumItems / groups);
|
int valPerGr = (int)(pakData.m_NumItems / groups);
|
||||||
byte[] group = new byte[groupSize];
|
byte[] group = new byte[groupSize];
|
||||||
|
|
||||||
for (int g = 0; g < groups; g++)
|
for (int g = 0; g < groups; g++)
|
||||||
{
|
{
|
||||||
Buffer.BlockCopy(pakData.m_Data, g * groupSize, group, 0, groupSize);
|
Buffer.BlockCopy(pakData.m_Data, g * groupSize, group, 0, groupSize);
|
||||||
|
|
||||||
for (int v = 0; v < valPerGr; v++)
|
for (int v = 0; v < valPerGr; v++)
|
||||||
{
|
{
|
||||||
|
|
||||||
unpackedVectors[v + g * valPerGr] = BitConverter.ToSingle(value, 0);
|
unpackedVectors[v + g * valPerGr] = BitConverter.ToSingle(value, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//m_Data size is not necessarily a multiple of align, so there can be one extra group with fewer values
|
//m_Data size is not necessarily a multiple of align, so there can be one extra group with fewer values
|
||||||
int lastBytes = pakData.m_Data.Length % groupSize;
|
int lastBytes = pakData.m_Data.Length % groupSize;
|
||||||
int lastVal = (int)(pakData.m_NumItems - groups * valPerGr);
|
int lastVal = (int)(pakData.m_NumItems - groups * valPerGr);
|
||||||
|
|
||||||
if (lastBytes > 0)
|
if (lastBytes > 0)
|
||||||
{
|
{
|
||||||
Buffer.BlockCopy(pakData.m_Data, groups * groupSize, group, 0, lastBytes);
|
Buffer.BlockCopy(pakData.m_Data, groups * groupSize, group, 0, lastBytes);
|
||||||
|
|
||||||
for (int v = 0; v < lastVal; v++)
|
for (int v = 0; v < lastVal; v++)
|
||||||
{
|
{
|
||||||
|
|
||||||
unpackedVectors[v + groups * valPerGr] = BitConverter.ToSingle(value, 0);
|
unpackedVectors[v + groups * valPerGr] = BitConverter.ToSingle(value, 0);
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
return unpackedVectors;
|
return unpackedVectors;
|
||||||
}
|
}
|
||||||
@@ -333,7 +333,6 @@ namespace Unity_Studio
|
|||||||
var version = MeshPD.sourceFile.version;
|
var version = MeshPD.sourceFile.version;
|
||||||
a_Stream = MeshPD.sourceFile.a_Stream;
|
a_Stream = MeshPD.sourceFile.a_Stream;
|
||||||
a_Stream.Position = MeshPD.Offset;
|
a_Stream.Position = MeshPD.Offset;
|
||||||
MeshPD.extension = ".obj";
|
|
||||||
bool m_Use16BitIndices = true; //3.5.0 and newer always uses 16bit indices
|
bool m_Use16BitIndices = true; //3.5.0 and newer always uses 16bit indices
|
||||||
uint m_MeshCompression = 0;
|
uint m_MeshCompression = 0;
|
||||||
|
|
||||||
@@ -388,6 +387,10 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
if (version[0] >= 3)
|
if (version[0] >= 3)
|
||||||
{
|
{
|
||||||
|
if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3))//2017.3 and up
|
||||||
|
{
|
||||||
|
var baseVertex = a_Stream.ReadUInt32();
|
||||||
|
}
|
||||||
m_SubMeshes[s].firstVertex = a_Stream.ReadUInt32();
|
m_SubMeshes[s].firstVertex = a_Stream.ReadUInt32();
|
||||||
m_SubMeshes[s].vertexCount = a_Stream.ReadUInt32();
|
m_SubMeshes[s].vertexCount = a_Stream.ReadUInt32();
|
||||||
a_Stream.Position += 24; //Axis-Aligned Bounding Box
|
a_Stream.Position += 24; //Axis-Aligned Bounding Box
|
||||||
@@ -440,7 +443,7 @@ namespace Unity_Studio
|
|||||||
m_BindPose = new float[a_Stream.ReadInt32()][,];
|
m_BindPose = new float[a_Stream.ReadInt32()][,];
|
||||||
for (int i = 0; i < m_BindPose.Length; i++)
|
for (int i = 0; i < m_BindPose.Length; i++)
|
||||||
{
|
{
|
||||||
m_BindPose[i] = new float[4, 4] {
|
m_BindPose[i] = new[,] {
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
@@ -466,7 +469,10 @@ namespace Unity_Studio
|
|||||||
bool m_KeepIndices = a_Stream.ReadBoolean();
|
bool m_KeepIndices = a_Stream.ReadBoolean();
|
||||||
}
|
}
|
||||||
a_Stream.AlignStream(4);
|
a_Stream.AlignStream(4);
|
||||||
|
if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3))//2017.3 and up
|
||||||
|
{
|
||||||
|
var m_IndexFormat = a_Stream.ReadInt32();
|
||||||
|
}
|
||||||
int m_IndexBuffer_size = a_Stream.ReadInt32();
|
int m_IndexBuffer_size = a_Stream.ReadInt32();
|
||||||
|
|
||||||
if (m_Use16BitIndices)
|
if (m_Use16BitIndices)
|
||||||
@@ -500,18 +506,18 @@ namespace Unity_Studio
|
|||||||
for (int i = 0; i < 4; i++) { m_Skin[s][i].boneIndex = a_Stream.ReadInt32(); }
|
for (int i = 0; i < 4; i++) { m_Skin[s][i].boneIndex = a_Stream.ReadInt32(); }
|
||||||
|
|
||||||
/*m_Skin[s] = new Dictionary<int, float>();
|
/*m_Skin[s] = new Dictionary<int, float>();
|
||||||
float[] weights = new float[4] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
float[] weights = new float[4] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
int boneIndex = a_Stream.ReadInt32();
|
int boneIndex = a_Stream.ReadInt32();
|
||||||
m_Skin[s][boneIndex] = weights[i];
|
m_Skin[s][boneIndex] = weights[i];
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
m_BindPose = new float[a_Stream.ReadInt32()][,];
|
m_BindPose = new float[a_Stream.ReadInt32()][,];
|
||||||
for (int i = 0; i < m_BindPose.Length; i++)
|
for (int i = 0; i < m_BindPose.Length; i++)
|
||||||
{
|
{
|
||||||
m_BindPose[i] = new float[4, 4] {
|
m_BindPose[i] = new[,] {
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
@@ -562,12 +568,12 @@ namespace Unity_Studio
|
|||||||
for (int i = 0; i < 4; i++) { m_Skin[s][i].boneIndex = a_Stream.ReadInt32(); }
|
for (int i = 0; i < 4; i++) { m_Skin[s][i].boneIndex = a_Stream.ReadInt32(); }
|
||||||
|
|
||||||
/*m_Skin[s] = new Dictionary<int, float>();
|
/*m_Skin[s] = new Dictionary<int, float>();
|
||||||
float[] weights = new float[4] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
float[] weights = new float[4] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
int boneIndex = a_Stream.ReadInt32();
|
int boneIndex = a_Stream.ReadInt32();
|
||||||
m_Skin[s][boneIndex] = weights[i];
|
m_Skin[s][boneIndex] = weights[i];
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -576,7 +582,7 @@ namespace Unity_Studio
|
|||||||
m_BindPose = new float[a_Stream.ReadInt32()][,];
|
m_BindPose = new float[a_Stream.ReadInt32()][,];
|
||||||
for (int i = 0; i < m_BindPose.Length; i++)
|
for (int i = 0; i < m_BindPose.Length; i++)
|
||||||
{
|
{
|
||||||
m_BindPose[i] = new float[4, 4] {
|
m_BindPose[i] = new[,] {
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
{ a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() },
|
||||||
@@ -677,10 +683,10 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*var absoluteOffset = a_Stream.Position + 4 + m_Streams[s].offset;
|
/*var absoluteOffset = a_Stream.Position + 4 + m_Streams[s].offset;
|
||||||
if ((absoluteOffset % m_Streams[s].stride) != 0)
|
if ((absoluteOffset % m_Streams[s].stride) != 0)
|
||||||
{
|
{
|
||||||
m_Streams[s].offset += m_Streams[s].stride - (int)(absoluteOffset % m_Streams[s].stride);
|
m_Streams[s].offset += m_Streams[s].stride - (int)(absoluteOffset % m_Streams[s].stride);
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -713,18 +719,18 @@ namespace Unity_Studio
|
|||||||
componentByteSize = 4 / (int)Math.Pow(2, m_Channel.format);
|
componentByteSize = 4 / (int)Math.Pow(2, m_Channel.format);
|
||||||
|
|
||||||
/*switch (m_Channel.format)
|
/*switch (m_Channel.format)
|
||||||
{
|
{
|
||||||
case 0: //32bit
|
case 0: //32bit
|
||||||
valueBufferSize = 4;
|
valueBufferSize = 4;
|
||||||
break;
|
break;
|
||||||
case 1: //16bit
|
case 1: //16bit
|
||||||
valueBufferSize = 2;
|
valueBufferSize = 2;
|
||||||
break;
|
break;
|
||||||
case 2: //8bit
|
case 2: //8bit
|
||||||
valueBufferSize = 1;
|
valueBufferSize = 1;
|
||||||
m_Channel.dimension = 4;//in older versions this is 1, as in 1 color with 4 components
|
m_Channel.dimension = 4;//in older versions this is 1, as in 1 color with 4 components
|
||||||
break;
|
break;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
componentBytes = new byte[componentByteSize];
|
componentBytes = new byte[componentByteSize];
|
||||||
componentsArray = new float[m_VertexCount * m_Channel.dimension];
|
componentsArray = new float[m_VertexCount * m_Channel.dimension];
|
||||||
@@ -1077,8 +1083,7 @@ namespace Unity_Studio
|
|||||||
m_BoneIndices.m_BitSize = a_Stream.ReadByte();
|
m_BoneIndices.m_BitSize = a_Stream.ReadByte();
|
||||||
a_Stream.Position += 3; //4 byte alignment
|
a_Stream.Position += 3; //4 byte alignment
|
||||||
|
|
||||||
//how the hell does this work??
|
if (m_BoneIndices.m_NumItems > 0 && (bool)Properties.Settings.Default["exportDeformers"])
|
||||||
if (m_BoneIndices.m_NumItems > 0 && m_BoneIndices.m_NumItems == m_Weights.m_NumItems && (bool)Properties.Settings.Default["exportDeformers"])
|
|
||||||
{
|
{
|
||||||
uint[] m_Weights_Unpacked = UnpackBitVector(m_Weights);
|
uint[] m_Weights_Unpacked = UnpackBitVector(m_Weights);
|
||||||
int bitmax = 0;
|
int bitmax = 0;
|
||||||
@@ -1086,18 +1091,73 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
uint[] m_BoneIndices_Unpacked = UnpackBitVector(m_BoneIndices);
|
uint[] m_BoneIndices_Unpacked = UnpackBitVector(m_BoneIndices);
|
||||||
|
|
||||||
m_Skin = new List<BoneInfluence>[m_BoneIndices.m_NumItems / 4];
|
m_Skin = new List<BoneInfluence>[m_VertexCount];
|
||||||
for (int s = 0; s < m_Skin.Length; s++)
|
for (int s = 0; s < m_Skin.Length; s++)
|
||||||
{
|
{
|
||||||
m_Skin[s] = new List<BoneInfluence>();
|
m_Skin[s] = new List<BoneInfluence>(4);
|
||||||
for (int i = 0; i < 4; i++)
|
}
|
||||||
|
|
||||||
|
int inflCount = m_Weights.m_NumItems;
|
||||||
|
int vertIndex = 0;
|
||||||
|
int weightIndex = 0;
|
||||||
|
int bonesIndex = 0;
|
||||||
|
for (weightIndex = 0; weightIndex < inflCount; vertIndex++)
|
||||||
|
{
|
||||||
|
int inflSum = 0;
|
||||||
|
int j;
|
||||||
|
for (j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
m_Skin[s].Add(new BoneInfluence()
|
int curWeight = 0;
|
||||||
|
if (j == 3)
|
||||||
{
|
{
|
||||||
weight = (float)((double)m_Weights_Unpacked[s * 4 + i] / bitmax),
|
curWeight = 31 - inflSum;
|
||||||
boneIndex = (int)m_BoneIndices_Unpacked[s * 4 + i]
|
}
|
||||||
});
|
else
|
||||||
|
{
|
||||||
|
curWeight = (int)m_Weights_Unpacked[weightIndex];
|
||||||
|
weightIndex++;
|
||||||
|
inflSum += curWeight;
|
||||||
|
}
|
||||||
|
double curWeightDouble = (double)curWeight;
|
||||||
|
float realCurWeight = (float)(curWeightDouble / bitmax);
|
||||||
|
|
||||||
|
int boneIndex = (int)m_BoneIndices_Unpacked[bonesIndex];
|
||||||
|
bonesIndex++;
|
||||||
|
if (boneIndex < 0)
|
||||||
|
{
|
||||||
|
throw new Exception($"Invalid bone index {boneIndex}");
|
||||||
|
}
|
||||||
|
BoneInfluence boneInfl = new BoneInfluence()
|
||||||
|
{
|
||||||
|
weight = realCurWeight,
|
||||||
|
boneIndex = boneIndex,
|
||||||
|
};
|
||||||
|
m_Skin[vertIndex].Add(boneInfl);
|
||||||
|
|
||||||
|
if (inflSum == 31)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (inflSum > 31)
|
||||||
|
{
|
||||||
|
throw new Exception("Influence sum " + inflSum + " greater than 31");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
for (; j < 4; j++)
|
||||||
|
{
|
||||||
|
BoneInfluence boneInfl = new BoneInfluence()
|
||||||
|
{
|
||||||
|
weight = 0.0f,
|
||||||
|
boneIndex = 0,
|
||||||
|
};
|
||||||
|
m_Skin[vertIndex].Add(boneInfl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isFine = vertIndex == m_VertexCount;
|
||||||
|
if (!isFine)
|
||||||
|
{
|
||||||
|
throw new Exception("Vertecies aint equals");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -1226,9 +1286,8 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_Name != "") { MeshPD.Text = m_Name; }
|
MeshPD.extension = ".obj";
|
||||||
else { MeshPD.Text = MeshPD.TypeString + " #" + MeshPD.uniqueID; }
|
MeshPD.Text = m_Name;
|
||||||
MeshPD.SubItems.AddRange(new[] { MeshPD.TypeString, MeshPD.Size.ToString() });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ namespace Unity_Studio
|
|||||||
var m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
var m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
if (readSwitch)
|
if (readSwitch)
|
||||||
{
|
{
|
||||||
preloadData.extension = ".txt";
|
|
||||||
if ((serializedText = preloadData.ViewStruct()) == null)
|
if ((serializedText = preloadData.ViewStruct()) == null)
|
||||||
{
|
{
|
||||||
var str = "PPtr<GameObject> m_GameObject\r\n";
|
var str = "PPtr<GameObject> m_GameObject\r\n";
|
||||||
@@ -38,15 +37,8 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_Name != "")
|
preloadData.extension = ".txt";
|
||||||
{
|
preloadData.Text = m_Name;
|
||||||
preloadData.Text = m_Name;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID;
|
|
||||||
}
|
|
||||||
preloadData.SubItems.AddRange(new[] { preloadData.TypeString, preloadData.Size.ToString() });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
37
Unity Studio/Unity Classes/MovieTexture.cs
Normal file
37
Unity Studio/Unity Classes/MovieTexture.cs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Unity_Studio
|
||||||
|
{
|
||||||
|
class MovieTexture
|
||||||
|
{
|
||||||
|
public string m_Name;
|
||||||
|
public byte[] m_MovieData;
|
||||||
|
|
||||||
|
public MovieTexture(AssetPreloadData preloadData, bool readSwitch)
|
||||||
|
{
|
||||||
|
var sourceFile = preloadData.sourceFile;
|
||||||
|
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||||
|
a_Stream.Position = preloadData.Offset;
|
||||||
|
|
||||||
|
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
if (readSwitch)
|
||||||
|
{
|
||||||
|
var m_Loop = a_Stream.ReadBoolean();
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
//PPtr<AudioClip>
|
||||||
|
sourceFile.ReadPPtr();
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
m_MovieData = a_Stream.ReadBytes(size);
|
||||||
|
var m_ColorSpace = a_Stream.ReadInt32();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
preloadData.extension = ".ogv";
|
||||||
|
preloadData.Text = m_Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,7 +39,7 @@ namespace Unity_Studio
|
|||||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] < 1) || (sourceFile.version[0] == 4 && sourceFile.version[1] == 6 && sourceFile.version[2] >= 3))
|
if ((sourceFile.version[0] == 5 && sourceFile.version[1] < 1) || (sourceFile.version[0] == 4 && sourceFile.version[1] == 6 && sourceFile.version[2] >= 3))
|
||||||
{ int targetIOSGraphics = a_Stream.ReadInt32(); }
|
{ int targetIOSGraphics = a_Stream.ReadInt32(); }
|
||||||
|
|
||||||
if (sourceFile.version[0] == 5 && (sourceFile.version[1] > 2 || (sourceFile.version[1] == 2 && sourceFile.version[2] >= 1)))
|
if (sourceFile.version[0] >= 5 || sourceFile.version[0] == 5 && (sourceFile.version[1] > 2 || (sourceFile.version[1] == 2 && sourceFile.version[2] >= 1)))
|
||||||
{ bool useOnDemandResources = a_Stream.ReadBoolean(); a_Stream.AlignStream(4); }
|
{ bool useOnDemandResources = a_Stream.ReadBoolean(); a_Stream.AlignStream(4); }
|
||||||
|
|
||||||
if (sourceFile.version[0] < 5 || (sourceFile.version[0] == 5 && sourceFile.version[1] < 3))
|
if (sourceFile.version[0] < 5 || (sourceFile.version[0] == 5 && sourceFile.version[1] < 3))
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ namespace Unity_Studio
|
|||||||
var sourceFile = preloadData.sourceFile;
|
var sourceFile = preloadData.sourceFile;
|
||||||
var a_Stream = preloadData.sourceFile.a_Stream;
|
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||||
a_Stream.Position = preloadData.Offset;
|
a_Stream.Position = preloadData.Offset;
|
||||||
preloadData.extension = ".txt";
|
|
||||||
|
|
||||||
if (sourceFile.platform == -2)
|
if (sourceFile.platform == -2)
|
||||||
{
|
{
|
||||||
@@ -33,10 +32,24 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 5 || sourceFile.version[0] > 5)//5.5.0 and up
|
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 5 || sourceFile.version[0] > 5)//5.5.0 and up
|
||||||
{
|
{
|
||||||
a_Stream.Position = preloadData.Offset;
|
|
||||||
var str = (string)ShaderResource.ResourceManager.GetObject($"Shader{sourceFile.version[0]}{sourceFile.version[1]}");
|
var str = (string)ShaderResource.ResourceManager.GetObject($"Shader{sourceFile.version[0]}{sourceFile.version[1]}");
|
||||||
var members = new JavaScriptSerializer().Deserialize<List<ClassMember>>(str);
|
if (str == null)
|
||||||
m_Script = ReadSerializedShader(members, a_Stream);
|
{
|
||||||
|
str = preloadData.ViewStruct();
|
||||||
|
if (str == null)
|
||||||
|
m_Script = Encoding.UTF8.GetBytes("Serialized Shader can't be read");
|
||||||
|
else
|
||||||
|
m_Script = Encoding.UTF8.GetBytes(str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
a_Stream.Position = preloadData.Offset;
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
var members = new JavaScriptSerializer().Deserialize<List<ClassMember>>(str);
|
||||||
|
ClassStructHelper.ReadClassStruct(sb, members, a_Stream);
|
||||||
|
m_Script = Encoding.UTF8.GetBytes(sb.ToString());
|
||||||
|
//m_Script = ReadSerializedShader(members, a_Stream);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -60,13 +73,12 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_Name != "") { preloadData.Text = m_Name; }
|
preloadData.extension = ".txt";
|
||||||
else { preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID; }
|
preloadData.Text = m_Name;
|
||||||
preloadData.SubItems.AddRange(new[] { preloadData.TypeString, preloadData.Size.ToString() });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static byte[] ReadSerializedShader(List<ClassMember> members, EndianStream a_Stream)
|
/*private static byte[] ReadSerializedShader(List<ClassMember> members, EndianBinaryReader a_Stream)
|
||||||
{
|
{
|
||||||
var offsets = new List<uint>();
|
var offsets = new List<uint>();
|
||||||
var compressedLengths = new List<uint>();
|
var compressedLengths = new List<uint>();
|
||||||
@@ -112,6 +124,8 @@ namespace Unity_Studio
|
|||||||
return decompressedBlob;
|
return decompressedBlob;
|
||||||
}
|
}
|
||||||
var align = (member.Flag & 0x4000) != 0;
|
var align = (member.Flag & 0x4000) != 0;
|
||||||
|
if (member.alignBefore)
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
if (varTypeStr == "SInt8")//sbyte
|
if (varTypeStr == "SInt8")//sbyte
|
||||||
{
|
{
|
||||||
a_Stream.ReadSByte();
|
a_Stream.ReadSByte();
|
||||||
@@ -132,7 +146,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
a_Stream.ReadInt32();
|
a_Stream.ReadInt32();
|
||||||
}
|
}
|
||||||
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int")//UInt32
|
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int" || varTypeStr == "Type*")//UInt32
|
||||||
{
|
{
|
||||||
a_Stream.ReadUInt32();
|
a_Stream.ReadUInt32();
|
||||||
}
|
}
|
||||||
@@ -166,7 +180,7 @@ namespace Unity_Studio
|
|||||||
if ((members[i - 1].Flag & 0x4000) != 0)
|
if ((members[i - 1].Flag & 0x4000) != 0)
|
||||||
align = true;
|
align = true;
|
||||||
var size = a_Stream.ReadInt32();
|
var size = a_Stream.ReadInt32();
|
||||||
var array = AssetPreloadData.ReadArray(members, level, i);
|
var array = ClassStructHelper.ReadArray(members, level, i);
|
||||||
for (int j = 0; j < size; j++)
|
for (int j = 0; j < size; j++)
|
||||||
{
|
{
|
||||||
ReadSerializedShader(array, a_Stream);
|
ReadSerializedShader(array, a_Stream);
|
||||||
@@ -175,12 +189,16 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
align = false;
|
if (align)
|
||||||
|
{
|
||||||
|
align = false;
|
||||||
|
ClassStructHelper.SetAlignBefore(members, level, i + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (align)
|
if (align)
|
||||||
a_Stream.AlignStream(4);
|
a_Stream.AlignStream(4);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,18 +127,18 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (version[0] >= 4 || (version[0] == 4 && version[1] >= 3))
|
if (version[0] > 4 || (version[0] == 4 && version[1] >= 3))
|
||||||
{
|
{
|
||||||
int m_BlendShapeWeights = a_Stream.ReadInt32();
|
int m_BlendShapeWeights = a_Stream.ReadInt32();
|
||||||
a_Stream.Position += m_BlendShapeWeights * 4; //floats
|
a_Stream.Position += m_BlendShapeWeights * 4; //floats
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version[0] >= 4 || (version[0] >= 3 && version[1] >= 5))
|
if (version[0] > 4 || (version[0] >= 3 && version[1] >= 5))
|
||||||
{
|
{
|
||||||
PPtr m_RootBone = sourceFile.ReadPPtr();
|
PPtr m_RootBone = sourceFile.ReadPPtr();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version[0] >= 4 || (version[0] == 3 && version[1] >= 4))
|
if (version[0] > 4 || (version[0] == 3 && version[1] >= 4))
|
||||||
{
|
{
|
||||||
//AABB
|
//AABB
|
||||||
float[] m_Center = { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
float[] m_Center = { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
||||||
|
|||||||
136
Unity Studio/Unity Classes/Sprite.cs
Normal file
136
Unity Studio/Unity Classes/Sprite.cs
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Unity_Studio
|
||||||
|
{
|
||||||
|
class Sprite
|
||||||
|
{
|
||||||
|
public string m_Name;
|
||||||
|
public PPtr texture;
|
||||||
|
public PPtr m_SpriteAtlas;
|
||||||
|
public RectangleF textureRect;
|
||||||
|
|
||||||
|
public Sprite(AssetPreloadData preloadData, bool readSwitch)
|
||||||
|
{
|
||||||
|
var sourceFile = preloadData.sourceFile;
|
||||||
|
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||||
|
a_Stream.Position = preloadData.Offset;
|
||||||
|
|
||||||
|
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
if (readSwitch)
|
||||||
|
{
|
||||||
|
//Rectf m_Rect
|
||||||
|
var m_Rect = new RectangleF(a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle());
|
||||||
|
//Vector2f m_Offset
|
||||||
|
a_Stream.Position += 8;
|
||||||
|
if (sourceFile.version[0] > 4 || (sourceFile.version[0] == 4 && sourceFile.version[1] >= 2)) //4.2 and up
|
||||||
|
{
|
||||||
|
//Vector4f m_Border
|
||||||
|
a_Stream.Position += 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
var m_PixelsToUnits = a_Stream.ReadSingle();
|
||||||
|
if (sourceFile.version[0] > 5 || (sourceFile.version[0] == 5 && sourceFile.version[1] >= 5)) //5.5 and up
|
||||||
|
{
|
||||||
|
//Vector2f m_Pivot
|
||||||
|
a_Stream.Position += 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
var m_Extrude = a_Stream.ReadUInt32();
|
||||||
|
if (sourceFile.version[0] > 5 || (sourceFile.version[0] == 5 && sourceFile.version[1] >= 1)) //5.1 and up
|
||||||
|
{
|
||||||
|
var m_IsPolygon = a_Stream.ReadBoolean();
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sourceFile.version[0] >= 2017) //2017 and up
|
||||||
|
{
|
||||||
|
//pair m_RenderDataKey
|
||||||
|
a_Stream.Position += 24;
|
||||||
|
//vector m_AtlasTags
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
var data = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
}
|
||||||
|
|
||||||
|
//PPtr<SpriteAtlas> m_SpriteAtlas
|
||||||
|
m_SpriteAtlas = sourceFile.ReadPPtr();
|
||||||
|
}
|
||||||
|
|
||||||
|
//SpriteRenderData m_RD
|
||||||
|
// PPtr<Texture2D> texture
|
||||||
|
texture = sourceFile.ReadPPtr();
|
||||||
|
// PPtr<Texture2D> alphaTexture
|
||||||
|
if (sourceFile.version[0] >= 5) //5.0 and up
|
||||||
|
{
|
||||||
|
var alphaTexture = sourceFile.ReadPPtr();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sourceFile.version[0] > 5 || (sourceFile.version[0] == 5 && sourceFile.version[1] >= 6)) //5.6 and up
|
||||||
|
{
|
||||||
|
// vector m_SubMeshes
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
// SubMesh data
|
||||||
|
if (sourceFile.version[0] > 2017 || (sourceFile.version[0] == 2017 && sourceFile.version[1] >= 3)) //2017.3 and up
|
||||||
|
{
|
||||||
|
a_Stream.Position += 48 * size;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
a_Stream.Position += 44 * size;
|
||||||
|
}
|
||||||
|
|
||||||
|
// vector m_IndexBuffer
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
a_Stream.Position += size; //UInt8 data
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
// VertexData m_VertexData
|
||||||
|
var m_CurrentChannels = a_Stream.ReadInt32();
|
||||||
|
var m_VertexCount = a_Stream.ReadUInt32();
|
||||||
|
// vector m_Channels
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
a_Stream.Position += size * 4; //ChannelInfo data
|
||||||
|
// TypelessData m_DataSize
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
a_Stream.Position += size; //UInt8 data
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// vector vertices
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
//SpriteVertex data
|
||||||
|
a_Stream.Position += 12; //Vector3f pos
|
||||||
|
if (sourceFile.version[0] < 4 || (sourceFile.version[0] == 4 && sourceFile.version[1] <= 1)) //4.1 and down
|
||||||
|
a_Stream.Position += 8; //Vector2f uv
|
||||||
|
}
|
||||||
|
|
||||||
|
// vector indices
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
a_Stream.Position += 2 * size; //UInt16 data
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rectf textureRect
|
||||||
|
textureRect = new RectangleF(a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle());
|
||||||
|
// Vector2f textureRectOffset
|
||||||
|
// Vector2f atlasRectOffset - 5.6 and up
|
||||||
|
// unsigned int settingsRaw
|
||||||
|
// Vector4f uvTransform - 4.2 and up
|
||||||
|
// float downscaleMultiplier - 2017 and up
|
||||||
|
//vector m_PhysicsShape - 2017 and up
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
preloadData.extension = ".png";
|
||||||
|
preloadData.Text = m_Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
65
Unity Studio/Unity Classes/SpriteAtlas.cs
Normal file
65
Unity Studio/Unity Classes/SpriteAtlas.cs
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Unity_Studio
|
||||||
|
{
|
||||||
|
class SpriteAtlas
|
||||||
|
{
|
||||||
|
public List<PPtr> m_PackedSprites = new List<PPtr>();
|
||||||
|
public List<PPtr> textures = new List<PPtr>();
|
||||||
|
public List<RectangleF> textureRects = new List<RectangleF>();
|
||||||
|
|
||||||
|
|
||||||
|
public SpriteAtlas(AssetPreloadData preloadData)
|
||||||
|
{
|
||||||
|
var sourceFile = preloadData.sourceFile;
|
||||||
|
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||||
|
a_Stream.Position = preloadData.Offset;
|
||||||
|
|
||||||
|
var m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
//vector m_PackedSprites
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
//PPtr<Sprite> data
|
||||||
|
m_PackedSprites.Add(sourceFile.ReadPPtr());
|
||||||
|
}
|
||||||
|
//vector m_PackedSpriteNamesToIndex
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
var data = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
}
|
||||||
|
//map m_RenderDataMap
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
//pair first
|
||||||
|
a_Stream.Position += 24;
|
||||||
|
//SpriteAtlasData second
|
||||||
|
// PPtr<Texture2D> texture
|
||||||
|
textures.Add(sourceFile.ReadPPtr());
|
||||||
|
// PPtr<Texture2D> alphaTexture
|
||||||
|
var alphaTexture = sourceFile.ReadPPtr();
|
||||||
|
// Rectf textureRect
|
||||||
|
textureRects.Add(new RectangleF(a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle()));
|
||||||
|
// Vector2f textureRectOffset
|
||||||
|
a_Stream.Position += 8;
|
||||||
|
if (sourceFile.version[0] > 2017 || (sourceFile.version[0] == 2017 && sourceFile.version[1] >= 2))//2017.2 and up
|
||||||
|
{
|
||||||
|
// Vector2f atlasRectOffset
|
||||||
|
a_Stream.Position += 8;
|
||||||
|
}
|
||||||
|
// Vector4f uvTransform
|
||||||
|
// float downscaleMultiplier
|
||||||
|
// unsigned int settingsRaw
|
||||||
|
a_Stream.Position += 24;
|
||||||
|
}
|
||||||
|
//string m_Tag
|
||||||
|
//bool m_IsVariant
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,7 +16,6 @@ namespace Unity_Studio
|
|||||||
var sourceFile = preloadData.sourceFile;
|
var sourceFile = preloadData.sourceFile;
|
||||||
var a_Stream = preloadData.sourceFile.a_Stream;
|
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||||
a_Stream.Position = preloadData.Offset;
|
a_Stream.Position = preloadData.Offset;
|
||||||
preloadData.extension = ".txt";
|
|
||||||
|
|
||||||
if (sourceFile.platform == -2)
|
if (sourceFile.platform == -2)
|
||||||
{
|
{
|
||||||
@@ -33,9 +32,8 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_Name != "") { preloadData.Text = m_Name; }
|
preloadData.extension = ".txt";
|
||||||
else { preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID; }
|
preloadData.Text = m_Name;
|
||||||
preloadData.SubItems.AddRange(new[] { preloadData.TypeString, preloadData.Size.ToString() });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Drawing.Imaging;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace Unity_Studio
|
namespace Unity_Studio
|
||||||
{
|
{
|
||||||
@@ -111,6 +112,12 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
if (sourceFile.version[0] > 2017 || (sourceFile.version[0] == 2017 && sourceFile.version[1] >= 3))//2017.3 and up
|
||||||
|
{
|
||||||
|
var m_ForcedFallbackFormat = a_Stream.ReadInt32();
|
||||||
|
var m_DownscaleFallback = a_Stream.ReadBoolean();
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
}
|
||||||
m_Width = a_Stream.ReadInt32();
|
m_Width = a_Stream.ReadInt32();
|
||||||
m_Height = a_Stream.ReadInt32();
|
m_Height = a_Stream.ReadInt32();
|
||||||
m_CompleteImageSize = a_Stream.ReadInt32();
|
m_CompleteImageSize = a_Stream.ReadInt32();
|
||||||
@@ -136,7 +143,7 @@ namespace Unity_Studio
|
|||||||
m_Aniso = a_Stream.ReadInt32();
|
m_Aniso = a_Stream.ReadInt32();
|
||||||
m_MipBias = a_Stream.ReadSingle();
|
m_MipBias = a_Stream.ReadSingle();
|
||||||
m_WrapMode = a_Stream.ReadInt32();
|
m_WrapMode = a_Stream.ReadInt32();
|
||||||
if (sourceFile.version[0] == 2017)//2017.x
|
if (sourceFile.version[0] >= 2017)//2017.x and up
|
||||||
{
|
{
|
||||||
int m_WrapV = a_Stream.ReadInt32();
|
int m_WrapV = a_Stream.ReadInt32();
|
||||||
int m_WrapW = a_Stream.ReadInt32();
|
int m_WrapW = a_Stream.ReadInt32();
|
||||||
@@ -179,12 +186,15 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
EndianStream estream;
|
if (UnityStudio.assetsfileandstream.TryGetValue(Path.GetFileName(path), out var estream))
|
||||||
if (UnityStudio.assetsfileandstream.TryGetValue(Path.GetFileName(path), out estream))
|
|
||||||
{
|
{
|
||||||
estream.Position = offset;
|
estream.Position = offset;
|
||||||
image_data = estream.ReadBytes(image_data_size);
|
image_data = estream.ReadBytes(image_data_size);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show($"can't find the resource file {Path.GetFileName(path)}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -210,15 +220,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
BGRA32[i * 4 + 3] = image_data[i];
|
BGRA32[i * 4 + 3] = image_data[i];
|
||||||
}
|
}
|
||||||
image_data = BGRA32;
|
SetBGRA32Info(BGRA32);
|
||||||
image_data_size = BGRA32.Length;
|
|
||||||
|
|
||||||
dwFlags2 = 0x41;
|
|
||||||
dwRGBBitCount = 0x20;
|
|
||||||
dwRBitMask = 0xFF0000;
|
|
||||||
dwGBitMask = 0xFF00;
|
|
||||||
dwBBitMask = 0xFF;
|
|
||||||
dwABitMask = -16777216;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.ARGB4444: //test pass
|
case TextureFormat.ARGB4444: //test pass
|
||||||
@@ -247,15 +249,7 @@ namespace Unity_Studio
|
|||||||
pixelNew[j] = (byte)((pixelNew[j] << 4) | pixelNew[j]);
|
pixelNew[j] = (byte)((pixelNew[j] << 4) | pixelNew[j]);
|
||||||
pixelNew.CopyTo(BGRA32, i * 4);
|
pixelNew.CopyTo(BGRA32, i * 4);
|
||||||
}
|
}
|
||||||
image_data = BGRA32;
|
SetBGRA32Info(BGRA32);
|
||||||
image_data_size = BGRA32.Length;
|
|
||||||
|
|
||||||
dwFlags2 = 0x41;
|
|
||||||
dwRGBBitCount = 0x20;
|
|
||||||
dwRBitMask = 0xFF0000;
|
|
||||||
dwGBitMask = 0xFF00;
|
|
||||||
dwBBitMask = 0xFF;
|
|
||||||
dwABitMask = -16777216;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.RGB24: //test pass
|
case TextureFormat.RGB24: //test pass
|
||||||
@@ -276,15 +270,7 @@ namespace Unity_Studio
|
|||||||
BGRA32[i * 4 + 2] = image_data[i * 3 + 0];
|
BGRA32[i * 4 + 2] = image_data[i * 3 + 0];
|
||||||
BGRA32[i * 4 + 3] = 255;
|
BGRA32[i * 4 + 3] = 255;
|
||||||
}
|
}
|
||||||
image_data = BGRA32;
|
SetBGRA32Info(BGRA32);
|
||||||
image_data_size = BGRA32.Length;
|
|
||||||
|
|
||||||
dwFlags2 = 0x41;
|
|
||||||
dwRGBBitCount = 0x20;
|
|
||||||
dwRBitMask = 0xFF0000;
|
|
||||||
dwGBitMask = 0xFF00;
|
|
||||||
dwBBitMask = 0xFF;
|
|
||||||
dwABitMask = -16777216;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.RGBA32: //test pass
|
case TextureFormat.RGBA32: //test pass
|
||||||
@@ -305,14 +291,7 @@ namespace Unity_Studio
|
|||||||
BGRA32[i + 2] = image_data[i + 0];
|
BGRA32[i + 2] = image_data[i + 0];
|
||||||
BGRA32[i + 3] = image_data[i + 3];
|
BGRA32[i + 3] = image_data[i + 3];
|
||||||
}
|
}
|
||||||
image_data = BGRA32;
|
SetBGRA32Info(BGRA32);
|
||||||
|
|
||||||
dwFlags2 = 0x41;
|
|
||||||
dwRGBBitCount = 0x20;
|
|
||||||
dwRBitMask = 0xFF0000;
|
|
||||||
dwGBitMask = 0xFF00;
|
|
||||||
dwBBitMask = 0xFF;
|
|
||||||
dwABitMask = -16777216;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.ARGB32://test pass
|
case TextureFormat.ARGB32://test pass
|
||||||
@@ -333,14 +312,7 @@ namespace Unity_Studio
|
|||||||
BGRA32[i + 2] = image_data[i + 1];
|
BGRA32[i + 2] = image_data[i + 1];
|
||||||
BGRA32[i + 3] = image_data[i + 0];
|
BGRA32[i + 3] = image_data[i + 0];
|
||||||
}
|
}
|
||||||
image_data = BGRA32;
|
SetBGRA32Info(BGRA32);
|
||||||
|
|
||||||
dwFlags2 = 0x41;
|
|
||||||
dwRGBBitCount = 0x20;
|
|
||||||
dwRBitMask = 0xFF0000;
|
|
||||||
dwGBitMask = 0xFF00;
|
|
||||||
dwBBitMask = 0xFF;
|
|
||||||
dwABitMask = -16777216;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.RGB565: //test pass
|
case TextureFormat.RGB565: //test pass
|
||||||
@@ -365,15 +337,7 @@ namespace Unity_Studio
|
|||||||
BGRA32[i * 2 + 2] = (byte)Math.Ceiling(f * 255);//R
|
BGRA32[i * 2 + 2] = (byte)Math.Ceiling(f * 255);//R
|
||||||
BGRA32[i * 2 + 3] = 255;//A
|
BGRA32[i * 2 + 3] = 255;//A
|
||||||
}
|
}
|
||||||
image_data = BGRA32;
|
SetBGRA32Info(BGRA32);
|
||||||
image_data_size *= 2;
|
|
||||||
|
|
||||||
dwFlags2 = 0x41;
|
|
||||||
dwRGBBitCount = 0x20;
|
|
||||||
dwRBitMask = 0xFF0000;
|
|
||||||
dwGBitMask = 0xFF00;
|
|
||||||
dwBBitMask = 0xFF;
|
|
||||||
dwABitMask = -16777216;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.DXT1: //test pass
|
case TextureFormat.DXT1: //test pass
|
||||||
@@ -434,15 +398,7 @@ namespace Unity_Studio
|
|||||||
pixelNew[j] = (byte)((pixelNew[j] << 4) | pixelNew[j]);
|
pixelNew[j] = (byte)((pixelNew[j] << 4) | pixelNew[j]);
|
||||||
pixelNew.CopyTo(BGRA32, i * 4);
|
pixelNew.CopyTo(BGRA32, i * 4);
|
||||||
}
|
}
|
||||||
image_data = BGRA32;
|
SetBGRA32Info(BGRA32);
|
||||||
image_data_size = BGRA32.Length;
|
|
||||||
|
|
||||||
dwFlags2 = 0x41;
|
|
||||||
dwRGBBitCount = 0x20;
|
|
||||||
dwRBitMask = 0xFF0000;
|
|
||||||
dwGBitMask = 0xFF00;
|
|
||||||
dwBBitMask = 0xFF;
|
|
||||||
dwABitMask = -16777216;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.BGRA32: //test pass
|
case TextureFormat.BGRA32: //test pass
|
||||||
@@ -502,28 +458,33 @@ namespace Unity_Studio
|
|||||||
pvrPixelFormat = 17;
|
pvrPixelFormat = 17;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.BC4:
|
case TextureFormat.RGB9e5Float:
|
||||||
|
{
|
||||||
|
q_format = QFORMAT.Q_FORMAT_RGB9_E5;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TextureFormat.BC4: //test pass
|
||||||
{
|
{
|
||||||
texturetype = texgenpack_texturetype.RGTC1;
|
texturetype = texgenpack_texturetype.RGTC1;
|
||||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RED_RGTC1;
|
glInternalFormat = KTXHeader.GL_COMPRESSED_RED_RGTC1;
|
||||||
glBaseInternalFormat = KTXHeader.GL_RED;
|
glBaseInternalFormat = KTXHeader.GL_RED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.BC5:
|
case TextureFormat.BC5: //test pass
|
||||||
{
|
{
|
||||||
texturetype = texgenpack_texturetype.RGTC2;
|
texturetype = texgenpack_texturetype.RGTC2;
|
||||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RG_RGTC2;
|
glInternalFormat = KTXHeader.GL_COMPRESSED_RG_RGTC2;
|
||||||
glBaseInternalFormat = KTXHeader.GL_RG;
|
glBaseInternalFormat = KTXHeader.GL_RG;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.BC6H:
|
case TextureFormat.BC6H: //test pass
|
||||||
{
|
{
|
||||||
texturetype = texgenpack_texturetype.BPTC_FLOAT;
|
texturetype = texgenpack_texturetype.BPTC_FLOAT;
|
||||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT;
|
glInternalFormat = KTXHeader.GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT;
|
||||||
glBaseInternalFormat = KTXHeader.GL_RGB;
|
glBaseInternalFormat = KTXHeader.GL_RGB;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TextureFormat.BC7:
|
case TextureFormat.BC7: //test pass
|
||||||
{
|
{
|
||||||
texturetype = texgenpack_texturetype.BPTC;
|
texturetype = texgenpack_texturetype.BPTC;
|
||||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGBA_BPTC_UNORM;
|
glInternalFormat = KTXHeader.GL_COMPRESSED_RGBA_BPTC_UNORM;
|
||||||
@@ -558,6 +519,7 @@ namespace Unity_Studio
|
|||||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TextureFormat.ETC_RGB4Crunched:
|
||||||
case TextureFormat.ETC_RGB4_3DS: //test pass
|
case TextureFormat.ETC_RGB4_3DS: //test pass
|
||||||
case TextureFormat.ETC_RGB4: //test pass
|
case TextureFormat.ETC_RGB4: //test pass
|
||||||
{
|
{
|
||||||
@@ -622,6 +584,7 @@ namespace Unity_Studio
|
|||||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TextureFormat.ETC2_RGBA8Crunched:
|
||||||
case TextureFormat.ETC_RGBA8_3DS: //test pass
|
case TextureFormat.ETC_RGBA8_3DS: //test pass
|
||||||
case TextureFormat.ETC2_RGBA8: //test pass
|
case TextureFormat.ETC2_RGBA8: //test pass
|
||||||
{
|
{
|
||||||
@@ -666,11 +629,36 @@ namespace Unity_Studio
|
|||||||
pvrPixelFormat = 40;
|
pvrPixelFormat = 40;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TextureFormat.RG16: //test pass
|
||||||
|
{
|
||||||
|
//转BGRA32
|
||||||
|
var BGRA32 = new byte[image_data_size * 2];
|
||||||
|
for (var i = 0; i < image_data_size; i += 2)
|
||||||
|
{
|
||||||
|
BGRA32[i * 2 + 1] = image_data[i + 1];//G
|
||||||
|
BGRA32[i * 2 + 2] = image_data[i];//R
|
||||||
|
BGRA32[i * 2 + 3] = 255;//A
|
||||||
|
}
|
||||||
|
SetBGRA32Info(BGRA32);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TextureFormat.R8: //test pass
|
||||||
|
{
|
||||||
|
//转BGRA32
|
||||||
|
var BGRA32 = new byte[image_data_size * 4];
|
||||||
|
for (var i = 0; i < image_data_size; i++)
|
||||||
|
{
|
||||||
|
BGRA32[i * 4 + 2] = image_data[i];//R
|
||||||
|
BGRA32[i * 4 + 3] = 255;//A
|
||||||
|
}
|
||||||
|
SetBGRA32Info(BGRA32);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
preloadData.InfoText = "Width: " + m_Width + "\nHeight: " + m_Height + "\nFormat: ";
|
preloadData.InfoText = $"Width: {m_Width}\nHeight: {m_Height}\nFormat: ";
|
||||||
|
|
||||||
string type = m_TextureFormat.ToString();
|
string type = m_TextureFormat.ToString();
|
||||||
preloadData.InfoText += type;
|
preloadData.InfoText += type;
|
||||||
@@ -688,9 +676,13 @@ namespace Unity_Studio
|
|||||||
case TextureFormat.DXT5:
|
case TextureFormat.DXT5:
|
||||||
case TextureFormat.RGBA4444:
|
case TextureFormat.RGBA4444:
|
||||||
case TextureFormat.BGRA32:
|
case TextureFormat.BGRA32:
|
||||||
|
case TextureFormat.RG16:
|
||||||
|
case TextureFormat.R8:
|
||||||
preloadData.extension = ".dds"; break;
|
preloadData.extension = ".dds"; break;
|
||||||
case TextureFormat.DXT1Crunched:
|
case TextureFormat.DXT1Crunched:
|
||||||
case TextureFormat.DXT5Crunched:
|
case TextureFormat.DXT5Crunched:
|
||||||
|
case TextureFormat.ETC_RGB4Crunched:
|
||||||
|
case TextureFormat.ETC2_RGBA8Crunched:
|
||||||
preloadData.extension = ".crn"; break;
|
preloadData.extension = ".crn"; break;
|
||||||
case TextureFormat.YUY2:
|
case TextureFormat.YUY2:
|
||||||
case TextureFormat.PVRTC_RGB2:
|
case TextureFormat.PVRTC_RGB2:
|
||||||
@@ -733,6 +725,8 @@ namespace Unity_Studio
|
|||||||
case TextureFormat.EAC_RG:
|
case TextureFormat.EAC_RG:
|
||||||
case TextureFormat.EAC_RG_SIGNED:
|
case TextureFormat.EAC_RG_SIGNED:
|
||||||
preloadData.extension = ".ktx"; break;
|
preloadData.extension = ".ktx"; break;
|
||||||
|
default:
|
||||||
|
preloadData.extension = ".tex"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (m_FilterMode)
|
switch (m_FilterMode)
|
||||||
@@ -743,7 +737,7 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
preloadData.InfoText += "\nAnisotropic level: " + m_Aniso + "\nMip map bias: " + m_MipBias;
|
preloadData.InfoText += $"\nAnisotropic level: {m_Aniso}\nMip map bias: {m_MipBias}";
|
||||||
|
|
||||||
switch (m_WrapMode)
|
switch (m_WrapMode)
|
||||||
{
|
{
|
||||||
@@ -751,9 +745,9 @@ namespace Unity_Studio
|
|||||||
case 1: preloadData.InfoText += "\nWrap mode: Clamp"; break;
|
case 1: preloadData.InfoText += "\nWrap mode: Clamp"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_Name != "") { preloadData.Text = m_Name; }
|
preloadData.Text = m_Name;
|
||||||
else { preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID; }
|
if (!string.IsNullOrEmpty(path))
|
||||||
preloadData.SubItems.AddRange(new[] { preloadData.TypeString, preloadData.Size.ToString() });
|
preloadData.fullSize = preloadData.Size + (int)size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -761,7 +755,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
if (platform == 11) //swap bytes for Xbox confirmed, PS3 not encountered
|
if (platform == 11) //swap bytes for Xbox confirmed, PS3 not encountered
|
||||||
{
|
{
|
||||||
for (var i = 0; i < (image_data_size / 2); i++)
|
for (var i = 0; i < image_data_size / 2; i++)
|
||||||
{
|
{
|
||||||
var b0 = image_data[i * 2];
|
var b0 = image_data[i * 2];
|
||||||
image_data[i * 2] = image_data[i * 2 + 1];
|
image_data[i * 2] = image_data[i * 2 + 1];
|
||||||
@@ -770,8 +764,22 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetBGRA32Info(byte[] BGRA32)
|
||||||
|
{
|
||||||
|
image_data = BGRA32;
|
||||||
|
image_data_size = BGRA32.Length;
|
||||||
|
dwFlags2 = 0x41;
|
||||||
|
dwRGBBitCount = 0x20;
|
||||||
|
dwRBitMask = 0xFF0000;
|
||||||
|
dwGBitMask = 0xFF00;
|
||||||
|
dwBBitMask = 0xFF;
|
||||||
|
dwABitMask = -16777216;
|
||||||
|
}
|
||||||
|
|
||||||
public byte[] ConvertToContainer()
|
public byte[] ConvertToContainer()
|
||||||
{
|
{
|
||||||
|
if (image_data == null || image_data.Length == 0)
|
||||||
|
return null;
|
||||||
switch (m_TextureFormat)
|
switch (m_TextureFormat)
|
||||||
{
|
{
|
||||||
case TextureFormat.Alpha8:
|
case TextureFormat.Alpha8:
|
||||||
@@ -785,6 +793,8 @@ namespace Unity_Studio
|
|||||||
case TextureFormat.DXT5:
|
case TextureFormat.DXT5:
|
||||||
case TextureFormat.RGBA4444:
|
case TextureFormat.RGBA4444:
|
||||||
case TextureFormat.BGRA32:
|
case TextureFormat.BGRA32:
|
||||||
|
case TextureFormat.RG16:
|
||||||
|
case TextureFormat.R8:
|
||||||
return ConvertToDDS();
|
return ConvertToDDS();
|
||||||
case TextureFormat.YUY2:
|
case TextureFormat.YUY2:
|
||||||
case TextureFormat.PVRTC_RGB2:
|
case TextureFormat.PVRTC_RGB2:
|
||||||
@@ -906,7 +916,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
if (image_data == null || image_data.Length == 0)
|
if (image_data == null || image_data.Length == 0)
|
||||||
return null;
|
return null;
|
||||||
Bitmap bitmap = null;
|
Bitmap bitmap;
|
||||||
switch (m_TextureFormat)
|
switch (m_TextureFormat)
|
||||||
{
|
{
|
||||||
case TextureFormat.Alpha8:
|
case TextureFormat.Alpha8:
|
||||||
@@ -917,6 +927,8 @@ namespace Unity_Studio
|
|||||||
case TextureFormat.R16:
|
case TextureFormat.R16:
|
||||||
case TextureFormat.RGBA4444:
|
case TextureFormat.RGBA4444:
|
||||||
case TextureFormat.BGRA32:
|
case TextureFormat.BGRA32:
|
||||||
|
case TextureFormat.RG16:
|
||||||
|
case TextureFormat.R8:
|
||||||
bitmap = BGRA32ToBitmap();
|
bitmap = BGRA32ToBitmap();
|
||||||
break;
|
break;
|
||||||
case TextureFormat.RGB565:
|
case TextureFormat.RGB565:
|
||||||
@@ -955,6 +967,7 @@ namespace Unity_Studio
|
|||||||
case TextureFormat.RFloat:
|
case TextureFormat.RFloat:
|
||||||
case TextureFormat.RGFloat:
|
case TextureFormat.RGFloat:
|
||||||
case TextureFormat.RGBAFloat:
|
case TextureFormat.RGBAFloat:
|
||||||
|
case TextureFormat.RGB9e5Float:
|
||||||
case TextureFormat.ATC_RGB4:
|
case TextureFormat.ATC_RGB4:
|
||||||
case TextureFormat.ATC_RGBA8:
|
case TextureFormat.ATC_RGBA8:
|
||||||
case TextureFormat.EAC_R:
|
case TextureFormat.EAC_R:
|
||||||
@@ -971,8 +984,16 @@ namespace Unity_Studio
|
|||||||
break;
|
break;
|
||||||
case TextureFormat.DXT1Crunched:
|
case TextureFormat.DXT1Crunched:
|
||||||
case TextureFormat.DXT5Crunched:
|
case TextureFormat.DXT5Crunched:
|
||||||
bitmap = CRNToBitmap();
|
DecompressCRN();
|
||||||
|
bitmap = TextureConverter();
|
||||||
break;
|
break;
|
||||||
|
case TextureFormat.ETC_RGB4Crunched:
|
||||||
|
case TextureFormat.ETC2_RGBA8Crunched:
|
||||||
|
DecompressCRN();
|
||||||
|
bitmap = PVRToBitmap(ConvertToPVR());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
if (bitmap != null && flip)
|
if (bitmap != null && flip)
|
||||||
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
||||||
@@ -1047,20 +1068,16 @@ namespace Unity_Studio
|
|||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Bitmap CRNToBitmap()
|
private void DecompressCRN()
|
||||||
{
|
{
|
||||||
IntPtr dxtdata;
|
if (DecompressCRN(image_data, image_data_size, out IntPtr dxtdata, out int dxtsize))
|
||||||
int dxtsize;
|
|
||||||
if (DecompressCRN(image_data, image_data_size, out dxtdata, out dxtsize))
|
|
||||||
{
|
{
|
||||||
var dxtbytes = new byte[dxtsize];
|
var dxtbytes = new byte[dxtsize];
|
||||||
Marshal.Copy(dxtdata, dxtbytes, 0, dxtsize);
|
Marshal.Copy(dxtdata, dxtbytes, 0, dxtsize);
|
||||||
Marshal.FreeHGlobal(dxtdata);
|
Marshal.FreeHGlobal(dxtdata);
|
||||||
image_data = dxtbytes;
|
image_data = dxtbytes;
|
||||||
image_data_size = dxtsize;
|
image_data_size = dxtsize;
|
||||||
return TextureConverter();
|
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Bitmap Texgenpack()
|
private Bitmap Texgenpack()
|
||||||
@@ -1076,65 +1093,6 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TextureFormat
|
|
||||||
{
|
|
||||||
Alpha8 = 1,
|
|
||||||
ARGB4444,
|
|
||||||
RGB24,
|
|
||||||
RGBA32,
|
|
||||||
ARGB32,
|
|
||||||
RGB565 = 7,
|
|
||||||
R16 = 9,
|
|
||||||
DXT1,
|
|
||||||
DXT5 = 12,
|
|
||||||
RGBA4444,
|
|
||||||
BGRA32,
|
|
||||||
RHalf,
|
|
||||||
RGHalf,
|
|
||||||
RGBAHalf,
|
|
||||||
RFloat,
|
|
||||||
RGFloat,
|
|
||||||
RGBAFloat,
|
|
||||||
YUY2,
|
|
||||||
RGB9e5Float,
|
|
||||||
BC4 = 26,
|
|
||||||
BC5,
|
|
||||||
BC6H = 24,
|
|
||||||
BC7,
|
|
||||||
DXT1Crunched = 28,
|
|
||||||
DXT5Crunched,
|
|
||||||
PVRTC_RGB2,
|
|
||||||
PVRTC_RGBA2,
|
|
||||||
PVRTC_RGB4,
|
|
||||||
PVRTC_RGBA4,
|
|
||||||
ETC_RGB4,
|
|
||||||
ATC_RGB4,
|
|
||||||
ATC_RGBA8,
|
|
||||||
EAC_R = 41,
|
|
||||||
EAC_R_SIGNED,
|
|
||||||
EAC_RG,
|
|
||||||
EAC_RG_SIGNED,
|
|
||||||
ETC2_RGB,
|
|
||||||
ETC2_RGBA1,
|
|
||||||
ETC2_RGBA8,
|
|
||||||
ASTC_RGB_4x4,
|
|
||||||
ASTC_RGB_5x5,
|
|
||||||
ASTC_RGB_6x6,
|
|
||||||
ASTC_RGB_8x8,
|
|
||||||
ASTC_RGB_10x10,
|
|
||||||
ASTC_RGB_12x12,
|
|
||||||
ASTC_RGBA_4x4,
|
|
||||||
ASTC_RGBA_5x5,
|
|
||||||
ASTC_RGBA_6x6,
|
|
||||||
ASTC_RGBA_8x8,
|
|
||||||
ASTC_RGBA_10x10,
|
|
||||||
ASTC_RGBA_12x12,
|
|
||||||
ETC_RGB4_3DS,
|
|
||||||
ETC_RGBA8_3DS,
|
|
||||||
RG16,
|
|
||||||
R8
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class KTXHeader
|
public static class KTXHeader
|
||||||
{
|
{
|
||||||
public static byte[] IDENTIFIER = { 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A };
|
public static byte[] IDENTIFIER = { 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A };
|
||||||
|
|||||||
92
Unity Studio/Unity Classes/VideoClip.cs
Normal file
92
Unity Studio/Unity Classes/VideoClip.cs
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Unity_Studio
|
||||||
|
{
|
||||||
|
class VideoClip
|
||||||
|
{
|
||||||
|
public string m_Name;
|
||||||
|
public byte[] m_VideoData;
|
||||||
|
|
||||||
|
public VideoClip(AssetPreloadData preloadData, bool readSwitch)
|
||||||
|
{
|
||||||
|
var sourceFile = preloadData.sourceFile;
|
||||||
|
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||||
|
a_Stream.Position = preloadData.Offset;
|
||||||
|
|
||||||
|
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
var m_OriginalPath = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
var m_ProxyWidth = a_Stream.ReadUInt32();
|
||||||
|
var m_ProxyHeight = a_Stream.ReadUInt32();
|
||||||
|
var Width = a_Stream.ReadUInt32();
|
||||||
|
var Height = a_Stream.ReadUInt32();
|
||||||
|
if (sourceFile.version[0] >= 2017)//2017.x and up
|
||||||
|
{
|
||||||
|
var m_PixelAspecRatioNum = a_Stream.ReadUInt32();
|
||||||
|
var m_PixelAspecRatioDen = a_Stream.ReadUInt32();
|
||||||
|
}
|
||||||
|
var m_FrameRate = a_Stream.ReadDouble();
|
||||||
|
var m_FrameCount = a_Stream.ReadUInt64();
|
||||||
|
var m_Format = a_Stream.ReadInt32();
|
||||||
|
//m_AudioChannelCount
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
a_Stream.Position += size * 2;
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
//m_AudioSampleRate
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
a_Stream.Position += size * 4;
|
||||||
|
//m_AudioLanguage
|
||||||
|
size = a_Stream.ReadInt32();
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
}
|
||||||
|
//StreamedResource m_ExternalResources
|
||||||
|
var m_Source = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
if (m_Source != "")
|
||||||
|
m_Source = Path.Combine(Path.GetDirectoryName(sourceFile.filePath), m_Source.Replace("archive:/", ""));
|
||||||
|
var m_Offset = a_Stream.ReadUInt64();
|
||||||
|
var m_Size = a_Stream.ReadUInt64();
|
||||||
|
var m_HasSplitAlpha = a_Stream.ReadBoolean();
|
||||||
|
|
||||||
|
if (readSwitch)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(m_Source))
|
||||||
|
{
|
||||||
|
if (m_Size > 0)
|
||||||
|
m_VideoData = a_Stream.ReadBytes((int)m_Size);
|
||||||
|
}
|
||||||
|
else if (File.Exists(m_Source) || File.Exists(m_Source = Path.Combine(Path.GetDirectoryName(sourceFile.filePath), Path.GetFileName(m_Source))))
|
||||||
|
{
|
||||||
|
using (var reader = new BinaryReader(File.OpenRead(m_Source)))
|
||||||
|
{
|
||||||
|
reader.BaseStream.Position = (long)m_Offset;
|
||||||
|
m_VideoData = reader.ReadBytes((int)m_Size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (UnityStudio.assetsfileandstream.TryGetValue(Path.GetFileName(m_Source), out var reader))
|
||||||
|
{
|
||||||
|
reader.Position = (long)m_Offset;
|
||||||
|
m_VideoData = reader.ReadBytes((int)m_Size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show($"can't find the resource file {Path.GetFileName(m_Source)}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
preloadData.extension = Path.GetExtension(m_OriginalPath);
|
||||||
|
preloadData.Text = m_Name;
|
||||||
|
preloadData.fullSize = preloadData.Size + (int)m_Size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,135 +12,14 @@ namespace Unity_Studio
|
|||||||
public uint Offset;
|
public uint Offset;
|
||||||
public int Size;
|
public int Size;
|
||||||
public int Type1;
|
public int Type1;
|
||||||
public ushort Type2;
|
public int Type2;
|
||||||
|
|
||||||
public string TypeString;
|
public string TypeString;
|
||||||
|
public int fullSize;
|
||||||
public string InfoText;
|
public string InfoText;
|
||||||
public string extension;
|
public string extension;
|
||||||
|
|
||||||
public AssetsFile sourceFile;
|
public AssetsFile sourceFile;
|
||||||
public string uniqueID;
|
public string uniqueID;
|
||||||
|
|
||||||
public string ViewStruct()
|
|
||||||
{
|
|
||||||
var a_Stream = sourceFile.a_Stream;
|
|
||||||
a_Stream.Position = Offset;
|
|
||||||
ClassStruct classStructure;
|
|
||||||
if (sourceFile.ClassStructures.TryGetValue(Type1, out classStructure))
|
|
||||||
{
|
|
||||||
var member = classStructure.members;
|
|
||||||
var sb = new StringBuilder();
|
|
||||||
Read(sb, member, a_Stream);
|
|
||||||
return sb.ToString();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void Read(StringBuilder sb, List<ClassMember> members, EndianStream a_Stream)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < members.Count; i++)
|
|
||||||
{
|
|
||||||
var member = members[i];
|
|
||||||
var level = member.Level;
|
|
||||||
var varTypeStr = member.Type;
|
|
||||||
var varNameStr = member.Name;
|
|
||||||
object value = null;
|
|
||||||
var align = (member.Flag & 0x4000) != 0;
|
|
||||||
var append = true;
|
|
||||||
if (varTypeStr == "SInt8")//sbyte
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadSByte();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "UInt8")//byte
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadByte();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "short" || varTypeStr == "SInt16")//Int16
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadInt16();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "UInt16" || varTypeStr == "unsigned short")//UInt16
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadUInt16();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "int" || varTypeStr == "SInt32")//Int32
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadInt32();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int")//UInt32
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadUInt32();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "long long" || varTypeStr == "SInt64")//Int64
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadInt64();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "UInt64" || varTypeStr == "unsigned long long")//UInt64
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadUInt64();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "float")//float
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadSingle();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "double")//double
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadDouble();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "bool")//bool
|
|
||||||
{
|
|
||||||
value = a_Stream.ReadBoolean();
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "string")//string
|
|
||||||
{
|
|
||||||
append = false;
|
|
||||||
var str = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
|
||||||
sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level)), varTypeStr, varNameStr, str);
|
|
||||||
i += 3;//skip
|
|
||||||
}
|
|
||||||
else if (varTypeStr == "Array")//Array
|
|
||||||
{
|
|
||||||
append = false;
|
|
||||||
if ((members[i - 1].Flag & 0x4000) != 0)
|
|
||||||
align = true;
|
|
||||||
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
|
||||||
var size = a_Stream.ReadInt32();
|
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), "int", "size", size);
|
|
||||||
var array = ReadArray(members, level, i);
|
|
||||||
for (int j = 0; j < size; j++)
|
|
||||||
{
|
|
||||||
sb.AppendFormat("{0}[{1}]\r\n", (new string('\t', level + 1)), j);
|
|
||||||
Read(sb, array, a_Stream);
|
|
||||||
}
|
|
||||||
i += array.Count + 1;//skip
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
append = false;
|
|
||||||
align = false;
|
|
||||||
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
|
||||||
}
|
|
||||||
if (append)
|
|
||||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
|
||||||
if (align)
|
|
||||||
a_Stream.AlignStream(4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<ClassMember> ReadArray(List<ClassMember> members, int level, int index)
|
|
||||||
{
|
|
||||||
var member2 = new List<ClassMember>();
|
|
||||||
for (int i = index + 2; i < members.Count; i++)//skip int size
|
|
||||||
{
|
|
||||||
var member = members[i];
|
|
||||||
var level2 = member.Level;
|
|
||||||
if (level2 <= level)
|
|
||||||
{
|
|
||||||
return member2;
|
|
||||||
}
|
|
||||||
member2.Add(member);
|
|
||||||
}
|
|
||||||
return member2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,24 +4,23 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace Unity_Studio
|
namespace Unity_Studio
|
||||||
{
|
{
|
||||||
public class AssetsFile
|
public class AssetsFile
|
||||||
{
|
{
|
||||||
public EndianStream a_Stream;
|
public EndianBinaryReader a_Stream;
|
||||||
public string filePath;
|
public string filePath;
|
||||||
public string bundlePath;
|
public string bundlePath;
|
||||||
public string fileName;
|
public string fileName;
|
||||||
public int fileGen;
|
public int fileGen;
|
||||||
public bool valid;
|
public bool valid;
|
||||||
public string m_Version = "2.5.0f5";
|
public string m_Version = "2.5.0f5";
|
||||||
public int[] version = new int[4] { 0, 0, 0, 0 };
|
public int[] version = { 0, 0, 0, 0 };
|
||||||
public string[] buildType;
|
public string[] buildType;
|
||||||
public int platform = 100663296;
|
public int platform = 100663296;
|
||||||
public string platformStr = "";
|
public string platformStr = "";
|
||||||
//public EndianType endianType = EndianType.BigEndian;
|
|
||||||
//public List<AssetPreloadData> preloadTable = new List<AssetPreloadData>();
|
|
||||||
public Dictionary<long, AssetPreloadData> preloadTable = new Dictionary<long, AssetPreloadData>();
|
public Dictionary<long, AssetPreloadData> preloadTable = new Dictionary<long, AssetPreloadData>();
|
||||||
public Dictionary<long, GameObject> GameObjectList = new Dictionary<long, GameObject>();
|
public Dictionary<long, GameObject> GameObjectList = new Dictionary<long, GameObject>();
|
||||||
public Dictionary<long, Transform> TransformList = new Dictionary<long, Transform>();
|
public Dictionary<long, Transform> TransformList = new Dictionary<long, Transform>();
|
||||||
@@ -139,6 +138,7 @@ namespace Unity_Studio
|
|||||||
{1006, "Vector4f"},
|
{1006, "Vector4f"},
|
||||||
{1015, "m_ScriptingClassIdentifier"},
|
{1015, "m_ScriptingClassIdentifier"},
|
||||||
{1042, "Gradient"},
|
{1042, "Gradient"},
|
||||||
|
{1051, "Type*"}
|
||||||
};
|
};
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ namespace Unity_Studio
|
|||||||
public string fileName = "";
|
public string fileName = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public AssetsFile(string fullName, EndianStream fileStream)
|
public AssetsFile(string fullName, EndianBinaryReader fileStream)
|
||||||
{
|
{
|
||||||
a_Stream = fileStream;
|
a_Stream = fileStream;
|
||||||
filePath = fullName;
|
filePath = fullName;
|
||||||
@@ -215,7 +215,6 @@ namespace Unity_Studio
|
|||||||
byte[] b32 = BitConverter.GetBytes(platform);
|
byte[] b32 = BitConverter.GetBytes(platform);
|
||||||
Array.Reverse(b32);
|
Array.Reverse(b32);
|
||||||
platform = BitConverter.ToInt32(b32, 0);
|
platform = BitConverter.ToInt32(b32, 0);
|
||||||
//endianType = EndianType.LittleEndian;
|
|
||||||
a_Stream.endian = EndianType.LittleEndian;
|
a_Stream.endian = EndianType.LittleEndian;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -314,14 +313,7 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
AssetPreloadData asset = new AssetPreloadData();
|
AssetPreloadData asset = new AssetPreloadData();
|
||||||
if (fileGen < 14)
|
asset.m_PathID = fileGen < 14 ? a_Stream.ReadInt32() : a_Stream.ReadInt64();
|
||||||
{
|
|
||||||
asset.m_PathID = a_Stream.ReadInt32();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
asset.m_PathID = a_Stream.ReadInt64();
|
|
||||||
}
|
|
||||||
asset.Offset = a_Stream.ReadUInt32();
|
asset.Offset = a_Stream.ReadUInt32();
|
||||||
asset.Offset += dataOffset;
|
asset.Offset += dataOffset;
|
||||||
asset.Size = a_Stream.ReadInt32();
|
asset.Size = a_Stream.ReadInt32();
|
||||||
@@ -329,7 +321,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
int index = a_Stream.ReadInt32();
|
int index = a_Stream.ReadInt32();
|
||||||
asset.Type1 = classIDs[index][0];
|
asset.Type1 = classIDs[index][0];
|
||||||
asset.Type2 = (ushort)classIDs[index][1];
|
asset.Type2 = classIDs[index][1];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -343,14 +335,9 @@ namespace Unity_Studio
|
|||||||
//this is a single byte, not an int32
|
//this is a single byte, not an int32
|
||||||
//the next entry is aligned after this
|
//the next entry is aligned after this
|
||||||
//but not the last!
|
//but not the last!
|
||||||
if (unknownByte != 0)
|
|
||||||
{
|
|
||||||
//bool investigate = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
string typeString;
|
if (ClassIDReference.Names.TryGetValue(asset.Type2, out var typeString))
|
||||||
if (ClassIDReference.Names.TryGetValue(asset.Type2, out typeString))
|
|
||||||
{
|
{
|
||||||
asset.TypeString = typeString;
|
asset.TypeString = typeString;
|
||||||
}
|
}
|
||||||
@@ -361,6 +348,7 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
asset.uniqueID = i.ToString(assetIDfmt);
|
asset.uniqueID = i.ToString(assetIDfmt);
|
||||||
|
|
||||||
|
asset.fullSize = asset.Size;
|
||||||
asset.sourceFile = this;
|
asset.sourceFile = this;
|
||||||
|
|
||||||
preloadTable.Add(asset.m_PathID, asset);
|
preloadTable.Add(asset.m_PathID, asset);
|
||||||
@@ -422,7 +410,6 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
string varType = a_Stream.ReadStringToNull();
|
string varType = a_Stream.ReadStringToNull();
|
||||||
string varName = a_Stream.ReadStringToNull();
|
string varName = a_Stream.ReadStringToNull();
|
||||||
//a_Stream.Position += 20;
|
|
||||||
int size = a_Stream.ReadInt32();
|
int size = a_Stream.ReadInt32();
|
||||||
int index = a_Stream.ReadInt32();
|
int index = a_Stream.ReadInt32();
|
||||||
int isArray = a_Stream.ReadInt32();
|
int isArray = a_Stream.ReadInt32();
|
||||||
@@ -430,7 +417,6 @@ namespace Unity_Studio
|
|||||||
int flag = a_Stream.ReadInt32();
|
int flag = a_Stream.ReadInt32();
|
||||||
int childrenCount = a_Stream.ReadInt32();
|
int childrenCount = a_Stream.ReadInt32();
|
||||||
|
|
||||||
//Debug.WriteLine(baseFormat + " " + baseName + " " + childrenCount);
|
|
||||||
cb.Add(new ClassMember()
|
cb.Add(new ClassMember()
|
||||||
{
|
{
|
||||||
Level = level - 1,
|
Level = level - 1,
|
||||||
@@ -458,22 +444,11 @@ namespace Unity_Studio
|
|||||||
type1 = classID;
|
type1 = classID;
|
||||||
}
|
}
|
||||||
classIDs.Add(new[] { type1, classID });
|
classIDs.Add(new[] { type1, classID });
|
||||||
|
if (classID == 114)
|
||||||
|
{
|
||||||
|
a_Stream.Position += 16;
|
||||||
|
}
|
||||||
classID = type1;
|
classID = type1;
|
||||||
/*TODO 替换?
|
|
||||||
if(classID == 114)
|
|
||||||
{
|
|
||||||
a_Stream.Position += 16;
|
|
||||||
}*/
|
|
||||||
var temp = a_Stream.ReadInt32();
|
|
||||||
if (temp == 0)
|
|
||||||
{
|
|
||||||
a_Stream.Position += 16;
|
|
||||||
}
|
|
||||||
a_Stream.Position -= 4;
|
|
||||||
if (type1 < 0)
|
|
||||||
{
|
|
||||||
a_Stream.Position += 16;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (classID < 0)
|
else if (classID < 0)
|
||||||
{
|
{
|
||||||
@@ -487,7 +462,7 @@ namespace Unity_Studio
|
|||||||
int stringSize = a_Stream.ReadInt32();
|
int stringSize = a_Stream.ReadInt32();
|
||||||
|
|
||||||
a_Stream.Position += varCount * 24;
|
a_Stream.Position += varCount * 24;
|
||||||
string varStrings = Encoding.UTF8.GetString(a_Stream.ReadBytes(stringSize));
|
var stringReader = new EndianBinaryReader(new MemoryStream(a_Stream.ReadBytes(stringSize)));
|
||||||
string className = "";
|
string className = "";
|
||||||
var classVar = new List<ClassMember>();
|
var classVar = new List<ClassMember>();
|
||||||
//build Class Structures
|
//build Class Structures
|
||||||
@@ -502,15 +477,27 @@ namespace Unity_Studio
|
|||||||
ushort test = a_Stream.ReadUInt16();
|
ushort test = a_Stream.ReadUInt16();
|
||||||
string varTypeStr;
|
string varTypeStr;
|
||||||
if (test == 0) //varType is an offset in the string block
|
if (test == 0) //varType is an offset in the string block
|
||||||
{ varTypeStr = varStrings.Substring(varTypeIndex, varStrings.IndexOf('\0', varTypeIndex) - varTypeIndex); }//substringToNull
|
{
|
||||||
|
stringReader.Position = varTypeIndex;
|
||||||
|
varTypeStr = stringReader.ReadStringToNull();
|
||||||
|
}
|
||||||
else //varType is an index in an internal strig array
|
else //varType is an index in an internal strig array
|
||||||
{ varTypeStr = baseStrings.ContainsKey(varTypeIndex) ? baseStrings[varTypeIndex] : varTypeIndex.ToString(); }
|
{
|
||||||
|
varTypeStr = baseStrings.ContainsKey(varTypeIndex) ? baseStrings[varTypeIndex] : varTypeIndex.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
ushort varNameIndex = a_Stream.ReadUInt16();
|
ushort varNameIndex = a_Stream.ReadUInt16();
|
||||||
test = a_Stream.ReadUInt16();
|
test = a_Stream.ReadUInt16();
|
||||||
string varNameStr;
|
string varNameStr;
|
||||||
if (test == 0) { varNameStr = varStrings.Substring(varNameIndex, varStrings.IndexOf('\0', varNameIndex) - varNameIndex); }
|
if (test == 0)
|
||||||
else { varNameStr = baseStrings.ContainsKey(varNameIndex) ? baseStrings[varNameIndex] : varNameIndex.ToString(); }
|
{
|
||||||
|
stringReader.Position = varNameIndex;
|
||||||
|
varNameStr = stringReader.ReadStringToNull();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
varNameStr = baseStrings.ContainsKey(varNameIndex) ? baseStrings[varNameIndex] : varNameIndex.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
int size = a_Stream.ReadInt32();
|
int size = a_Stream.ReadInt32();
|
||||||
int index = a_Stream.ReadInt32();
|
int index = a_Stream.ReadInt32();
|
||||||
@@ -528,15 +515,13 @@ namespace Unity_Studio
|
|||||||
Flag = flag
|
Flag = flag
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//for (int t = 0; t < level; t++) { Debug.Write("\t"); }
|
|
||||||
//Debug.WriteLine(varTypeStr + " " + varNameStr + " " + size);
|
|
||||||
}
|
}
|
||||||
|
stringReader.Dispose();
|
||||||
a_Stream.Position += stringSize;
|
a_Stream.Position += stringSize;
|
||||||
|
|
||||||
var aClass = new ClassStruct() { ID = classID, Text = className, members = classVar };
|
var aClass = new ClassStruct() { ID = classID, Text = className, members = classVar };
|
||||||
aClass.SubItems.Add(classID.ToString());
|
aClass.SubItems.Add(classID.ToString());
|
||||||
ClassStructures.Add(classID, aClass);
|
ClassStructures[classID] = aClass;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,9 +31,7 @@ namespace Unity_Studio
|
|||||||
int compressedSize = lz4Stream.ReadInt32();
|
int compressedSize = lz4Stream.ReadInt32();
|
||||||
int something = lz4Stream.ReadInt32(); //1
|
int something = lz4Stream.ReadInt32(); //1
|
||||||
|
|
||||||
byte[] lz4buffer = new byte[compressedSize];
|
var lz4buffer = lz4Stream.ReadBytes(compressedSize);
|
||||||
lz4Stream.Read(lz4buffer, 0, compressedSize);
|
|
||||||
|
|
||||||
using (var inputStream = new MemoryStream(lz4buffer))
|
using (var inputStream = new MemoryStream(lz4buffer))
|
||||||
{
|
{
|
||||||
var decoder = new Lz4DecoderStream(inputStream);
|
var decoder = new Lz4DecoderStream(inputStream);
|
||||||
@@ -42,108 +40,108 @@ namespace Unity_Studio
|
|||||||
decoder.Dispose();
|
decoder.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
using (var b_Stream = new EndianStream(new MemoryStream(filebuffer), EndianType.BigEndian))
|
using (var b_Stream = new EndianBinaryReader(new MemoryStream(filebuffer)))
|
||||||
{
|
{
|
||||||
readBundle(b_Stream);
|
readBundle(b_Stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
using (var b_Stream = new EndianStream(File.OpenRead(fileName), EndianType.BigEndian))
|
using (var b_Stream = new EndianBinaryReader(File.OpenRead(fileName)))
|
||||||
{
|
{
|
||||||
readBundle(b_Stream);
|
readBundle(b_Stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void readBundle(EndianStream b_Stream)
|
private void readBundle(EndianBinaryReader b_Stream)
|
||||||
{
|
{
|
||||||
var signature = b_Stream.ReadStringToNull();
|
var signature = b_Stream.ReadStringToNull();
|
||||||
|
switch (signature)
|
||||||
if (signature == "UnityWeb" || signature == "UnityRaw" || signature == "\xFA\xFA\xFA\xFA\xFA\xFA\xFA\xFA")
|
|
||||||
{
|
{
|
||||||
format = b_Stream.ReadInt32();
|
case "UnityWeb":
|
||||||
versionPlayer = b_Stream.ReadStringToNull();
|
case "UnityRaw":
|
||||||
versionEngine = b_Stream.ReadStringToNull();
|
case "\xFA\xFA\xFA\xFA\xFA\xFA\xFA\xFA":
|
||||||
if (format < 6)
|
{
|
||||||
{
|
format = b_Stream.ReadInt32();
|
||||||
int bundleSize = b_Stream.ReadInt32();
|
versionPlayer = b_Stream.ReadStringToNull();
|
||||||
}
|
versionEngine = b_Stream.ReadStringToNull();
|
||||||
else if (format == 6)
|
if (format < 6)
|
||||||
{
|
|
||||||
ReadFormat6(b_Stream, true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
short dummy2 = b_Stream.ReadInt16();
|
|
||||||
int offset = b_Stream.ReadInt16();
|
|
||||||
int dummy3 = b_Stream.ReadInt32();
|
|
||||||
int lzmaChunks = b_Stream.ReadInt32();
|
|
||||||
|
|
||||||
int lzmaSize = 0;
|
|
||||||
long streamSize = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < lzmaChunks; i++)
|
|
||||||
{
|
|
||||||
lzmaSize = b_Stream.ReadInt32();
|
|
||||||
streamSize = b_Stream.ReadInt32();
|
|
||||||
}
|
|
||||||
|
|
||||||
b_Stream.Position = offset;
|
|
||||||
switch (signature)
|
|
||||||
{
|
|
||||||
case "\xFA\xFA\xFA\xFA\xFA\xFA\xFA\xFA": //.bytes
|
|
||||||
case "UnityWeb":
|
|
||||||
{
|
{
|
||||||
byte[] lzmaBuffer = new byte[lzmaSize];
|
int bundleSize = b_Stream.ReadInt32();
|
||||||
b_Stream.Read(lzmaBuffer, 0, lzmaSize);
|
|
||||||
|
|
||||||
using (var lzmaStream = new EndianStream(SevenZipHelper.StreamDecompress(new MemoryStream(lzmaBuffer)), EndianType.BigEndian))
|
|
||||||
{
|
|
||||||
getFiles(lzmaStream, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case "UnityRaw":
|
else if (format == 6)
|
||||||
{
|
{
|
||||||
getFiles(b_Stream, offset);
|
ReadFormat6(b_Stream, true);
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
}
|
short dummy2 = b_Stream.ReadInt16();
|
||||||
}
|
int offset = b_Stream.ReadInt16();
|
||||||
else if (signature == "UnityFS")
|
int dummy3 = b_Stream.ReadInt32();
|
||||||
{
|
int lzmaChunks = b_Stream.ReadInt32();
|
||||||
format = b_Stream.ReadInt32();
|
|
||||||
versionPlayer = b_Stream.ReadStringToNull();
|
int lzmaSize = 0;
|
||||||
versionEngine = b_Stream.ReadStringToNull();
|
long streamSize = 0;
|
||||||
if (format == 6)
|
|
||||||
{
|
for (int i = 0; i < lzmaChunks; i++)
|
||||||
ReadFormat6(b_Stream);
|
{
|
||||||
}
|
lzmaSize = b_Stream.ReadInt32();
|
||||||
|
streamSize = b_Stream.ReadInt32();
|
||||||
|
}
|
||||||
|
|
||||||
|
b_Stream.Position = offset;
|
||||||
|
switch (signature)
|
||||||
|
{
|
||||||
|
case "\xFA\xFA\xFA\xFA\xFA\xFA\xFA\xFA": //.bytes
|
||||||
|
case "UnityWeb":
|
||||||
|
{
|
||||||
|
var lzmaBuffer = b_Stream.ReadBytes(lzmaSize);
|
||||||
|
using (var lzmaStream = new EndianBinaryReader(SevenZipHelper.StreamDecompress(new MemoryStream(lzmaBuffer))))
|
||||||
|
{
|
||||||
|
getFiles(lzmaStream, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "UnityRaw":
|
||||||
|
{
|
||||||
|
getFiles(b_Stream, offset);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "UnityFS":
|
||||||
|
format = b_Stream.ReadInt32();
|
||||||
|
versionPlayer = b_Stream.ReadStringToNull();
|
||||||
|
versionEngine = b_Stream.ReadStringToNull();
|
||||||
|
if (format == 6)
|
||||||
|
{
|
||||||
|
ReadFormat6(b_Stream);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getFiles(EndianStream f_Stream, int offset)
|
private void getFiles(EndianBinaryReader f_Stream, int offset)
|
||||||
{
|
{
|
||||||
int fileCount = f_Stream.ReadInt32();
|
int fileCount = f_Stream.ReadInt32();
|
||||||
for (int i = 0; i < fileCount; i++)
|
for (int i = 0; i < fileCount; i++)
|
||||||
{
|
{
|
||||||
MemoryAssetsFile memFile = new MemoryAssetsFile();
|
var memFile = new MemoryAssetsFile();
|
||||||
memFile.fileName = f_Stream.ReadStringToNull();
|
memFile.fileName = f_Stream.ReadStringToNull();
|
||||||
int fileOffset = f_Stream.ReadInt32();
|
int fileOffset = f_Stream.ReadInt32();
|
||||||
fileOffset += offset;
|
fileOffset += offset;
|
||||||
int fileSize = f_Stream.ReadInt32();
|
int fileSize = f_Stream.ReadInt32();
|
||||||
long nextFile = f_Stream.Position;
|
long nextFile = f_Stream.Position;
|
||||||
f_Stream.Position = fileOffset;
|
f_Stream.Position = fileOffset;
|
||||||
|
var buffer = f_Stream.ReadBytes(fileSize);
|
||||||
byte[] buffer = new byte[fileSize];
|
|
||||||
f_Stream.Read(buffer, 0, fileSize);
|
|
||||||
memFile.memStream = new MemoryStream(buffer);
|
memFile.memStream = new MemoryStream(buffer);
|
||||||
MemoryAssetsFileList.Add(memFile);
|
MemoryAssetsFileList.Add(memFile);
|
||||||
f_Stream.Position = nextFile;
|
f_Stream.Position = nextFile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReadFormat6(EndianStream b_Stream, bool padding = false)
|
private void ReadFormat6(EndianBinaryReader b_Stream, bool padding = false)
|
||||||
{
|
{
|
||||||
var bundleSize = b_Stream.ReadInt64();
|
var bundleSize = b_Stream.ReadInt64();
|
||||||
int compressedSize = b_Stream.ReadInt32();
|
int compressedSize = b_Stream.ReadInt32();
|
||||||
@@ -163,17 +161,17 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
blocksInfoBytes = b_Stream.ReadBytes(compressedSize);
|
blocksInfoBytes = b_Stream.ReadBytes(compressedSize);
|
||||||
}
|
}
|
||||||
EndianStream blocksInfo;
|
MemoryStream blocksInfoStream;
|
||||||
switch (flag & 0x3F)
|
switch (flag & 0x3F)
|
||||||
{
|
{
|
||||||
default://None
|
default://None
|
||||||
{
|
{
|
||||||
blocksInfo = new EndianStream(new MemoryStream(blocksInfoBytes), EndianType.BigEndian);
|
blocksInfoStream = new MemoryStream(blocksInfoBytes);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 1://LZMA
|
case 1://LZMA
|
||||||
{
|
{
|
||||||
blocksInfo = new EndianStream(SevenZipHelper.StreamDecompress(new MemoryStream(blocksInfoBytes)), EndianType.BigEndian);
|
blocksInfoStream = SevenZipHelper.StreamDecompress(new MemoryStream(blocksInfoBytes));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2://LZ4
|
case 2://LZ4
|
||||||
@@ -186,16 +184,15 @@ namespace Unity_Studio
|
|||||||
decoder.Read(uncompressedBytes, 0, uncompressedSize);
|
decoder.Read(uncompressedBytes, 0, uncompressedSize);
|
||||||
decoder.Dispose();
|
decoder.Dispose();
|
||||||
}
|
}
|
||||||
blocksInfo = new EndianStream(new MemoryStream(uncompressedBytes), EndianType.BigEndian);
|
blocksInfoStream = new MemoryStream(uncompressedBytes);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//case 4:LZHAM?
|
//case 4:LZHAM?
|
||||||
}
|
}
|
||||||
using (blocksInfo)
|
using (var blocksInfo = new EndianBinaryReader(blocksInfoStream))
|
||||||
{
|
{
|
||||||
blocksInfo.Position = 0x10;
|
blocksInfo.Position = 0x10;
|
||||||
int blockcount = blocksInfo.ReadInt32();
|
int blockcount = blocksInfo.ReadInt32();
|
||||||
EndianStream assetsData;
|
|
||||||
var assetsDataStream = new MemoryStream();
|
var assetsDataStream = new MemoryStream();
|
||||||
for (int i = 0; i < blockcount; i++)
|
for (int i = 0; i < blockcount; i++)
|
||||||
{
|
{
|
||||||
@@ -238,8 +235,7 @@ namespace Unity_Studio
|
|||||||
//case 4:LZHAM?
|
//case 4:LZHAM?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assetsData = new EndianStream(assetsDataStream, EndianType.BigEndian);
|
using (var assetsData = new EndianBinaryReader(assetsDataStream))
|
||||||
using (assetsData)
|
|
||||||
{
|
{
|
||||||
var entryinfo_count = blocksInfo.ReadInt32();
|
var entryinfo_count = blocksInfo.ReadInt32();
|
||||||
for (int i = 0; i < entryinfo_count; i++)
|
for (int i = 0; i < entryinfo_count; i++)
|
||||||
@@ -250,8 +246,7 @@ namespace Unity_Studio
|
|||||||
var unknown = blocksInfo.ReadInt32();
|
var unknown = blocksInfo.ReadInt32();
|
||||||
memFile.fileName = blocksInfo.ReadStringToNull();
|
memFile.fileName = blocksInfo.ReadStringToNull();
|
||||||
assetsData.Position = entryinfo_offset;
|
assetsData.Position = entryinfo_offset;
|
||||||
var buffer = new byte[entryinfo_size];
|
var buffer = assetsData.ReadBytes((int)entryinfo_size);
|
||||||
assetsData.Read(buffer, 0, (int)entryinfo_size);
|
|
||||||
memFile.memStream = new MemoryStream(buffer);
|
memFile.memStream = new MemoryStream(buffer);
|
||||||
MemoryAssetsFileList.Add(memFile);
|
MemoryAssetsFileList.Add(memFile);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,39 +1,7 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace Unity_Studio
|
namespace Unity_Studio
|
||||||
{
|
{
|
||||||
public class ClassStruct : ListViewItem
|
|
||||||
{
|
|
||||||
public int ID;
|
|
||||||
public List<ClassMember> members;
|
|
||||||
|
|
||||||
public string membersstr
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var sb = new StringBuilder();
|
|
||||||
foreach (var i in members)
|
|
||||||
{
|
|
||||||
sb.AppendFormat("{0}{1} {2} {3}\r\n", (new string('\t', i.Level)), i.Type, i.Name, i.Size);
|
|
||||||
}
|
|
||||||
return sb.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ClassMember
|
|
||||||
{
|
|
||||||
public int Level;
|
|
||||||
public string Type;
|
|
||||||
public string Name;
|
|
||||||
public int Size;
|
|
||||||
public int Flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class ClassIDReference
|
public static class ClassIDReference
|
||||||
{
|
{
|
||||||
public static Dictionary<int, string> Names = new Dictionary<int, string>()
|
public static Dictionary<int, string> Names = new Dictionary<int, string>()
|
||||||
@@ -85,6 +53,7 @@ namespace Unity_Studio
|
|||||||
{65, "BoxCollider"},
|
{65, "BoxCollider"},
|
||||||
{66, "SpriteCollider2D"},
|
{66, "SpriteCollider2D"},
|
||||||
{68, "EdgeCollider2D"},
|
{68, "EdgeCollider2D"},
|
||||||
|
{70, "CapsuleCollider2D"},
|
||||||
{72, "ComputeShader"},
|
{72, "ComputeShader"},
|
||||||
{74, "AnimationClip"},
|
{74, "AnimationClip"},
|
||||||
{75, "ConstantForce"},
|
{75, "ConstantForce"},
|
||||||
@@ -94,6 +63,7 @@ namespace Unity_Studio
|
|||||||
{82, "AudioSource"},
|
{82, "AudioSource"},
|
||||||
{83, "AudioClip"},
|
{83, "AudioClip"},
|
||||||
{84, "RenderTexture"},
|
{84, "RenderTexture"},
|
||||||
|
{86, "CustomRenderTexture"},
|
||||||
{87, "MeshParticleEmitter"},
|
{87, "MeshParticleEmitter"},
|
||||||
{88, "ParticleEmitter"},
|
{88, "ParticleEmitter"},
|
||||||
{89, "Cubemap"},
|
{89, "Cubemap"},
|
||||||
@@ -174,6 +144,8 @@ namespace Unity_Studio
|
|||||||
{184, "SubstanceArchive"},
|
{184, "SubstanceArchive"},
|
||||||
{185, "ProceduralMaterial"},
|
{185, "ProceduralMaterial"},
|
||||||
{186, "ProceduralTexture"},
|
{186, "ProceduralTexture"},
|
||||||
|
{187, "Texture2DArray"},
|
||||||
|
{188, "CubemapArray"},
|
||||||
{191, "OffMeshLink"},
|
{191, "OffMeshLink"},
|
||||||
{192, "OcclusionArea"},
|
{192, "OcclusionArea"},
|
||||||
{193, "Tree"},
|
{193, "Tree"},
|
||||||
@@ -194,6 +166,7 @@ namespace Unity_Studio
|
|||||||
{214, "CachedSpriteAtlas"},
|
{214, "CachedSpriteAtlas"},
|
||||||
{215, "ReflectionProbe"},
|
{215, "ReflectionProbe"},
|
||||||
{216, "ReflectionProbes"},
|
{216, "ReflectionProbes"},
|
||||||
|
{218, "Terrain"},
|
||||||
{220, "LightProbeGroup"},
|
{220, "LightProbeGroup"},
|
||||||
{221, "AnimatorOverrideController"},
|
{221, "AnimatorOverrideController"},
|
||||||
{222, "CanvasRenderer"},
|
{222, "CanvasRenderer"},
|
||||||
@@ -210,6 +183,8 @@ namespace Unity_Studio
|
|||||||
{233, "HingeJoint2D"},
|
{233, "HingeJoint2D"},
|
||||||
{234, "SliderJoint2D"},
|
{234, "SliderJoint2D"},
|
||||||
{235, "WheelJoint2D"},
|
{235, "WheelJoint2D"},
|
||||||
|
{236, "ClusterInputManager"},
|
||||||
|
{237, "BaseVideoTexture"},
|
||||||
{238, "NavMeshData"},
|
{238, "NavMeshData"},
|
||||||
{240, "AudioMixer"},
|
{240, "AudioMixer"},
|
||||||
{241, "AudioMixerController"},
|
{241, "AudioMixerController"},
|
||||||
@@ -223,14 +198,29 @@ namespace Unity_Studio
|
|||||||
{250, "PointEffector2D"},
|
{250, "PointEffector2D"},
|
||||||
{251, "PlatformEffector2D"},
|
{251, "PlatformEffector2D"},
|
||||||
{252, "SurfaceEffector2D"},
|
{252, "SurfaceEffector2D"},
|
||||||
|
{253, "BuoyancyEffector2D"},
|
||||||
|
{254, "RelativeJoint2D"},
|
||||||
|
{255, "FixedJoint2D"},
|
||||||
|
{256, "FrictionJoint2D"},
|
||||||
|
{257, "TargetJoint2D"},
|
||||||
{258, "LightProbes"},
|
{258, "LightProbes"},
|
||||||
|
{259, "LightProbeProxyVolume"},
|
||||||
{271, "SampleClip"},
|
{271, "SampleClip"},
|
||||||
{272, "AudioMixerSnapshot"},
|
{272, "AudioMixerSnapshot"},
|
||||||
{273, "AudioMixerGroup"},
|
{273, "AudioMixerGroup"},
|
||||||
|
{280, "NScreenBridge"},
|
||||||
{290, "AssetBundleManifest"},
|
{290, "AssetBundleManifest"},
|
||||||
|
{292, "UnityAdsManager"},
|
||||||
{300, "RuntimeInitializeOnLoadManager"},
|
{300, "RuntimeInitializeOnLoadManager"},
|
||||||
{301, "CloudWebServicesManager"},
|
{301, "CloudWebServicesManager"},
|
||||||
|
{303, "UnityAnalyticsManager"},
|
||||||
|
{304, "CrashReportManager"},
|
||||||
|
{305, "PerformanceReportingManager"},
|
||||||
{310, "UnityConnectSettings"},
|
{310, "UnityConnectSettings"},
|
||||||
|
{319, "AvatarMask"},
|
||||||
|
{328, "VideoPlayer"},
|
||||||
|
{329, "VideoClip"},
|
||||||
|
{363, "OcclusionCullingData"},
|
||||||
{1001, "Prefab"},
|
{1001, "Prefab"},
|
||||||
{1002, "EditorExtensionImpl"},
|
{1002, "EditorExtensionImpl"},
|
||||||
{1003, "AssetImporter"},
|
{1003, "AssetImporter"},
|
||||||
@@ -276,6 +266,12 @@ namespace Unity_Studio
|
|||||||
{1112, "SubstanceImporter"},
|
{1112, "SubstanceImporter"},
|
||||||
{1113, "LightmapParameters"},
|
{1113, "LightmapParameters"},
|
||||||
{1120, "LightmapSnapshot"},
|
{1120, "LightmapSnapshot"},
|
||||||
|
{367388927, "SubDerived"},
|
||||||
|
{334799969, "SiblingDerived"},
|
||||||
|
{687078895, "SpriteAtlas"},
|
||||||
|
{1091556383, "Derived"},
|
||||||
|
{1480428607, "LowerResBlitTexture"},
|
||||||
|
{1571458007, "RenderPassAttachment"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
191
Unity Studio/Unity Studio Classes/ClassStruct.cs
Normal file
191
Unity Studio/Unity Studio Classes/ClassStruct.cs
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Unity_Studio
|
||||||
|
{
|
||||||
|
public class ClassMember
|
||||||
|
{
|
||||||
|
public int Level;
|
||||||
|
public string Type;
|
||||||
|
public string Name;
|
||||||
|
public int Size;
|
||||||
|
public int Flag;
|
||||||
|
|
||||||
|
//use for read
|
||||||
|
public bool alignBefore;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ClassStruct : ListViewItem
|
||||||
|
{
|
||||||
|
public int ID;
|
||||||
|
public List<ClassMember> members;
|
||||||
|
|
||||||
|
public string membersstr
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
foreach (var i in members)
|
||||||
|
{
|
||||||
|
sb.AppendFormat("{0}{1} {2} {3} {4}\r\n", new string('\t', i.Level), i.Type, i.Name, i.Size, (i.Flag & 0x4000) != 0);
|
||||||
|
}
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class ClassStructHelper
|
||||||
|
{
|
||||||
|
public static string ViewStruct(this AssetPreloadData asset)
|
||||||
|
{
|
||||||
|
var a_Stream = asset.sourceFile.a_Stream;
|
||||||
|
a_Stream.Position = asset.Offset;
|
||||||
|
if (asset.sourceFile.ClassStructures.TryGetValue(asset.Type1, out var classStructure))
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
ReadClassStruct(sb, classStructure.members, a_Stream);
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ReadClassStruct(StringBuilder sb, List<ClassMember> members, EndianBinaryReader a_Stream)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < members.Count; i++)
|
||||||
|
{
|
||||||
|
var member = members[i];
|
||||||
|
var level = member.Level;
|
||||||
|
var varTypeStr = member.Type;
|
||||||
|
var varNameStr = member.Name;
|
||||||
|
object value = null;
|
||||||
|
var align = (member.Flag & 0x4000) != 0;
|
||||||
|
var append = true;
|
||||||
|
if (member.alignBefore)
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
if (varTypeStr == "SInt8")//sbyte
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadSByte();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "UInt8")//byte
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadByte();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "short" || varTypeStr == "SInt16")//Int16
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadInt16();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "UInt16" || varTypeStr == "unsigned short")//UInt16
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadUInt16();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "int" || varTypeStr == "SInt32")//Int32
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadInt32();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int" || varTypeStr == "Type*")//UInt32
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadUInt32();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "long long" || varTypeStr == "SInt64")//Int64
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadInt64();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "UInt64" || varTypeStr == "unsigned long long")//UInt64
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadUInt64();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "float")//float
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadSingle();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "double")//double
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadDouble();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "bool")//bool
|
||||||
|
{
|
||||||
|
value = a_Stream.ReadBoolean();
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "string")//string
|
||||||
|
{
|
||||||
|
append = false;
|
||||||
|
var str = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
|
sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level)), varTypeStr, varNameStr, str);
|
||||||
|
i += 3;//skip
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "Array")//Array
|
||||||
|
{
|
||||||
|
append = false;
|
||||||
|
if ((members[i - 1].Flag & 0x4000) != 0)
|
||||||
|
align = true;
|
||||||
|
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), "int", "size", size);
|
||||||
|
var array = ReadArray(members, level, i);
|
||||||
|
for (int j = 0; j < size; j++)
|
||||||
|
{
|
||||||
|
sb.AppendFormat("{0}[{1}]\r\n", (new string('\t', level + 1)), j);
|
||||||
|
ReadClassStruct(sb, array, a_Stream);
|
||||||
|
}
|
||||||
|
i += array.Count + 1;//skip
|
||||||
|
}
|
||||||
|
else if (varTypeStr == "TypelessData")
|
||||||
|
{
|
||||||
|
append = false;
|
||||||
|
var size = a_Stream.ReadInt32();
|
||||||
|
a_Stream.ReadBytes(size);
|
||||||
|
i += 2;
|
||||||
|
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
||||||
|
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), "int", "size", size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
append = false;
|
||||||
|
if (align)
|
||||||
|
{
|
||||||
|
align = false;
|
||||||
|
SetAlignBefore(members, level, i + 1);
|
||||||
|
}
|
||||||
|
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
||||||
|
}
|
||||||
|
if (append)
|
||||||
|
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||||
|
if (align)
|
||||||
|
a_Stream.AlignStream(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<ClassMember> ReadArray(List<ClassMember> members, int level, int index)
|
||||||
|
{
|
||||||
|
var member2 = new List<ClassMember>();
|
||||||
|
for (int i = index + 2; i < members.Count; i++)//skip int size
|
||||||
|
{
|
||||||
|
var member = members[i];
|
||||||
|
var level2 = member.Level;
|
||||||
|
if (level2 <= level)
|
||||||
|
{
|
||||||
|
return member2;
|
||||||
|
}
|
||||||
|
member2.Add(member);
|
||||||
|
}
|
||||||
|
return member2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetAlignBefore(List<ClassMember> members, int level, int index)
|
||||||
|
{
|
||||||
|
for (int i = index; i < members.Count; i++)
|
||||||
|
{
|
||||||
|
var member = members[i];
|
||||||
|
var level2 = member.Level;
|
||||||
|
if (level2 <= level)
|
||||||
|
{
|
||||||
|
member.alignBefore = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,16 +11,22 @@ namespace Unity_Studio
|
|||||||
LittleEndian
|
LittleEndian
|
||||||
}
|
}
|
||||||
|
|
||||||
public class EndianStream : BinaryReader
|
public class EndianBinaryReader : BinaryReader
|
||||||
{
|
{
|
||||||
public EndianType endian;
|
public EndianType endian;
|
||||||
private byte[] a16 = new byte[2];
|
private byte[] a16 = new byte[2];
|
||||||
private byte[] a32 = new byte[4];
|
private byte[] a32 = new byte[4];
|
||||||
private byte[] a64 = new byte[8];
|
private byte[] a64 = new byte[8];
|
||||||
|
|
||||||
public EndianStream(Stream stream, EndianType endian) : base(stream) { }
|
public EndianBinaryReader(Stream stream, EndianType endian = EndianType.BigEndian)
|
||||||
|
: base(stream)
|
||||||
|
{ this.endian = endian; }
|
||||||
|
|
||||||
public long Position { get { return BaseStream.Position; } set { BaseStream.Position = value; } }
|
public long Position
|
||||||
|
{
|
||||||
|
get => BaseStream.Position;
|
||||||
|
set => BaseStream.Position = value;
|
||||||
|
}
|
||||||
|
|
||||||
public override short ReadInt16()
|
public override short ReadInt16()
|
||||||
{
|
{
|
||||||
@@ -117,28 +123,17 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
public void AlignStream(int alignment)
|
public void AlignStream(int alignment)
|
||||||
{
|
{
|
||||||
long pos = BaseStream.Position;
|
var pos = BaseStream.Position;
|
||||||
//long padding = alignment - pos + (pos / alignment) * alignment;
|
var mod = pos % alignment;
|
||||||
//if (padding != alignment) { base.BaseStream.Position += padding; }
|
if (mod != 0) { BaseStream.Position += alignment - mod; }
|
||||||
if ((pos % alignment) != 0) { BaseStream.Position += alignment - (pos % alignment); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ReadAlignedString(int length)
|
public string ReadAlignedString(int length)
|
||||||
{
|
{
|
||||||
if (length > 0 && length < (BaseStream.Length - BaseStream.Position))//crude failsafe
|
if (length > 0 && length < (BaseStream.Length - BaseStream.Position))
|
||||||
{
|
{
|
||||||
byte[] stringData = new byte[length];
|
var stringData = ReadBytes(length);
|
||||||
Read(stringData, 0, length);
|
var result = Encoding.UTF8.GetString(stringData);
|
||||||
var result = Encoding.UTF8.GetString(stringData); //must verify strange characters in PS3
|
|
||||||
|
|
||||||
/*string result = "";
|
|
||||||
char c;
|
|
||||||
for (int i = 0; i < length; i++)
|
|
||||||
{
|
|
||||||
c = (char)base.ReadByte();
|
|
||||||
result += c.ToString();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
AlignStream(4);
|
AlignStream(4);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -25,8 +25,7 @@ namespace Unity_Studio
|
|||||||
if (FileID >= 0 && FileID < sourceFile.sharedAssetsList.Count)
|
if (FileID >= 0 && FileID < sourceFile.sharedAssetsList.Count)
|
||||||
{ result.m_FileID = sourceFile.sharedAssetsList[FileID].Index; }
|
{ result.m_FileID = sourceFile.sharedAssetsList[FileID].Index; }
|
||||||
|
|
||||||
if (sourceFile.fileGen < 14) { result.m_PathID = a_Stream.ReadInt32(); }
|
result.m_PathID = sourceFile.fileGen < 14 ? a_Stream.ReadInt32() : a_Stream.ReadInt64();
|
||||||
else { result.m_PathID = a_Stream.ReadInt64(); }
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -81,8 +80,7 @@ namespace Unity_Studio
|
|||||||
if (m_Component.m_FileID >= 0 && m_Component.m_FileID < assetsfileList.Count)
|
if (m_Component.m_FileID >= 0 && m_Component.m_FileID < assetsfileList.Count)
|
||||||
{
|
{
|
||||||
AssetsFile sourceFile = assetsfileList[m_Component.m_FileID];
|
AssetsFile sourceFile = assetsfileList[m_Component.m_FileID];
|
||||||
AssetPreloadData asset;
|
if (sourceFile.preloadTable.TryGetValue(m_Component.m_PathID, out var asset))
|
||||||
if (sourceFile.preloadTable.TryGetValue(m_Component.m_PathID, out asset))
|
|
||||||
{
|
{
|
||||||
switch (asset.Type2)
|
switch (asset.Type2)
|
||||||
{
|
{
|
||||||
99
Unity Studio/Unity Studio Classes/UnityEnum.cs
Normal file
99
Unity Studio/Unity Studio Classes/UnityEnum.cs
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Unity_Studio
|
||||||
|
{
|
||||||
|
public enum TextureFormat
|
||||||
|
{
|
||||||
|
Alpha8 = 1,
|
||||||
|
ARGB4444,
|
||||||
|
RGB24,
|
||||||
|
RGBA32,
|
||||||
|
ARGB32,
|
||||||
|
RGB565 = 7,
|
||||||
|
R16 = 9,
|
||||||
|
DXT1,
|
||||||
|
DXT5 = 12,
|
||||||
|
RGBA4444,
|
||||||
|
BGRA32,
|
||||||
|
RHalf,
|
||||||
|
RGHalf,
|
||||||
|
RGBAHalf,
|
||||||
|
RFloat,
|
||||||
|
RGFloat,
|
||||||
|
RGBAFloat,
|
||||||
|
YUY2,
|
||||||
|
RGB9e5Float,
|
||||||
|
BC4 = 26,
|
||||||
|
BC5,
|
||||||
|
BC6H = 24,
|
||||||
|
BC7,
|
||||||
|
DXT1Crunched = 28,
|
||||||
|
DXT5Crunched,
|
||||||
|
PVRTC_RGB2,
|
||||||
|
PVRTC_RGBA2,
|
||||||
|
PVRTC_RGB4,
|
||||||
|
PVRTC_RGBA4,
|
||||||
|
ETC_RGB4,
|
||||||
|
ATC_RGB4,
|
||||||
|
ATC_RGBA8,
|
||||||
|
EAC_R = 41,
|
||||||
|
EAC_R_SIGNED,
|
||||||
|
EAC_RG,
|
||||||
|
EAC_RG_SIGNED,
|
||||||
|
ETC2_RGB,
|
||||||
|
ETC2_RGBA1,
|
||||||
|
ETC2_RGBA8,
|
||||||
|
ASTC_RGB_4x4,
|
||||||
|
ASTC_RGB_5x5,
|
||||||
|
ASTC_RGB_6x6,
|
||||||
|
ASTC_RGB_8x8,
|
||||||
|
ASTC_RGB_10x10,
|
||||||
|
ASTC_RGB_12x12,
|
||||||
|
ASTC_RGBA_4x4,
|
||||||
|
ASTC_RGBA_5x5,
|
||||||
|
ASTC_RGBA_6x6,
|
||||||
|
ASTC_RGBA_8x8,
|
||||||
|
ASTC_RGBA_10x10,
|
||||||
|
ASTC_RGBA_12x12,
|
||||||
|
ETC_RGB4_3DS,
|
||||||
|
ETC_RGBA8_3DS,
|
||||||
|
RG16,
|
||||||
|
R8,
|
||||||
|
ETC_RGB4Crunched,
|
||||||
|
ETC2_RGBA8Crunched,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AudioType
|
||||||
|
{
|
||||||
|
UNKNOWN,
|
||||||
|
ACC,
|
||||||
|
AIFF,
|
||||||
|
IT = 10,
|
||||||
|
MOD = 12,
|
||||||
|
MPEG,
|
||||||
|
OGGVORBIS,
|
||||||
|
S3M = 17,
|
||||||
|
WAV = 20,
|
||||||
|
XM,
|
||||||
|
XMA,
|
||||||
|
VAG,
|
||||||
|
AUDIOQUEUE
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AudioCompressionFormat
|
||||||
|
{
|
||||||
|
PCM,
|
||||||
|
Vorbis,
|
||||||
|
ADPCM,
|
||||||
|
MP3,
|
||||||
|
VAG,
|
||||||
|
HEVAG,
|
||||||
|
XMA,
|
||||||
|
AAC,
|
||||||
|
GCADPCM,
|
||||||
|
ATRAC9
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -14,13 +15,15 @@ namespace Unity_Studio
|
|||||||
internal static class UnityStudio
|
internal static class UnityStudio
|
||||||
{
|
{
|
||||||
public static List<string> unityFiles = new List<string>(); //files to load
|
public static List<string> unityFiles = new List<string>(); //files to load
|
||||||
public static HashSet<string> unityFilesHash = new HashSet<string>(); //improve performance
|
public static HashSet<string> unityFilesHash = new HashSet<string>(); //to improve the loading speed
|
||||||
public static List<AssetsFile> assetsfileList = new List<AssetsFile>(); //loaded files
|
public static List<AssetsFile> assetsfileList = new List<AssetsFile>(); //loaded files
|
||||||
public static HashSet<string> assetsfileListHash = new HashSet<string>(); //improve performance
|
public static HashSet<string> assetsfileListHash = new HashSet<string>(); //to improve the loading speed
|
||||||
public static Dictionary<string, EndianStream> assetsfileandstream = new Dictionary<string, EndianStream>(); //use for read res files
|
public static Dictionary<string, int> sharedFileIndex = new Dictionary<string, int>(); //to improve the loading speed
|
||||||
|
public static Dictionary<string, EndianBinaryReader> assetsfileandstream = new Dictionary<string, EndianBinaryReader>(); //use for read res files
|
||||||
public static List<AssetPreloadData> exportableAssets = new List<AssetPreloadData>(); //used to hold all assets while the ListView is filtered
|
public static List<AssetPreloadData> exportableAssets = new List<AssetPreloadData>(); //used to hold all assets while the ListView is filtered
|
||||||
private static HashSet<string> exportableAssetsHash = new HashSet<string>(); //improve performance
|
private static HashSet<string> exportableAssetsHash = new HashSet<string>(); //avoid the same name asset
|
||||||
public static List<AssetPreloadData> visibleAssets = new List<AssetPreloadData>(); //used to build the ListView from all or filtered assets
|
public static List<AssetPreloadData> visibleAssets = new List<AssetPreloadData>(); //used to build the ListView from all or filtered assets
|
||||||
|
private static Dictionary<AssetPreloadData, Bitmap> spriteCache = new Dictionary<AssetPreloadData, Bitmap>();
|
||||||
|
|
||||||
public static string productName = "";
|
public static string productName = "";
|
||||||
public static string mainPath = "";
|
public static string mainPath = "";
|
||||||
@@ -38,17 +41,9 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
public static void LoadAssetsFile(string fileName)
|
public static void LoadAssetsFile(string fileName)
|
||||||
{
|
{
|
||||||
//var loadedAssetsFile = assetsfileList.Find(aFile => aFile.filePath == fileName);
|
|
||||||
//if (loadedAssetsFile == null)
|
|
||||||
if (!assetsfileListHash.Contains(fileName))
|
if (!assetsfileListHash.Contains(fileName))
|
||||||
{
|
{
|
||||||
//open file here and pass the stream to facilitate loading memory files
|
AssetsFile assetsFile = new AssetsFile(fileName, new EndianBinaryReader(File.OpenRead(fileName)));
|
||||||
//also by keeping the stream as a property of AssetsFile, it can be used later on to read assets
|
|
||||||
AssetsFile assetsFile = new AssetsFile(fileName, new EndianStream(File.OpenRead(fileName), EndianType.BigEndian));
|
|
||||||
//if (Path.GetFileName(fileName) == "mainData") { mainDataFile = assetsFile; }
|
|
||||||
|
|
||||||
//totalAssetCount += assetsFile.preloadTable.Count;
|
|
||||||
|
|
||||||
assetsfileList.Add(assetsFile);
|
assetsfileList.Add(assetsFile);
|
||||||
assetsfileListHash.Add(fileName);
|
assetsfileListHash.Add(fileName);
|
||||||
|
|
||||||
@@ -64,7 +59,7 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
else if (File.Exists(Path.GetDirectoryName(fileName) + "\\mainData"))
|
else if (File.Exists(Path.GetDirectoryName(fileName) + "\\mainData"))
|
||||||
{
|
{
|
||||||
mainDataFile = new AssetsFile(Path.GetDirectoryName(fileName) + "\\mainData", new EndianStream(File.OpenRead(Path.GetDirectoryName(fileName) + "\\mainData"), EndianType.BigEndian));
|
mainDataFile = new AssetsFile(Path.GetDirectoryName(fileName) + "\\mainData", new EndianBinaryReader(File.OpenRead(Path.GetDirectoryName(fileName) + "\\mainData")));
|
||||||
|
|
||||||
assetsFile.m_Version = mainDataFile.m_Version;
|
assetsFile.m_Version = mainDataFile.m_Version;
|
||||||
assetsFile.version = mainDataFile.version;
|
assetsFile.version = mainDataFile.version;
|
||||||
@@ -78,23 +73,8 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
string sharedFilePath = Path.GetDirectoryName(fileName) + "\\" + sharedFile.fileName;
|
string sharedFilePath = Path.GetDirectoryName(fileName) + "\\" + sharedFile.fileName;
|
||||||
string sharedFileName = Path.GetFileName(sharedFile.fileName);
|
string sharedFileName = Path.GetFileName(sharedFile.fileName);
|
||||||
|
|
||||||
//var loadedSharedFile = assetsfileList.Find(aFile => aFile.filePath == sharedFilePath);
|
|
||||||
/*var loadedSharedFile = assetsfileList.Find(aFile => aFile.filePath.EndsWith(Path.GetFileName(sharedFile.fileName)));
|
|
||||||
if (loadedSharedFile != null) { sharedFile.Index = assetsfileList.IndexOf(loadedSharedFile); }
|
|
||||||
else if (File.Exists(sharedFilePath))
|
|
||||||
{
|
|
||||||
//progressBar1.Maximum += 1;
|
|
||||||
sharedFile.Index = assetsfileList.Count;
|
|
||||||
LoadAssetsFile(sharedFilePath);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//searching in unityFiles would preserve desired order, but...
|
|
||||||
//var quedSharedFile = unityFiles.Find(uFile => String.Equals(Path.GetFileName(uFile), sharedFileName, StringComparison.OrdinalIgnoreCase));
|
|
||||||
//if (quedSharedFile == null)
|
|
||||||
if (!unityFilesHash.Contains(sharedFileName))
|
if (!unityFilesHash.Contains(sharedFileName))
|
||||||
{
|
{
|
||||||
//if (!File.Exists(sharedFilePath)) { sharedFilePath = Path.GetDirectoryName(fileName) + "\\" + sharedFileName; }
|
|
||||||
if (!File.Exists(sharedFilePath))
|
if (!File.Exists(sharedFilePath))
|
||||||
{
|
{
|
||||||
var findFiles = Directory.GetFiles(Path.GetDirectoryName(fileName), sharedFileName, SearchOption.AllDirectories);
|
var findFiles = Directory.GetFiles(Path.GetDirectoryName(fileName), sharedFileName, SearchOption.AllDirectories);
|
||||||
@@ -107,13 +87,17 @@ namespace Unity_Studio
|
|||||||
sharedFile.Index = unityFiles.Count;
|
sharedFile.Index = unityFiles.Count;
|
||||||
unityFiles.Add(sharedFilePath);
|
unityFiles.Add(sharedFilePath);
|
||||||
unityFilesHash.Add(sharedFileName);
|
unityFilesHash.Add(sharedFileName);
|
||||||
//progressBar1.Maximum++;
|
|
||||||
value++;
|
value++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sharedFile.Index = unityFiles.IndexOf(sharedFilePath);
|
if (!sharedFileIndex.TryGetValue(sharedFilePath, out var index))
|
||||||
|
{
|
||||||
|
index = unityFiles.IndexOf(sharedFilePath);
|
||||||
|
sharedFileIndex.Add(sharedFilePath, index);
|
||||||
|
}
|
||||||
|
sharedFile.Index = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (value > 0)
|
if (value > 0)
|
||||||
@@ -126,14 +110,12 @@ namespace Unity_Studio
|
|||||||
StatusStripUpdate("Decompressing " + Path.GetFileName(bundleFileName) + "...");
|
StatusStripUpdate("Decompressing " + Path.GetFileName(bundleFileName) + "...");
|
||||||
BundleFile b_File = new BundleFile(bundleFileName);
|
BundleFile b_File = new BundleFile(bundleFileName);
|
||||||
|
|
||||||
List<AssetsFile> b_assetsfileList = new List<AssetsFile>();
|
|
||||||
|
|
||||||
foreach (var memFile in b_File.MemoryAssetsFileList) //filter unity files
|
foreach (var memFile in b_File.MemoryAssetsFileList) //filter unity files
|
||||||
{
|
{
|
||||||
StatusStripUpdate("Loading " + memFile.fileName);
|
StatusStripUpdate("Loading " + memFile.fileName);
|
||||||
//create dummy path to be used for asset extraction
|
//create dummy path to be used for asset extraction
|
||||||
memFile.fileName = Path.GetDirectoryName(bundleFileName) + "\\" + memFile.fileName;
|
memFile.fileName = Path.GetDirectoryName(bundleFileName) + "\\" + memFile.fileName;
|
||||||
AssetsFile assetsFile = new AssetsFile(memFile.fileName, new EndianStream(memFile.memStream, EndianType.BigEndian));
|
AssetsFile assetsFile = new AssetsFile(memFile.fileName, new EndianBinaryReader(memFile.memStream));
|
||||||
if (assetsFile.valid)
|
if (assetsFile.valid)
|
||||||
{
|
{
|
||||||
assetsFile.bundlePath = bundleFileName;
|
assetsFile.bundlePath = bundleFileName;
|
||||||
@@ -144,24 +126,19 @@ namespace Unity_Studio
|
|||||||
assetsFile.version = Array.ConvertAll((from Match m in Regex.Matches(assetsFile.m_Version, @"[0-9]") select m.Value).ToArray(), int.Parse);
|
assetsFile.version = Array.ConvertAll((from Match m in Regex.Matches(assetsFile.m_Version, @"[0-9]") select m.Value).ToArray(), int.Parse);
|
||||||
assetsFile.buildType = b_File.versionEngine.Split(AssetsFile.buildTypeSplit, StringSplitOptions.RemoveEmptyEntries);
|
assetsFile.buildType = b_File.versionEngine.Split(AssetsFile.buildTypeSplit, StringSplitOptions.RemoveEmptyEntries);
|
||||||
}
|
}
|
||||||
b_assetsfileList.Add(assetsFile);
|
assetsfileList.Add(assetsFile);
|
||||||
}
|
}
|
||||||
assetsfileandstream[assetsFile.fileName] = assetsFile.a_Stream;
|
assetsfileandstream[assetsFile.fileName] = assetsFile.a_Stream;
|
||||||
}
|
}
|
||||||
if (b_assetsfileList.Count > 0)
|
}
|
||||||
|
|
||||||
|
public static void BuildSharedIndex()
|
||||||
|
{
|
||||||
|
foreach (var assetsFile in assetsfileList)
|
||||||
{
|
{
|
||||||
assetsfileList.AddRange(b_assetsfileList);
|
foreach (var sharedFile in assetsFile.sharedAssetsList)
|
||||||
foreach (var assetsFile in b_assetsfileList)
|
|
||||||
{
|
{
|
||||||
foreach (var sharedFile in assetsFile.sharedAssetsList)
|
sharedFile.Index = assetsfileList.FindIndex(aFile => aFile.fileName.ToUpper() == sharedFile.fileName.ToUpper());
|
||||||
{
|
|
||||||
sharedFile.fileName = Path.GetDirectoryName(bundleFileName) + "\\" + sharedFile.fileName;
|
|
||||||
var loadedSharedFile = b_assetsfileList.Find(aFile => aFile.filePath == sharedFile.fileName);
|
|
||||||
if (loadedSharedFile != null)
|
|
||||||
{
|
|
||||||
sharedFile.Index = assetsfileList.IndexOf(loadedSharedFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,16 +150,17 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
string destFile = Path.GetFileNameWithoutExtension(splitFile);
|
string destFile = Path.GetFileNameWithoutExtension(splitFile);
|
||||||
string destPath = Path.GetDirectoryName(splitFile) + "\\";
|
string destPath = Path.GetDirectoryName(splitFile) + "\\";
|
||||||
if (!File.Exists(destPath + destFile))
|
var destFull = destPath + destFile;
|
||||||
|
if (!File.Exists(destFull))
|
||||||
{
|
{
|
||||||
string[] splitParts = Directory.GetFiles(destPath, destFile + ".split*");
|
string[] splitParts = Directory.GetFiles(destPath, destFile + ".split*");
|
||||||
using (var destStream = File.Create(destPath + destFile))
|
using (var destStream = File.Create(destFull))
|
||||||
{
|
{
|
||||||
for (int i = 0; i < splitParts.Length; i++)
|
for (int i = 0; i < splitParts.Length; i++)
|
||||||
{
|
{
|
||||||
string splitPart = destPath + destFile + ".split" + i;
|
string splitPart = destFull + ".split" + i;
|
||||||
using (var sourceStream = File.OpenRead(splitPart))
|
using (var sourceStream = File.OpenRead(splitPart))
|
||||||
sourceStream.CopyTo(destStream); // You can pass the buffer size as second argument.
|
sourceStream.CopyTo(destStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,35 +170,31 @@ namespace Unity_Studio
|
|||||||
public static int extractBundleFile(string bundleFileName)
|
public static int extractBundleFile(string bundleFileName)
|
||||||
{
|
{
|
||||||
int extractedCount = 0;
|
int extractedCount = 0;
|
||||||
|
if (CheckBundleFile(bundleFileName))
|
||||||
StatusStripUpdate("Decompressing " + Path.GetFileName(bundleFileName) + " ,,,");
|
|
||||||
|
|
||||||
string extractPath = bundleFileName + "_unpacked\\";
|
|
||||||
Directory.CreateDirectory(extractPath);
|
|
||||||
|
|
||||||
BundleFile b_File = new BundleFile(bundleFileName);
|
|
||||||
|
|
||||||
foreach (var memFile in b_File.MemoryAssetsFileList)
|
|
||||||
{
|
{
|
||||||
string filePath = extractPath + memFile.fileName.Replace('/', '\\');
|
StatusStripUpdate($"Decompressing {Path.GetFileName(bundleFileName)} ...");
|
||||||
if (!Directory.Exists(Path.GetDirectoryName(filePath)))
|
var extractPath = bundleFileName + "_unpacked\\";
|
||||||
|
Directory.CreateDirectory(extractPath);
|
||||||
|
var b_File = new BundleFile(bundleFileName);
|
||||||
|
foreach (var memFile in b_File.MemoryAssetsFileList)
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
|
var filePath = extractPath + memFile.fileName.Replace('/', '\\');
|
||||||
|
if (!Directory.Exists(Path.GetDirectoryName(filePath)))
|
||||||
}
|
|
||||||
if (!File.Exists(filePath))
|
|
||||||
{
|
|
||||||
StatusStripUpdate("Extracting " + Path.GetFileName(memFile.fileName));
|
|
||||||
extractedCount += 1;
|
|
||||||
|
|
||||||
using (FileStream file = new FileStream(filePath, FileMode.Create, FileAccess.Write))
|
|
||||||
{
|
{
|
||||||
memFile.memStream.WriteTo(file);
|
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
|
||||||
memFile.memStream.Close();
|
}
|
||||||
|
if (!File.Exists(filePath))
|
||||||
|
{
|
||||||
|
StatusStripUpdate($"Extracting {Path.GetFileName(memFile.fileName)}");
|
||||||
|
extractedCount += 1;
|
||||||
|
using (var file = File.Create(filePath))
|
||||||
|
{
|
||||||
|
memFile.memStream.WriteTo(file);
|
||||||
|
memFile.memStream.Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return extractedCount;
|
return extractedCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -319,41 +293,61 @@ namespace Unity_Studio
|
|||||||
ab = new AssetBundle(asset);
|
ab = new AssetBundle(asset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 21: //Material
|
case 329: //VideoClip
|
||||||
case 74: //AnimationClip
|
|
||||||
case 90: //Avatar
|
|
||||||
case 91: //AnimatorController
|
|
||||||
case 115: //MonoScript
|
|
||||||
case 213: //Sprite
|
|
||||||
{
|
{
|
||||||
if (asset.Offset + 4 > asset.sourceFile.a_Stream.BaseStream.Length)
|
var m_VideoClip = new VideoClip(asset, false);
|
||||||
break;
|
exportable = true;
|
||||||
asset.sourceFile.a_Stream.Position = asset.Offset;
|
|
||||||
var len = asset.sourceFile.a_Stream.ReadInt32();
|
|
||||||
if (len > 0 && len < asset.Size - 4)
|
|
||||||
{
|
|
||||||
var bytes = asset.sourceFile.a_Stream.ReadBytes(len);
|
|
||||||
asset.Text = Encoding.UTF8.GetString(bytes);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 152: //MovieTexture
|
||||||
|
{
|
||||||
|
var m_MovieTexture = new MovieTexture(asset, false);
|
||||||
|
exportable = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 213: //Sprite
|
||||||
|
{
|
||||||
|
var m_Sprite = new Sprite(asset, false);
|
||||||
|
exportable = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/*case 21: //Material
|
||||||
|
case 74: //AnimationClip
|
||||||
|
case 90: //Avatar
|
||||||
|
case 91: //AnimatorController
|
||||||
|
case 115: //MonoScript
|
||||||
|
case 687078895: //SpriteAtlas
|
||||||
|
{
|
||||||
|
if (asset.Offset + 4 > asset.sourceFile.a_Stream.BaseStream.Length)
|
||||||
|
break;
|
||||||
|
asset.sourceFile.a_Stream.Position = asset.Offset;
|
||||||
|
var len = asset.sourceFile.a_Stream.ReadInt32();
|
||||||
|
if (len > 0 && len < asset.Size - 4)
|
||||||
|
{
|
||||||
|
var bytes = asset.sourceFile.a_Stream.ReadBytes(len);
|
||||||
|
asset.Text = Encoding.UTF8.GetString(bytes);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
if (!exportable && displayAll)
|
if (!exportable && displayAll)
|
||||||
|
{
|
||||||
|
asset.extension = ".dat";
|
||||||
|
exportable = true;
|
||||||
|
}
|
||||||
|
if (exportable)
|
||||||
{
|
{
|
||||||
if (asset.Text == "")
|
if (asset.Text == "")
|
||||||
{
|
{
|
||||||
asset.Text = asset.TypeString + " #" + asset.uniqueID;
|
asset.Text = asset.TypeString + " #" + asset.uniqueID;
|
||||||
}
|
}
|
||||||
asset.extension = ".dat";
|
asset.SubItems.AddRange(new[] { asset.TypeString, asset.fullSize.ToString() });
|
||||||
asset.SubItems.AddRange(new[] { asset.TypeString, asset.Size.ToString() });
|
//处理同名文件
|
||||||
exportable = true;
|
|
||||||
}
|
|
||||||
if (exportable)
|
|
||||||
{
|
|
||||||
if (!exportableAssetsHash.Add((asset.TypeString + asset.Text).ToUpper()))
|
if (!exportableAssetsHash.Add((asset.TypeString + asset.Text).ToUpper()))
|
||||||
{
|
{
|
||||||
asset.Text += " #" + asset.uniqueID;
|
asset.Text += " #" + asset.uniqueID;
|
||||||
}
|
}
|
||||||
|
//处理非法文件名
|
||||||
asset.Text = FixFileName(asset.Text);
|
asset.Text = FixFileName(asset.Text);
|
||||||
assetsFile.exportableAssets.Add(asset);
|
assetsFile.exportableAssets.Add(asset);
|
||||||
}
|
}
|
||||||
@@ -372,14 +366,10 @@ namespace Unity_Studio
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
exportableAssets.AddRange(assetsFile.exportableAssets);
|
exportableAssets.AddRange(assetsFile.exportableAssets);
|
||||||
//if (assetGroup.Items.Count > 0) { listView1.Groups.Add(assetGroup); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
visibleAssets = exportableAssets;
|
visibleAssets = exportableAssets;
|
||||||
|
|
||||||
//will only work if ListView is visible
|
|
||||||
exportableAssetsHash.Clear();
|
exportableAssetsHash.Clear();
|
||||||
//assetListView.EndUpdate();
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -403,11 +393,9 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
var parentNode = fileNode;
|
var parentNode = fileNode;
|
||||||
|
|
||||||
Transform m_Transform;
|
if (assetsfileList.TryGetTransform(m_GameObject.m_Transform, out var m_Transform))
|
||||||
if (assetsfileList.TryGetTransform(m_GameObject.m_Transform, out m_Transform))
|
|
||||||
{
|
{
|
||||||
Transform m_Father;
|
if (assetsfileList.TryGetTransform(m_Transform.m_Father, out var m_Father))
|
||||||
if (assetsfileList.TryGetTransform(m_Transform.m_Father, out m_Father))
|
|
||||||
{
|
{
|
||||||
//GameObject Parent;
|
//GameObject Parent;
|
||||||
if (assetsfileList.TryGetGameObject(m_Father.m_GameObject, out parentNode))
|
if (assetsfileList.TryGetGameObject(m_Father.m_GameObject, out parentNode))
|
||||||
@@ -431,7 +419,7 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
if (File.Exists(mainPath + "\\materials.json"))
|
if (File.Exists(mainPath + "\\materials.json"))
|
||||||
{
|
{
|
||||||
string matLine = "";
|
string matLine;
|
||||||
using (StreamReader reader = File.OpenText(mainPath + "\\materials.json"))
|
using (StreamReader reader = File.OpenText(mainPath + "\\materials.json"))
|
||||||
{ matLine = reader.ReadToEnd(); }
|
{ matLine = reader.ReadToEnd(); }
|
||||||
|
|
||||||
@@ -447,8 +435,7 @@ namespace Unity_Studio
|
|||||||
//group class structures by versionv
|
//group class structures by versionv
|
||||||
foreach (var assetsFile in assetsfileList)
|
foreach (var assetsFile in assetsfileList)
|
||||||
{
|
{
|
||||||
SortedDictionary<int, ClassStruct> curVer;
|
if (AllClassStructures.TryGetValue(assetsFile.m_Version, out var curVer))
|
||||||
if (AllClassStructures.TryGetValue(assetsFile.m_Version, out curVer))
|
|
||||||
{
|
{
|
||||||
foreach (var uClass in assetsFile.ClassStructures)
|
foreach (var uClass in assetsFile.ClassStructures)
|
||||||
{
|
{
|
||||||
@@ -509,14 +496,12 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
GameObjects.Add(m_GameObject);
|
GameObjects.Add(m_GameObject);
|
||||||
|
|
||||||
AssetPreloadData MeshFilterPD;
|
if (assetsfileList.TryGetPD(m_GameObject.m_MeshFilter, out var MeshFilterPD))
|
||||||
if (assetsfileList.TryGetPD(m_GameObject.m_MeshFilter, out MeshFilterPD))
|
|
||||||
{
|
{
|
||||||
//MeshFilters are not unique!
|
//MeshFilters are not unique!
|
||||||
//MeshFilters.Add(MeshFilterPD);
|
//MeshFilters.Add(MeshFilterPD);
|
||||||
MeshFilter m_MeshFilter = new MeshFilter(MeshFilterPD);
|
MeshFilter m_MeshFilter = new MeshFilter(MeshFilterPD);
|
||||||
AssetPreloadData MeshPD;
|
if (assetsfileList.TryGetPD(m_MeshFilter.m_Mesh, out var MeshPD))
|
||||||
if (assetsfileList.TryGetPD(m_MeshFilter.m_Mesh, out MeshPD))
|
|
||||||
{
|
{
|
||||||
Meshes.Add(MeshPD);
|
Meshes.Add(MeshPD);
|
||||||
|
|
||||||
@@ -528,15 +513,13 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region get Renderer
|
#region get Renderer
|
||||||
AssetPreloadData RendererPD;
|
if (assetsfileList.TryGetPD(m_GameObject.m_MeshRenderer, out var RendererPD))
|
||||||
if (assetsfileList.TryGetPD(m_GameObject.m_MeshRenderer, out RendererPD))
|
|
||||||
{
|
{
|
||||||
MeshRenderer m_Renderer = new MeshRenderer(RendererPD);
|
MeshRenderer m_Renderer = new MeshRenderer(RendererPD);
|
||||||
|
|
||||||
foreach (var MaterialPPtr in m_Renderer.m_Materials)
|
foreach (var MaterialPPtr in m_Renderer.m_Materials)
|
||||||
{
|
{
|
||||||
AssetPreloadData MaterialPD;
|
if (assetsfileList.TryGetPD(MaterialPPtr, out var MaterialPD))
|
||||||
if (assetsfileList.TryGetPD(MaterialPPtr, out MaterialPD))
|
|
||||||
{
|
{
|
||||||
Materials.Add(MaterialPD);
|
Materials.Add(MaterialPD);
|
||||||
cb2.AppendFormat("\n\n\t;Material::, Model::{0}", m_GameObject.m_Name);
|
cb2.AppendFormat("\n\n\t;Material::, Model::{0}", m_GameObject.m_Name);
|
||||||
@@ -544,11 +527,11 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region get SkinnedMeshRenderer
|
#region get SkinnedMeshRenderer
|
||||||
AssetPreloadData SkinnedMeshPD;
|
if (assetsfileList.TryGetPD(m_GameObject.m_SkinnedMeshRenderer, out var SkinnedMeshPD))
|
||||||
if (assetsfileList.TryGetPD(m_GameObject.m_SkinnedMeshRenderer, out SkinnedMeshPD))
|
|
||||||
{
|
{
|
||||||
Skins.Add(SkinnedMeshPD);
|
Skins.Add(SkinnedMeshPD);
|
||||||
|
|
||||||
@@ -556,8 +539,7 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
foreach (var MaterialPPtr in m_SkinnedMeshRenderer.m_Materials)
|
foreach (var MaterialPPtr in m_SkinnedMeshRenderer.m_Materials)
|
||||||
{
|
{
|
||||||
AssetPreloadData MaterialPD;
|
if (assetsfileList.TryGetPD(MaterialPPtr, out var MaterialPD))
|
||||||
if (assetsfileList.TryGetPD(MaterialPPtr, out MaterialPD))
|
|
||||||
{
|
{
|
||||||
Materials.Add(MaterialPD);
|
Materials.Add(MaterialPD);
|
||||||
cb2.AppendFormat("\n\n\t;Material::, Model::{0}", m_GameObject.m_Name);
|
cb2.AppendFormat("\n\n\t;Material::, Model::{0}", m_GameObject.m_Name);
|
||||||
@@ -572,11 +554,9 @@ namespace Unity_Studio
|
|||||||
//collect skeleton dummies to make sure they are exported
|
//collect skeleton dummies to make sure they are exported
|
||||||
foreach (var bonePPtr in m_SkinnedMeshRenderer.m_Bones)
|
foreach (var bonePPtr in m_SkinnedMeshRenderer.m_Bones)
|
||||||
{
|
{
|
||||||
Transform b_Transform;
|
if (assetsfileList.TryGetTransform(bonePPtr, out var b_Transform))
|
||||||
if (assetsfileList.TryGetTransform(bonePPtr, out b_Transform))
|
|
||||||
{
|
{
|
||||||
GameObject m_Bone;
|
if (assetsfileList.TryGetGameObject(b_Transform.m_GameObject, out var m_Bone))
|
||||||
if (assetsfileList.TryGetGameObject(b_Transform.m_GameObject, out m_Bone))
|
|
||||||
{
|
{
|
||||||
LimbNodes.Add(m_Bone);
|
LimbNodes.Add(m_Bone);
|
||||||
//also collect the root bone
|
//also collect the root bone
|
||||||
@@ -587,11 +567,9 @@ namespace Unity_Studio
|
|||||||
#region collect children because m_SkinnedMeshRenderer.m_Bones doesn't contain terminations
|
#region collect children because m_SkinnedMeshRenderer.m_Bones doesn't contain terminations
|
||||||
foreach (var ChildPPtr in b_Transform.m_Children)
|
foreach (var ChildPPtr in b_Transform.m_Children)
|
||||||
{
|
{
|
||||||
Transform ChildTR;
|
if (assetsfileList.TryGetTransform(ChildPPtr, out var ChildTR))
|
||||||
if (assetsfileList.TryGetTransform(ChildPPtr, out ChildTR))
|
|
||||||
{
|
{
|
||||||
GameObject m_Child;
|
if (assetsfileList.TryGetGameObject(ChildTR.m_GameObject, out var m_Child))
|
||||||
if (assetsfileList.TryGetGameObject(ChildTR.m_GameObject, out m_Child))
|
|
||||||
{
|
{
|
||||||
//check that the Model doesn't contain a Mesh, although this won't ensure it's part of the skeleton
|
//check that the Model doesn't contain a Mesh, although this won't ensure it's part of the skeleton
|
||||||
if (m_Child.m_MeshFilter == null && m_Child.m_SkinnedMeshRenderer == null)
|
if (m_Child.m_MeshFilter == null && m_Child.m_SkinnedMeshRenderer == null)
|
||||||
@@ -680,15 +658,12 @@ namespace Unity_Studio
|
|||||||
#region write texture connections
|
#region write texture connections
|
||||||
foreach (var m_TexEnv in m_Material.m_TexEnvs)
|
foreach (var m_TexEnv in m_Material.m_TexEnvs)
|
||||||
{
|
{
|
||||||
AssetPreloadData TexturePD;
|
|
||||||
#region get Porsche material from json
|
#region get Porsche material from json
|
||||||
if (!assetsfileList.TryGetPD(m_TexEnv.m_Texture, out TexturePD) && jsonMats != null)
|
if (!assetsfileList.TryGetPD(m_TexEnv.m_Texture, out var TexturePD) && jsonMats != null)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> matProp;
|
if (jsonMats.TryGetValue(m_Material.m_Name, out var matProp))
|
||||||
if (jsonMats.TryGetValue(m_Material.m_Name, out matProp))
|
|
||||||
{
|
{
|
||||||
string texName;
|
if (matProp.TryGetValue(m_TexEnv.name, out var texName))
|
||||||
if (matProp.TryGetValue(m_TexEnv.name, out texName))
|
|
||||||
{
|
{
|
||||||
foreach (var asset in exportableAssets)
|
foreach (var asset in exportableAssets)
|
||||||
{
|
{
|
||||||
@@ -890,8 +865,7 @@ namespace Unity_Studio
|
|||||||
ob.Append("\n\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",0,0,0");
|
ob.Append("\n\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",0,0,0");
|
||||||
ob.Append("\n\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",0");
|
ob.Append("\n\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",0");
|
||||||
|
|
||||||
Transform m_Transform;
|
if (assetsfileList.TryGetTransform(m_GameObject.m_Transform, out var m_Transform))
|
||||||
if (assetsfileList.TryGetTransform(m_GameObject.m_Transform, out m_Transform))
|
|
||||||
{
|
{
|
||||||
float[] m_EulerRotation = QuatToEuler(new[] { m_Transform.m_LocalRotation[0], -m_Transform.m_LocalRotation[1], -m_Transform.m_LocalRotation[2], m_Transform.m_LocalRotation[3] });
|
float[] m_EulerRotation = QuatToEuler(new[] { m_Transform.m_LocalRotation[0], -m_Transform.m_LocalRotation[1], -m_Transform.m_LocalRotation[2], m_Transform.m_LocalRotation[3] });
|
||||||
|
|
||||||
@@ -947,10 +921,7 @@ namespace Unity_Studio
|
|||||||
foreach (var SkinnedMeshPD in Skins)
|
foreach (var SkinnedMeshPD in Skins)
|
||||||
{
|
{
|
||||||
SkinnedMeshRenderer m_SkinnedMeshRenderer = new SkinnedMeshRenderer(SkinnedMeshPD);
|
SkinnedMeshRenderer m_SkinnedMeshRenderer = new SkinnedMeshRenderer(SkinnedMeshPD);
|
||||||
|
if (assetsfileList.TryGetGameObject(m_SkinnedMeshRenderer.m_GameObject, out var m_GameObject) && assetsfileList.TryGetPD(m_SkinnedMeshRenderer.m_Mesh, out var MeshPD))
|
||||||
GameObject m_GameObject;
|
|
||||||
AssetPreloadData MeshPD;
|
|
||||||
if (assetsfileList.TryGetGameObject(m_SkinnedMeshRenderer.m_GameObject, out m_GameObject) && assetsfileList.TryGetPD(m_SkinnedMeshRenderer.m_Mesh, out MeshPD))
|
|
||||||
{
|
{
|
||||||
//generate unique Geometry ID for instanced mesh objects
|
//generate unique Geometry ID for instanced mesh objects
|
||||||
//instanced skinned geometry is possible in FBX, but all instances are linked to the same skeleton nodes
|
//instanced skinned geometry is possible in FBX, but all instances are linked to the same skeleton nodes
|
||||||
@@ -1002,11 +973,9 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
for (int b = 0; b < m_SkinnedMeshRenderer.m_Bones.Length; b++)
|
for (int b = 0; b < m_SkinnedMeshRenderer.m_Bones.Length; b++)
|
||||||
{
|
{
|
||||||
Transform m_Transform;
|
if (assetsfileList.TryGetTransform(m_SkinnedMeshRenderer.m_Bones[b], out var m_Transform))
|
||||||
if (assetsfileList.TryGetTransform(m_SkinnedMeshRenderer.m_Bones[b], out m_Transform))
|
|
||||||
{
|
{
|
||||||
GameObject m_Bone;
|
if (assetsfileList.TryGetGameObject(m_Transform.m_GameObject, out var m_Bone))
|
||||||
if (assetsfileList.TryGetGameObject(m_Transform.m_GameObject, out m_Bone))
|
|
||||||
{
|
{
|
||||||
int influences = 0, ibSplit = 0, wbSplit = 0;
|
int influences = 0, ibSplit = 0, wbSplit = 0;
|
||||||
StringBuilder ib = new StringBuilder();//indices (vertex)
|
StringBuilder ib = new StringBuilder();//indices (vertex)
|
||||||
@@ -1123,7 +1092,7 @@ namespace Unity_Studio
|
|||||||
{
|
{
|
||||||
//TODO check texture type and set path accordingly; eg. CubeMap, Texture3D
|
//TODO check texture type and set path accordingly; eg. CubeMap, Texture3D
|
||||||
string texPathName = Path.GetDirectoryName(FBXfile) + "\\Texture2D\\";
|
string texPathName = Path.GetDirectoryName(FBXfile) + "\\Texture2D\\";
|
||||||
ExportTexture(TexturePD, texPathName, false);
|
ExportTexture2D(TexturePD, texPathName, false);
|
||||||
texPathName = Path.GetFullPath(Path.Combine(texPathName, $"{TexturePD.Text}.png"));//必须是png文件
|
texPathName = Path.GetFullPath(Path.Combine(texPathName, $"{TexturePD.Text}.png"));//必须是png文件
|
||||||
ob.AppendFormat("\n\tTexture: 7{0}, \"Texture::{1}\", \"\" {{", TexturePD.uniqueID, TexturePD.Text);
|
ob.AppendFormat("\n\tTexture: 7{0}, \"Texture::{1}\", \"\" {{", TexturePD.uniqueID, TexturePD.Text);
|
||||||
ob.Append("\n\t\tType: \"TextureVideoClip\"");
|
ob.Append("\n\t\tType: \"TextureVideoClip\"");
|
||||||
@@ -1444,12 +1413,11 @@ namespace Unity_Studio
|
|||||||
ob.Append("\n\t\t\tVersion: 101");
|
ob.Append("\n\t\t\tVersion: 101");
|
||||||
ob.Append("\n\t\t\tName: \"\"");
|
ob.Append("\n\t\t\tName: \"\"");
|
||||||
ob.Append("\n\t\t\tMappingInformationType: \"");
|
ob.Append("\n\t\t\tMappingInformationType: \"");
|
||||||
if (m_Mesh.m_SubMeshes.Count == 1) { ob.Append("AllSame\""); }
|
ob.Append(m_Mesh.m_SubMeshes.Count == 1 ? "AllSame\"" : "ByPolygon\"");
|
||||||
else { ob.Append("ByPolygon\""); }
|
|
||||||
ob.Append("\n\t\t\tReferenceInformationType: \"IndexToDirect\"");
|
ob.Append("\n\t\t\tReferenceInformationType: \"IndexToDirect\"");
|
||||||
ob.AppendFormat("\n\t\t\tMaterials: *{0} {{", m_Mesh.m_materialIDs.Count);
|
ob.AppendFormat("\n\t\t\tMaterials: *{0} {{", m_Mesh.m_materialIDs.Count);
|
||||||
ob.Append("\n\t\t\t\t");
|
ob.Append("\n\t\t\t\ta: ");
|
||||||
if (m_Mesh.m_SubMeshes.Count == 1) { ob.Append("0"); }
|
if (m_Mesh.m_materialIDs.Count == 1) { ob.Append("0"); }
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
lineSplit = ob.Length;
|
lineSplit = ob.Length;
|
||||||
@@ -1591,7 +1559,7 @@ namespace Unity_Studio
|
|||||||
eaz = 0;
|
eaz = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new float[3] { (float)(eax * 180 / Math.PI), (float)(eay * 180 / Math.PI), (float)(eaz * 180 / Math.PI) };
|
return new[] { (float)(eax * 180 / Math.PI), (float)(eay * 180 / Math.PI), (float)(eaz * 180 / Math.PI) };
|
||||||
}
|
}
|
||||||
|
|
||||||
private static byte[] RandomColorGenerator(string name)
|
private static byte[] RandomColorGenerator(string name)
|
||||||
@@ -1604,100 +1572,89 @@ namespace Unity_Studio
|
|||||||
byte green = (byte)r.Next(0, 255);
|
byte green = (byte)r.Next(0, 255);
|
||||||
byte blue = (byte)r.Next(0, 255);
|
byte blue = (byte)r.Next(0, 255);
|
||||||
|
|
||||||
return new byte[3] { red, green, blue };
|
return new[] { red, green, blue };
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ExportRawFile(AssetPreloadData asset, string exportFilepath)
|
public static bool ExportTexture2D(AssetPreloadData asset, string exportPathName, bool flip)
|
||||||
{
|
|
||||||
asset.sourceFile.a_Stream.Position = asset.Offset;
|
|
||||||
var bytes = asset.sourceFile.a_Stream.ReadBytes(asset.Size);
|
|
||||||
File.WriteAllBytes(exportFilepath, bytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool ExportTexture(AssetPreloadData asset, string exportPathName, bool flip)
|
|
||||||
{
|
{
|
||||||
var m_Texture2D = new Texture2D(asset, true);
|
var m_Texture2D = new Texture2D(asset, true);
|
||||||
|
if (m_Texture2D.image_data == null)
|
||||||
|
return false;
|
||||||
var convert = (bool)Properties.Settings.Default["convertTexture"];
|
var convert = (bool)Properties.Settings.Default["convertTexture"];
|
||||||
if (convert)
|
var bitmap = m_Texture2D.ConvertToBitmap(flip);
|
||||||
|
if (convert && bitmap != null)
|
||||||
{
|
{
|
||||||
ImageFormat format = null;
|
ImageFormat format = null;
|
||||||
var ext = (string)Properties.Settings.Default["convertType"];
|
var ext = (string)Properties.Settings.Default["convertType"];
|
||||||
if (ext == "BMP")
|
switch (ext)
|
||||||
format = ImageFormat.Bmp;
|
{
|
||||||
else if (ext == "PNG")
|
case "BMP":
|
||||||
format = ImageFormat.Png;
|
format = ImageFormat.Bmp;
|
||||||
else if (ext == "JPEG")
|
break;
|
||||||
format = ImageFormat.Jpeg;
|
case "PNG":
|
||||||
|
format = ImageFormat.Png;
|
||||||
|
break;
|
||||||
|
case "JPEG":
|
||||||
|
format = ImageFormat.Jpeg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
var exportFullName = exportPathName + asset.Text + "." + ext.ToLower();
|
var exportFullName = exportPathName + asset.Text + "." + ext.ToLower();
|
||||||
if (ExportFileExists(exportFullName))
|
if (ExportFileExists(exportFullName))
|
||||||
return false;
|
return false;
|
||||||
var bitmap = m_Texture2D.ConvertToBitmap(flip);
|
bitmap.Save(exportFullName, format);
|
||||||
if (bitmap != null)
|
bitmap.Dispose();
|
||||||
{
|
return true;
|
||||||
bitmap.Save(exportFullName, format);
|
|
||||||
bitmap.Dispose();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
var exportFullName2 = exportPathName + asset.Text + asset.extension;
|
if (!convert)
|
||||||
if (ExportFileExists(exportFullName2))
|
{
|
||||||
return false;
|
var exportFullName = exportPathName + asset.Text + asset.extension;
|
||||||
File.WriteAllBytes(exportFullName2, m_Texture2D.ConvertToContainer());
|
if (ExportFileExists(exportFullName))
|
||||||
return true;
|
return false;
|
||||||
|
File.WriteAllBytes(exportFullName, m_Texture2D.ConvertToContainer());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool ExportAudioClip(AssetPreloadData asset, string exportFilename, string exportFileextension)
|
public static bool ExportAudioClip(AssetPreloadData asset, string exportPath)
|
||||||
{
|
{
|
||||||
var oldextension = exportFileextension;
|
|
||||||
var convertfsb = (bool)Properties.Settings.Default["convertfsb"];
|
|
||||||
if (convertfsb && exportFileextension == ".fsb")
|
|
||||||
{
|
|
||||||
exportFileextension = ".wav";
|
|
||||||
}
|
|
||||||
var exportFullname = exportFilename + exportFileextension;
|
|
||||||
if (ExportFileExists(exportFullname))
|
|
||||||
return false;
|
|
||||||
var m_AudioClip = new AudioClip(asset, true);
|
var m_AudioClip = new AudioClip(asset, true);
|
||||||
if (convertfsb && oldextension == ".fsb")
|
if (m_AudioClip.m_AudioData == null)
|
||||||
|
return false;
|
||||||
|
var convertAudio = (bool)Properties.Settings.Default["convertAudio"];
|
||||||
|
if (convertAudio && m_AudioClip.IsFMODSupport)
|
||||||
{
|
{
|
||||||
FMOD.System system;
|
var exportFullName = exportPath + asset.Text + ".wav";
|
||||||
FMOD.Sound sound;
|
if (ExportFileExists(exportFullName))
|
||||||
FMOD.RESULT result;
|
return false;
|
||||||
FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();
|
FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();
|
||||||
|
var result = FMOD.Factory.System_Create(out var system);
|
||||||
result = FMOD.Factory.System_Create(out system);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
result = system.init(1, FMOD.INITFLAGS.NORMAL, IntPtr.Zero);
|
||||||
result = system.setOutput(FMOD.OUTPUTTYPE.NOSOUND_NRT);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
|
||||||
result = system.init(1, FMOD.INITFLAGS.NORMAL, (IntPtr)null);
|
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
|
||||||
|
|
||||||
exinfo.cbsize = Marshal.SizeOf(exinfo);
|
exinfo.cbsize = Marshal.SizeOf(exinfo);
|
||||||
exinfo.length = (uint)m_AudioClip.m_Size;
|
exinfo.length = (uint)m_AudioClip.m_Size;
|
||||||
|
result = system.createSound(m_AudioClip.m_AudioData, FMOD.MODE.OPENMEMORY, ref exinfo, out var sound);
|
||||||
result = system.createSound(m_AudioClip.m_AudioData, FMOD.MODE.OPENMEMORY, ref exinfo, out sound);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
result = sound.getSubSound(0, out var subsound);
|
||||||
result = sound.getSubSound(0, out sound);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
result = subsound.getFormat(out var type, out var format, out int NumChannels, out int BitsPerSample);
|
||||||
result = sound.setMode(FMOD.MODE.LOOP_OFF);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
result = subsound.getDefaults(out var frequency, out int priority);
|
||||||
result = sound.setLoopCount(-1);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
var SampleRate = (int)frequency;
|
||||||
uint length;
|
result = subsound.getLength(out var length, FMOD.TIMEUNIT.PCMBYTES);
|
||||||
result = sound.getLength(out length, FMOD.TIMEUNIT.PCMBYTES);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
result = subsound.@lock(0, length, out var ptr1, out var ptr2, out var len1, out var len2);
|
||||||
IntPtr ptr1, ptr2;
|
if (result != FMOD.RESULT.OK)
|
||||||
uint len1, len2;
|
return false;
|
||||||
result = sound.@lock(0, length, out ptr1, out ptr2, out len1, out len2);
|
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
|
||||||
|
|
||||||
byte[] buffer = new byte[len1 + 44];
|
byte[] buffer = new byte[len1 + 44];
|
||||||
//添加wav头
|
//添加wav头
|
||||||
Encoding.UTF8.GetBytes("RIFF").CopyTo(buffer, 0);
|
Encoding.UTF8.GetBytes("RIFF").CopyTo(buffer, 0);
|
||||||
@@ -1705,54 +1662,84 @@ namespace Unity_Studio
|
|||||||
Encoding.UTF8.GetBytes("WAVEfmt ").CopyTo(buffer, 8);
|
Encoding.UTF8.GetBytes("WAVEfmt ").CopyTo(buffer, 8);
|
||||||
BitConverter.GetBytes(16).CopyTo(buffer, 16);
|
BitConverter.GetBytes(16).CopyTo(buffer, 16);
|
||||||
BitConverter.GetBytes((short)1).CopyTo(buffer, 20);
|
BitConverter.GetBytes((short)1).CopyTo(buffer, 20);
|
||||||
BitConverter.GetBytes((short)m_AudioClip.m_Channels).CopyTo(buffer, 22);
|
BitConverter.GetBytes((short)NumChannels).CopyTo(buffer, 22);
|
||||||
BitConverter.GetBytes(m_AudioClip.m_Frequency).CopyTo(buffer, 24);
|
BitConverter.GetBytes(SampleRate).CopyTo(buffer, 24);
|
||||||
BitConverter.GetBytes(m_AudioClip.m_Frequency * m_AudioClip.m_Channels * m_AudioClip.m_BitsPerSample / 8).CopyTo(buffer, 28);
|
BitConverter.GetBytes(SampleRate * NumChannels * BitsPerSample / 8).CopyTo(buffer, 28);
|
||||||
BitConverter.GetBytes((short)(m_AudioClip.m_Channels * m_AudioClip.m_BitsPerSample / 8)).CopyTo(buffer, 32);
|
BitConverter.GetBytes((short)(NumChannels * BitsPerSample / 8)).CopyTo(buffer, 32);
|
||||||
BitConverter.GetBytes((short)m_AudioClip.m_BitsPerSample).CopyTo(buffer, 34);
|
BitConverter.GetBytes((short)BitsPerSample).CopyTo(buffer, 34);
|
||||||
Encoding.UTF8.GetBytes("data").CopyTo(buffer, 36);
|
Encoding.UTF8.GetBytes("data").CopyTo(buffer, 36);
|
||||||
BitConverter.GetBytes(len1).CopyTo(buffer, 40);
|
BitConverter.GetBytes(len1).CopyTo(buffer, 40);
|
||||||
Marshal.Copy(ptr1, buffer, 44, (int)len1);
|
Marshal.Copy(ptr1, buffer, 44, (int)len1);
|
||||||
File.WriteAllBytes(exportFullname, buffer);
|
File.WriteAllBytes(exportFullName, buffer);
|
||||||
|
result = subsound.unlock(ptr1, ptr2, len1, len2);
|
||||||
result = sound.unlock(ptr1, ptr2, len1, len2);
|
if (result != FMOD.RESULT.OK)
|
||||||
if (result != FMOD.RESULT.OK) { return false; }
|
return false;
|
||||||
|
subsound.release();
|
||||||
sound.release();
|
sound.release();
|
||||||
system.release();
|
system.release();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(exportFullname, m_AudioClip.m_AudioData);
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
File.WriteAllBytes(exportFullName, m_AudioClip.m_AudioData);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ExportMonoBehaviour(MonoBehaviour m_MonoBehaviour, string exportFilename)
|
public static bool ExportShader(AssetPreloadData asset, string exportPath)
|
||||||
{
|
{
|
||||||
File.WriteAllText(exportFilename, m_MonoBehaviour.serializedText);
|
var m_Shader = new Shader(asset, true);
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
File.WriteAllBytes(exportFullName, m_Shader.m_Script);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ExportShader(Shader m_Shader, string exportFilename)
|
public static bool ExportTextAsset(AssetPreloadData asset, string exportPath)
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(exportFilename, m_Shader.m_Script);
|
var m_TextAsset = new TextAsset(asset, true);
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
File.WriteAllBytes(exportFullName, m_TextAsset.m_Script);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ExportText(TextAsset m_TextAsset, string exportFilename)
|
public static bool ExportMonoBehaviour(AssetPreloadData asset, string exportPath)
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(exportFilename, m_TextAsset.m_Script);
|
var m_MonoBehaviour = new MonoBehaviour(asset, true);
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
File.WriteAllText(exportFullName, m_MonoBehaviour.serializedText);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ExportFont(unityFont m_Font, string exportFilename)
|
public static bool ExportFont(AssetPreloadData asset, string exportPath)
|
||||||
{
|
{
|
||||||
|
var m_Font = new unityFont(asset, true);
|
||||||
if (m_Font.m_FontData != null)
|
if (m_Font.m_FontData != null)
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(exportFilename, m_Font.m_FontData);
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
File.WriteAllBytes(exportFullName, m_Font.m_FontData);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ExportMesh(Mesh m_Mesh, string exportPath)
|
public static bool ExportMesh(AssetPreloadData asset, string exportPath)
|
||||||
{
|
{
|
||||||
|
var m_Mesh = new Mesh(asset, true);
|
||||||
|
if (m_Mesh.m_VertexCount <= 0)
|
||||||
|
return false;
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.AppendLine("g " + m_Mesh.m_Name);
|
sb.AppendLine("g " + m_Mesh.m_Name);
|
||||||
#region Vertices
|
#region Vertices
|
||||||
@@ -1803,13 +1790,72 @@ namespace Unity_Studio
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Face
|
#region Face
|
||||||
for (int f = 0; f < m_Mesh.m_Indices.Count / 3; f++)
|
int sum = 0;
|
||||||
|
for (var i = 0; i < m_Mesh.m_SubMeshes.Count; i++)
|
||||||
{
|
{
|
||||||
sb.AppendFormat("f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}\r\n", m_Mesh.m_Indices[f * 3 + 2] + 1, m_Mesh.m_Indices[f * 3 + 1] + 1, m_Mesh.m_Indices[f * 3] + 1);
|
sb.AppendLine($"g {m_Mesh.m_Name}_{i}");
|
||||||
|
int indexCount = (int)m_Mesh.m_SubMeshes[i].indexCount;
|
||||||
|
var end = sum + indexCount / 3;
|
||||||
|
for (int f = sum; f < end; f++)
|
||||||
|
{
|
||||||
|
sb.AppendFormat("f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}\r\n", m_Mesh.m_Indices[f * 3 + 2] + 1, m_Mesh.m_Indices[f * 3 + 1] + 1, m_Mesh.m_Indices[f * 3] + 1);
|
||||||
|
}
|
||||||
|
sum = end;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
File.WriteAllText(exportPath, sb.ToString());
|
sb.Replace("NaN", "0");
|
||||||
|
File.WriteAllText(exportFullName, sb.ToString());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ExportVideoClip(AssetPreloadData asset, string exportPath)
|
||||||
|
{
|
||||||
|
var m_VideoClip = new VideoClip(asset, true);
|
||||||
|
if (m_VideoClip.m_VideoData != null)
|
||||||
|
{
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
File.WriteAllBytes(exportFullName, m_VideoClip.m_VideoData);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ExportMovieTexture(AssetPreloadData asset, string exportPath)
|
||||||
|
{
|
||||||
|
var m_MovieTexture = new MovieTexture(asset, true);
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
File.WriteAllBytes(exportFullName, m_MovieTexture.m_MovieData);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ExportSprite(AssetPreloadData asset, string exportPath)
|
||||||
|
{
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
var bitmap = GetImageFromSprite(asset);
|
||||||
|
if (bitmap != null)
|
||||||
|
{
|
||||||
|
bitmap.Save(exportFullName, ImageFormat.Png);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ExportRawFile(AssetPreloadData asset, string exportPath)
|
||||||
|
{
|
||||||
|
var exportFullName = exportPath + asset.Text + asset.extension;
|
||||||
|
if (ExportFileExists(exportFullName))
|
||||||
|
return false;
|
||||||
|
asset.sourceFile.a_Stream.Position = asset.Offset;
|
||||||
|
var bytes = asset.sourceFile.a_Stream.ReadBytes(asset.Size);
|
||||||
|
File.WriteAllBytes(exportFullName, bytes);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool ExportFileExists(string filename)
|
public static bool ExportFileExists(string filename)
|
||||||
@@ -1822,10 +1868,101 @@ namespace Unity_Studio
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string FixFileName(string str)
|
public static string FixFileName(string str)
|
||||||
{
|
{
|
||||||
if (str.Length >= 260) return Path.GetRandomFileName();
|
if (str.Length >= 260) return Path.GetRandomFileName();
|
||||||
return Path.GetInvalidFileNameChars().Aggregate(str, (current, c) => current.Replace(c, '_'));
|
return Path.GetInvalidFileNameChars().Aggregate(str, (current, c) => current.Replace(c, '_'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool CheckBundleFile(string fileName)
|
||||||
|
{
|
||||||
|
using (var stream = new EndianBinaryReader(File.OpenRead(fileName)))
|
||||||
|
{
|
||||||
|
var signature = stream.ReadStringToNull();
|
||||||
|
switch (signature)
|
||||||
|
{
|
||||||
|
case "UnityWeb":
|
||||||
|
case "UnityRaw":
|
||||||
|
case "\xFA\xFA\xFA\xFA\xFA\xFA\xFA\xFA":
|
||||||
|
case "UnityFS":
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string[] ProcessingSplitFiles(List<string> selectFile)
|
||||||
|
{
|
||||||
|
var splitFiles = selectFile.Where(x => x.Contains(".split"))
|
||||||
|
.Select(x => Path.GetDirectoryName(x) + "\\" + Path.GetFileNameWithoutExtension(x))
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
selectFile.RemoveAll(x => x.Contains(".split"));
|
||||||
|
foreach (var file in splitFiles)
|
||||||
|
{
|
||||||
|
if (File.Exists(file))
|
||||||
|
{
|
||||||
|
selectFile.Add(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectFile.Distinct().ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO Tight方式的Sprite需要读取多边形信息进行绘图
|
||||||
|
public static Bitmap GetImageFromSprite(AssetPreloadData asset)
|
||||||
|
{
|
||||||
|
if (spriteCache.TryGetValue(asset, out var bitmap))
|
||||||
|
return (Bitmap)bitmap.Clone();
|
||||||
|
var m_Sprite = new Sprite(asset, true);
|
||||||
|
if (m_Sprite.m_SpriteAtlas != null && assetsfileList.TryGetPD(m_Sprite.m_SpriteAtlas, out var assetPreloadData))
|
||||||
|
{
|
||||||
|
var m_SpriteAtlas = new SpriteAtlas(assetPreloadData);
|
||||||
|
bool find = false;
|
||||||
|
int index = 0;
|
||||||
|
for (; index < m_SpriteAtlas.m_PackedSprites.Count; index++)
|
||||||
|
{
|
||||||
|
if (assetsfileList.TryGetPD(m_SpriteAtlas.m_PackedSprites[index], out assetPreloadData) && assetPreloadData == asset)
|
||||||
|
{
|
||||||
|
find = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (find && assetsfileList.TryGetPD(m_SpriteAtlas.textures[index], out assetPreloadData))
|
||||||
|
{
|
||||||
|
return CutImage(asset, assetPreloadData, m_SpriteAtlas.textureRects[index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (assetsfileList.TryGetPD(m_Sprite.texture, out assetPreloadData))
|
||||||
|
{
|
||||||
|
return CutImage(asset, assetPreloadData, m_Sprite.textureRect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Bitmap CutImage(AssetPreloadData asset, AssetPreloadData texture2DAsset, RectangleF textureRect)
|
||||||
|
{
|
||||||
|
var texture2D = new Texture2D(texture2DAsset, true);
|
||||||
|
using (var originalImage = texture2D.ConvertToBitmap(false))
|
||||||
|
{
|
||||||
|
if (originalImage != null)
|
||||||
|
{
|
||||||
|
var info = texture2DAsset.InfoText;
|
||||||
|
var start = info.IndexOf("Format");
|
||||||
|
info = info.Substring(start, info.Length - start);
|
||||||
|
asset.InfoText = $"Width: {textureRect.Width}\nHeight: {textureRect.Height}\n" + info;
|
||||||
|
var spriteImage = originalImage.Clone(textureRect, PixelFormat.Format32bppArgb);
|
||||||
|
spriteImage.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
||||||
|
spriteCache.Add(asset, spriteImage);
|
||||||
|
return (Bitmap)spriteImage.Clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,30 +130,26 @@
|
|||||||
<Compile Include="7zip\SevenZipHelper.cs">
|
<Compile Include="7zip\SevenZipHelper.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="AboutBox.cs">
|
<Compile Include="OpenFolderDialog.cs" />
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="AboutBox.Designer.cs">
|
|
||||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Resource1.Designer.cs">
|
|
||||||
<DependentUpon>Resource1.resx</DependentUpon>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="ShaderResource.Designer.cs">
|
<Compile Include="ShaderResource.Designer.cs">
|
||||||
<DependentUpon>ShaderResource.resx</DependentUpon>
|
<DependentUpon>ShaderResource.resx</DependentUpon>
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Unity Classes\AssetBundle.cs" />
|
<Compile Include="Unity Classes\AssetBundle.cs" />
|
||||||
|
<Compile Include="Unity Classes\MovieTexture.cs" />
|
||||||
|
<Compile Include="Unity Classes\Sprite.cs" />
|
||||||
|
<Compile Include="Unity Classes\SpriteAtlas.cs" />
|
||||||
|
<Compile Include="Unity Classes\VideoClip.cs" />
|
||||||
<Compile Include="Unity Studio Classes\AssetPreloadData.cs" />
|
<Compile Include="Unity Studio Classes\AssetPreloadData.cs" />
|
||||||
<Compile Include="Unity Classes\AudioClip.cs" />
|
<Compile Include="Unity Classes\AudioClip.cs" />
|
||||||
<Compile Include="Unity Classes\BuildSettings.cs" />
|
<Compile Include="Unity Classes\BuildSettings.cs" />
|
||||||
<Compile Include="Unity Studio Classes\BundleFile.cs" />
|
<Compile Include="Unity Studio Classes\BundleFile.cs" />
|
||||||
|
<Compile Include="Unity Studio Classes\ClassStruct.cs" />
|
||||||
|
<Compile Include="Unity Studio Classes\EndianBinaryReader.cs" />
|
||||||
|
<Compile Include="Unity Studio Classes\UnityEnum.cs" />
|
||||||
<Compile Include="Unity Studio Classes\UnityStudio.cs" />
|
<Compile Include="Unity Studio Classes\UnityStudio.cs" />
|
||||||
<Compile Include="Unity Studio Classes\ClassIDReference.cs" />
|
<Compile Include="Unity Studio Classes\ClassIDReference.cs" />
|
||||||
<Compile Include="Unity Studio Classes\EndianStream.cs" />
|
|
||||||
<Compile Include="ExportOptions.cs">
|
<Compile Include="ExportOptions.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -171,7 +167,7 @@
|
|||||||
<Compile Include="Unity Classes\Material.cs" />
|
<Compile Include="Unity Classes\Material.cs" />
|
||||||
<Compile Include="Unity Classes\Mesh.cs" />
|
<Compile Include="Unity Classes\Mesh.cs" />
|
||||||
<Compile Include="Unity Classes\GameObject.cs" />
|
<Compile Include="Unity Classes\GameObject.cs" />
|
||||||
<Compile Include="Unity Studio Classes\helpers.cs" />
|
<Compile Include="Unity Studio Classes\Helpers.cs" />
|
||||||
<Compile Include="Unity Classes\MonoBehaviour.cs" />
|
<Compile Include="Unity Classes\MonoBehaviour.cs" />
|
||||||
<Compile Include="Unity Classes\PlayerSettings.cs" />
|
<Compile Include="Unity Classes\PlayerSettings.cs" />
|
||||||
<Compile Include="Unity Classes\RectTransform.cs" />
|
<Compile Include="Unity Classes\RectTransform.cs" />
|
||||||
@@ -191,10 +187,6 @@
|
|||||||
<Compile Include="UnityStudioForm.Designer.cs">
|
<Compile Include="UnityStudioForm.Designer.cs">
|
||||||
<DependentUpon>UnityStudioForm.cs</DependentUpon>
|
<DependentUpon>UnityStudioForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<EmbeddedResource Include="AboutBox.resx">
|
|
||||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="ExportOptions.resx">
|
<EmbeddedResource Include="ExportOptions.resx">
|
||||||
<DependentUpon>ExportOptions.cs</DependentUpon>
|
<DependentUpon>ExportOptions.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
@@ -208,10 +200,6 @@
|
|||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
</Compile>
|
</Compile>
|
||||||
<EmbeddedResource Include="Resource1.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resource1.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="ShaderResource.resx">
|
<EmbeddedResource Include="ShaderResource.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>ShaderResource.Designer.cs</LastGenOutput>
|
<LastGenOutput>ShaderResource.Designer.cs</LastGenOutput>
|
||||||
|
|||||||
@@ -130,30 +130,26 @@
|
|||||||
<Compile Include="7zip\SevenZipHelper.cs">
|
<Compile Include="7zip\SevenZipHelper.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="AboutBox.cs">
|
<Compile Include="OpenFolderDialog.cs" />
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="AboutBox.Designer.cs">
|
|
||||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Resource1.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>Resource1.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="ShaderResource.Designer.cs">
|
<Compile Include="ShaderResource.Designer.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<DependentUpon>ShaderResource.resx</DependentUpon>
|
<DependentUpon>ShaderResource.resx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Unity Classes\AssetBundle.cs" />
|
<Compile Include="Unity Classes\AssetBundle.cs" />
|
||||||
|
<Compile Include="Unity Classes\MovieTexture.cs" />
|
||||||
|
<Compile Include="Unity Classes\Sprite.cs" />
|
||||||
|
<Compile Include="Unity Classes\SpriteAtlas.cs" />
|
||||||
|
<Compile Include="Unity Classes\VideoClip.cs" />
|
||||||
<Compile Include="Unity Studio Classes\AssetPreloadData.cs" />
|
<Compile Include="Unity Studio Classes\AssetPreloadData.cs" />
|
||||||
<Compile Include="Unity Classes\AudioClip.cs" />
|
<Compile Include="Unity Classes\AudioClip.cs" />
|
||||||
<Compile Include="Unity Classes\BuildSettings.cs" />
|
<Compile Include="Unity Classes\BuildSettings.cs" />
|
||||||
<Compile Include="Unity Studio Classes\BundleFile.cs" />
|
<Compile Include="Unity Studio Classes\BundleFile.cs" />
|
||||||
|
<Compile Include="Unity Studio Classes\ClassStruct.cs" />
|
||||||
|
<Compile Include="Unity Studio Classes\UnityEnum.cs" />
|
||||||
<Compile Include="Unity Studio Classes\UnityStudio.cs" />
|
<Compile Include="Unity Studio Classes\UnityStudio.cs" />
|
||||||
<Compile Include="Unity Studio Classes\ClassIDReference.cs" />
|
<Compile Include="Unity Studio Classes\ClassIDReference.cs" />
|
||||||
<Compile Include="Unity Studio Classes\EndianStream.cs" />
|
<Compile Include="Unity Studio Classes\EndianBinaryReader.cs" />
|
||||||
<Compile Include="ExportOptions.cs">
|
<Compile Include="ExportOptions.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -171,7 +167,7 @@
|
|||||||
<Compile Include="Unity Classes\Material.cs" />
|
<Compile Include="Unity Classes\Material.cs" />
|
||||||
<Compile Include="Unity Classes\Mesh.cs" />
|
<Compile Include="Unity Classes\Mesh.cs" />
|
||||||
<Compile Include="Unity Classes\GameObject.cs" />
|
<Compile Include="Unity Classes\GameObject.cs" />
|
||||||
<Compile Include="Unity Studio Classes\helpers.cs" />
|
<Compile Include="Unity Studio Classes\Helpers.cs" />
|
||||||
<Compile Include="Unity Classes\MonoBehaviour.cs" />
|
<Compile Include="Unity Classes\MonoBehaviour.cs" />
|
||||||
<Compile Include="Unity Classes\PlayerSettings.cs" />
|
<Compile Include="Unity Classes\PlayerSettings.cs" />
|
||||||
<Compile Include="Unity Classes\RectTransform.cs" />
|
<Compile Include="Unity Classes\RectTransform.cs" />
|
||||||
@@ -191,10 +187,6 @@
|
|||||||
<Compile Include="UnityStudioForm.Designer.cs">
|
<Compile Include="UnityStudioForm.Designer.cs">
|
||||||
<DependentUpon>UnityStudioForm.cs</DependentUpon>
|
<DependentUpon>UnityStudioForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<EmbeddedResource Include="AboutBox.resx">
|
|
||||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="ExportOptions.resx">
|
<EmbeddedResource Include="ExportOptions.resx">
|
||||||
<DependentUpon>ExportOptions.cs</DependentUpon>
|
<DependentUpon>ExportOptions.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
@@ -208,10 +200,6 @@
|
|||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
</Compile>
|
</Compile>
|
||||||
<EmbeddedResource Include="Resource1.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resource1.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="ShaderResource.resx">
|
<EmbeddedResource Include="ShaderResource.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>ShaderResource.Designer.cs</LastGenOutput>
|
<LastGenOutput>ShaderResource.Designer.cs</LastGenOutput>
|
||||||
@@ -220,7 +208,9 @@
|
|||||||
<DependentUpon>UnityStudioForm.cs</DependentUpon>
|
<DependentUpon>UnityStudioForm.cs</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<None Include="app.config" />
|
<None Include="app.config">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
@@ -249,10 +239,10 @@
|
|||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Resources\unity.ico" />
|
<None Include="Resources\preview.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Resources\preview.png" />
|
<None Include="Resources\unity.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
284
Unity Studio/UnityStudioForm.Designer.cs
generated
284
Unity Studio/UnityStudioForm.Designer.cs
generated
@@ -52,19 +52,17 @@
|
|||||||
this.assetGroupOptions = new System.Windows.Forms.ToolStripComboBox();
|
this.assetGroupOptions = new System.Windows.Forms.ToolStripComboBox();
|
||||||
this.showExpOpt = new System.Windows.Forms.ToolStripMenuItem();
|
this.showExpOpt = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.exportAll3DMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.all3DObjectssplitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.exportSelected3DMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.exportAllAssetsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.exportAllAssetsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.exportSelectedAssetsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.exportSelectedAssetsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.exportFilteredAssetsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.exportFilteredAssetsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this._3DToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.exportAll3DMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.all3DObjectssplitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.exportSelected3DMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||||
this.sceneTreeView = new GOHierarchy();
|
this.sceneTreeView = new Unity_Studio.GOHierarchy();
|
||||||
this.treeSearch = new System.Windows.Forms.TextBox();
|
this.treeSearch = new System.Windows.Forms.TextBox();
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||||
this.assetListView = new System.Windows.Forms.ListView();
|
this.assetListView = new System.Windows.Forms.ListView();
|
||||||
@@ -101,9 +99,7 @@
|
|||||||
this.timer = new System.Windows.Forms.Timer(this.components);
|
this.timer = new System.Windows.Forms.Timer(this.components);
|
||||||
this.timerOpenTK = new System.Windows.Forms.Timer(this.components);
|
this.timerOpenTK = new System.Windows.Forms.Timer(this.components);
|
||||||
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
|
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
|
||||||
this.openFolderDialog1 = new System.Windows.Forms.OpenFileDialog();
|
|
||||||
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
|
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
|
||||||
this.saveFolderDialog1 = new System.Windows.Forms.SaveFileDialog();
|
|
||||||
this.treeTip = new System.Windows.Forms.ToolTip(this.components);
|
this.treeTip = new System.Windows.Forms.ToolTip(this.components);
|
||||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -116,7 +112,6 @@
|
|||||||
this.tabPage1.SuspendLayout();
|
this.tabPage1.SuspendLayout();
|
||||||
this.tabPage2.SuspendLayout();
|
this.tabPage2.SuspendLayout();
|
||||||
this.progressbarPanel.SuspendLayout();
|
this.progressbarPanel.SuspendLayout();
|
||||||
this.glControl1.SuspendLayout();
|
|
||||||
this.previewPanel.SuspendLayout();
|
this.previewPanel.SuspendLayout();
|
||||||
this.FMODpanel.SuspendLayout();
|
this.FMODpanel.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.FMODprogressBar)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.FMODprogressBar)).BeginInit();
|
||||||
@@ -134,10 +129,10 @@
|
|||||||
this.debugMenuItem,
|
this.debugMenuItem,
|
||||||
this.optionsToolStripMenuItem,
|
this.optionsToolStripMenuItem,
|
||||||
this.exportToolStripMenuItem,
|
this.exportToolStripMenuItem,
|
||||||
this.helpToolStripMenuItem});
|
this._3DToolStripMenuItem});
|
||||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.menuStrip1.Name = "menuStrip1";
|
this.menuStrip1.Name = "menuStrip1";
|
||||||
this.menuStrip1.Size = new System.Drawing.Size(1264, 24);
|
this.menuStrip1.Size = new System.Drawing.Size(1264, 25);
|
||||||
this.menuStrip1.TabIndex = 0;
|
this.menuStrip1.TabIndex = 0;
|
||||||
this.menuStrip1.Text = "menuStrip1";
|
this.menuStrip1.Text = "menuStrip1";
|
||||||
//
|
//
|
||||||
@@ -150,40 +145,40 @@
|
|||||||
this.extractBundleToolStripMenuItem,
|
this.extractBundleToolStripMenuItem,
|
||||||
this.extractFolderToolStripMenuItem});
|
this.extractFolderToolStripMenuItem});
|
||||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
this.fileToolStripMenuItem.Size = new System.Drawing.Size(39, 21);
|
||||||
this.fileToolStripMenuItem.Text = "File";
|
this.fileToolStripMenuItem.Text = "File";
|
||||||
//
|
//
|
||||||
// loadFileToolStripMenuItem
|
// loadFileToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.loadFileToolStripMenuItem.Name = "loadFileToolStripMenuItem";
|
this.loadFileToolStripMenuItem.Name = "loadFileToolStripMenuItem";
|
||||||
this.loadFileToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
|
this.loadFileToolStripMenuItem.Size = new System.Drawing.Size(159, 22);
|
||||||
this.loadFileToolStripMenuItem.Text = "Load file...";
|
this.loadFileToolStripMenuItem.Text = "Load file";
|
||||||
this.loadFileToolStripMenuItem.Click += new System.EventHandler(this.loadFile_Click);
|
this.loadFileToolStripMenuItem.Click += new System.EventHandler(this.loadFile_Click);
|
||||||
//
|
//
|
||||||
// loadFolderToolStripMenuItem
|
// loadFolderToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.loadFolderToolStripMenuItem.Name = "loadFolderToolStripMenuItem";
|
this.loadFolderToolStripMenuItem.Name = "loadFolderToolStripMenuItem";
|
||||||
this.loadFolderToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
|
this.loadFolderToolStripMenuItem.Size = new System.Drawing.Size(159, 22);
|
||||||
this.loadFolderToolStripMenuItem.Text = "Load folder...";
|
this.loadFolderToolStripMenuItem.Text = "Load folder";
|
||||||
this.loadFolderToolStripMenuItem.Click += new System.EventHandler(this.loadFolder_Click);
|
this.loadFolderToolStripMenuItem.Click += new System.EventHandler(this.loadFolder_Click);
|
||||||
//
|
//
|
||||||
// toolStripMenuItem1
|
// toolStripMenuItem1
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(155, 6);
|
this.toolStripMenuItem1.Size = new System.Drawing.Size(156, 6);
|
||||||
//
|
//
|
||||||
// extractBundleToolStripMenuItem
|
// extractBundleToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.extractBundleToolStripMenuItem.Name = "extractBundleToolStripMenuItem";
|
this.extractBundleToolStripMenuItem.Name = "extractBundleToolStripMenuItem";
|
||||||
this.extractBundleToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
|
this.extractBundleToolStripMenuItem.Size = new System.Drawing.Size(159, 22);
|
||||||
this.extractBundleToolStripMenuItem.Text = "Extract bundle...";
|
this.extractBundleToolStripMenuItem.Text = "Extract bundle";
|
||||||
this.extractBundleToolStripMenuItem.Click += new System.EventHandler(this.extractBundleToolStripMenuItem_Click);
|
this.extractBundleToolStripMenuItem.Click += new System.EventHandler(this.extractBundleToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// extractFolderToolStripMenuItem
|
// extractFolderToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.extractFolderToolStripMenuItem.Name = "extractFolderToolStripMenuItem";
|
this.extractFolderToolStripMenuItem.Name = "extractFolderToolStripMenuItem";
|
||||||
this.extractFolderToolStripMenuItem.Size = new System.Drawing.Size(158, 22);
|
this.extractFolderToolStripMenuItem.Size = new System.Drawing.Size(159, 22);
|
||||||
this.extractFolderToolStripMenuItem.Text = "Extract folder...";
|
this.extractFolderToolStripMenuItem.Text = "Extract folder";
|
||||||
this.extractFolderToolStripMenuItem.Click += new System.EventHandler(this.extractFolderToolStripMenuItem_Click);
|
this.extractFolderToolStripMenuItem.Click += new System.EventHandler(this.extractFolderToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// debugMenuItem
|
// debugMenuItem
|
||||||
@@ -195,7 +190,7 @@
|
|||||||
this.toolStripSeparator2,
|
this.toolStripSeparator2,
|
||||||
this.exportClassStructuresMenuItem});
|
this.exportClassStructuresMenuItem});
|
||||||
this.debugMenuItem.Name = "debugMenuItem";
|
this.debugMenuItem.Name = "debugMenuItem";
|
||||||
this.debugMenuItem.Size = new System.Drawing.Size(80, 20);
|
this.debugMenuItem.Size = new System.Drawing.Size(87, 21);
|
||||||
this.debugMenuItem.Text = "Diagnostics";
|
this.debugMenuItem.Text = "Diagnostics";
|
||||||
this.debugMenuItem.Visible = false;
|
this.debugMenuItem.Visible = false;
|
||||||
//
|
//
|
||||||
@@ -203,14 +198,14 @@
|
|||||||
//
|
//
|
||||||
this.buildClassStructuresMenuItem.CheckOnClick = true;
|
this.buildClassStructuresMenuItem.CheckOnClick = true;
|
||||||
this.buildClassStructuresMenuItem.Name = "buildClassStructuresMenuItem";
|
this.buildClassStructuresMenuItem.Name = "buildClassStructuresMenuItem";
|
||||||
this.buildClassStructuresMenuItem.Size = new System.Drawing.Size(208, 22);
|
this.buildClassStructuresMenuItem.Size = new System.Drawing.Size(224, 22);
|
||||||
this.buildClassStructuresMenuItem.Text = "Build class structures";
|
this.buildClassStructuresMenuItem.Text = "Build class structures";
|
||||||
//
|
//
|
||||||
// dontLoadAssetsMenuItem
|
// dontLoadAssetsMenuItem
|
||||||
//
|
//
|
||||||
this.dontLoadAssetsMenuItem.CheckOnClick = true;
|
this.dontLoadAssetsMenuItem.CheckOnClick = true;
|
||||||
this.dontLoadAssetsMenuItem.Name = "dontLoadAssetsMenuItem";
|
this.dontLoadAssetsMenuItem.Name = "dontLoadAssetsMenuItem";
|
||||||
this.dontLoadAssetsMenuItem.Size = new System.Drawing.Size(208, 22);
|
this.dontLoadAssetsMenuItem.Size = new System.Drawing.Size(224, 22);
|
||||||
this.dontLoadAssetsMenuItem.Text = "Don\'t load assets";
|
this.dontLoadAssetsMenuItem.Text = "Don\'t load assets";
|
||||||
this.dontLoadAssetsMenuItem.CheckedChanged += new System.EventHandler(this.dontLoadAssetsMenuItem_CheckedChanged);
|
this.dontLoadAssetsMenuItem.CheckedChanged += new System.EventHandler(this.dontLoadAssetsMenuItem_CheckedChanged);
|
||||||
//
|
//
|
||||||
@@ -218,18 +213,18 @@
|
|||||||
//
|
//
|
||||||
this.dontBuildHierarchyMenuItem.CheckOnClick = true;
|
this.dontBuildHierarchyMenuItem.CheckOnClick = true;
|
||||||
this.dontBuildHierarchyMenuItem.Name = "dontBuildHierarchyMenuItem";
|
this.dontBuildHierarchyMenuItem.Name = "dontBuildHierarchyMenuItem";
|
||||||
this.dontBuildHierarchyMenuItem.Size = new System.Drawing.Size(208, 22);
|
this.dontBuildHierarchyMenuItem.Size = new System.Drawing.Size(224, 22);
|
||||||
this.dontBuildHierarchyMenuItem.Text = "Don\'t build hierarchy tree";
|
this.dontBuildHierarchyMenuItem.Text = "Don\'t build hierarchy tree";
|
||||||
//
|
//
|
||||||
// toolStripSeparator2
|
// toolStripSeparator2
|
||||||
//
|
//
|
||||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||||
this.toolStripSeparator2.Size = new System.Drawing.Size(205, 6);
|
this.toolStripSeparator2.Size = new System.Drawing.Size(221, 6);
|
||||||
//
|
//
|
||||||
// exportClassStructuresMenuItem
|
// exportClassStructuresMenuItem
|
||||||
//
|
//
|
||||||
this.exportClassStructuresMenuItem.Name = "exportClassStructuresMenuItem";
|
this.exportClassStructuresMenuItem.Name = "exportClassStructuresMenuItem";
|
||||||
this.exportClassStructuresMenuItem.Size = new System.Drawing.Size(208, 22);
|
this.exportClassStructuresMenuItem.Size = new System.Drawing.Size(224, 22);
|
||||||
this.exportClassStructuresMenuItem.Text = "Export class structures";
|
this.exportClassStructuresMenuItem.Text = "Export class structures";
|
||||||
this.exportClassStructuresMenuItem.Click += new System.EventHandler(this.exportClassStructuresMenuItem_Click);
|
this.exportClassStructuresMenuItem.Click += new System.EventHandler(this.exportClassStructuresMenuItem_Click);
|
||||||
//
|
//
|
||||||
@@ -244,18 +239,9 @@
|
|||||||
this.assetGroupOptions,
|
this.assetGroupOptions,
|
||||||
this.showExpOpt});
|
this.showExpOpt});
|
||||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||||
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
|
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(66, 21);
|
||||||
this.optionsToolStripMenuItem.Text = "Options";
|
this.optionsToolStripMenuItem.Text = "Options";
|
||||||
//
|
//
|
||||||
// displayOriginalName
|
|
||||||
//
|
|
||||||
this.displayOriginalName.CheckOnClick = true;
|
|
||||||
this.displayOriginalName.Name = "displayOriginalName";
|
|
||||||
this.displayOriginalName.Size = new System.Drawing.Size(252, 22);
|
|
||||||
this.displayOriginalName.Text = "Display asset original name";
|
|
||||||
this.displayOriginalName.ToolTipText = "Check this option will use asset original name when display and export";
|
|
||||||
this.displayOriginalName.CheckedChanged += new System.EventHandler(this.MenuItem_CheckedChanged);
|
|
||||||
//
|
|
||||||
// displayAll
|
// displayAll
|
||||||
//
|
//
|
||||||
this.displayAll.CheckOnClick = true;
|
this.displayAll.CheckOnClick = true;
|
||||||
@@ -266,6 +252,15 @@
|
|||||||
"t the RAW file.";
|
"t the RAW file.";
|
||||||
this.displayAll.CheckedChanged += new System.EventHandler(this.MenuItem_CheckedChanged);
|
this.displayAll.CheckedChanged += new System.EventHandler(this.MenuItem_CheckedChanged);
|
||||||
//
|
//
|
||||||
|
// displayOriginalName
|
||||||
|
//
|
||||||
|
this.displayOriginalName.CheckOnClick = true;
|
||||||
|
this.displayOriginalName.Name = "displayOriginalName";
|
||||||
|
this.displayOriginalName.Size = new System.Drawing.Size(252, 22);
|
||||||
|
this.displayOriginalName.Text = "Display asset original name";
|
||||||
|
this.displayOriginalName.ToolTipText = "Check this option will use asset original name when display and export";
|
||||||
|
this.displayOriginalName.CheckedChanged += new System.EventHandler(this.MenuItem_CheckedChanged);
|
||||||
|
//
|
||||||
// enablePreview
|
// enablePreview
|
||||||
//
|
//
|
||||||
this.enablePreview.Checked = true;
|
this.enablePreview.Checked = true;
|
||||||
@@ -307,97 +302,84 @@
|
|||||||
"Group exported assets by source file",
|
"Group exported assets by source file",
|
||||||
"Do not group exported assets"});
|
"Do not group exported assets"});
|
||||||
this.assetGroupOptions.Name = "assetGroupOptions";
|
this.assetGroupOptions.Name = "assetGroupOptions";
|
||||||
this.assetGroupOptions.Size = new System.Drawing.Size(192, 23);
|
this.assetGroupOptions.Size = new System.Drawing.Size(192, 25);
|
||||||
this.assetGroupOptions.SelectedIndexChanged += new System.EventHandler(this.assetGroupOptions_SelectedIndexChanged);
|
this.assetGroupOptions.SelectedIndexChanged += new System.EventHandler(this.assetGroupOptions_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
// showExpOpt
|
// showExpOpt
|
||||||
//
|
//
|
||||||
this.showExpOpt.Name = "showExpOpt";
|
this.showExpOpt.Name = "showExpOpt";
|
||||||
this.showExpOpt.Size = new System.Drawing.Size(252, 22);
|
this.showExpOpt.Size = new System.Drawing.Size(252, 22);
|
||||||
this.showExpOpt.Text = "Export options...";
|
this.showExpOpt.Text = "Export options";
|
||||||
this.showExpOpt.Click += new System.EventHandler(this.showExpOpt_Click);
|
this.showExpOpt.Click += new System.EventHandler(this.showExpOpt_Click);
|
||||||
//
|
//
|
||||||
// exportToolStripMenuItem
|
// exportToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.exportAll3DMenuItem,
|
|
||||||
this.all3DObjectssplitToolStripMenuItem,
|
|
||||||
this.exportSelected3DMenuItem,
|
|
||||||
this.toolStripSeparator1,
|
|
||||||
this.exportAllAssetsMenuItem,
|
this.exportAllAssetsMenuItem,
|
||||||
this.exportSelectedAssetsMenuItem,
|
this.exportSelectedAssetsMenuItem,
|
||||||
this.exportFilteredAssetsMenuItem});
|
this.exportFilteredAssetsMenuItem});
|
||||||
this.exportToolStripMenuItem.Name = "exportToolStripMenuItem";
|
this.exportToolStripMenuItem.Name = "exportToolStripMenuItem";
|
||||||
this.exportToolStripMenuItem.Size = new System.Drawing.Size(52, 20);
|
this.exportToolStripMenuItem.Size = new System.Drawing.Size(58, 21);
|
||||||
this.exportToolStripMenuItem.Text = "Export";
|
this.exportToolStripMenuItem.Text = "Export";
|
||||||
//
|
this.exportToolStripMenuItem.Visible = false;
|
||||||
// exportAll3DMenuItem
|
|
||||||
//
|
|
||||||
this.exportAll3DMenuItem.Name = "exportAll3DMenuItem";
|
|
||||||
this.exportAll3DMenuItem.Size = new System.Drawing.Size(179, 22);
|
|
||||||
this.exportAll3DMenuItem.Text = "All 3D objects";
|
|
||||||
this.exportAll3DMenuItem.Click += new System.EventHandler(this.Export3DObjects_Click);
|
|
||||||
//
|
|
||||||
// all3DObjectssplitToolStripMenuItem
|
|
||||||
//
|
|
||||||
this.all3DObjectssplitToolStripMenuItem.Name = "all3DObjectssplitToolStripMenuItem";
|
|
||||||
this.all3DObjectssplitToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
|
||||||
this.all3DObjectssplitToolStripMenuItem.Text = "All 3D objects (split)";
|
|
||||||
this.all3DObjectssplitToolStripMenuItem.Click += new System.EventHandler(this.all3DObjectssplitToolStripMenuItem_Click);
|
|
||||||
//
|
|
||||||
// exportSelected3DMenuItem
|
|
||||||
//
|
|
||||||
this.exportSelected3DMenuItem.Name = "exportSelected3DMenuItem";
|
|
||||||
this.exportSelected3DMenuItem.Size = new System.Drawing.Size(179, 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(176, 6);
|
|
||||||
//
|
//
|
||||||
// exportAllAssetsMenuItem
|
// exportAllAssetsMenuItem
|
||||||
//
|
//
|
||||||
this.exportAllAssetsMenuItem.Name = "exportAllAssetsMenuItem";
|
this.exportAllAssetsMenuItem.Name = "exportAllAssetsMenuItem";
|
||||||
this.exportAllAssetsMenuItem.Size = new System.Drawing.Size(179, 22);
|
this.exportAllAssetsMenuItem.Size = new System.Drawing.Size(165, 22);
|
||||||
this.exportAllAssetsMenuItem.Text = "All assets";
|
this.exportAllAssetsMenuItem.Text = "All assets";
|
||||||
this.exportAllAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
this.exportAllAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
||||||
//
|
//
|
||||||
// exportSelectedAssetsMenuItem
|
// exportSelectedAssetsMenuItem
|
||||||
//
|
//
|
||||||
this.exportSelectedAssetsMenuItem.Name = "exportSelectedAssetsMenuItem";
|
this.exportSelectedAssetsMenuItem.Name = "exportSelectedAssetsMenuItem";
|
||||||
this.exportSelectedAssetsMenuItem.Size = new System.Drawing.Size(179, 22);
|
this.exportSelectedAssetsMenuItem.Size = new System.Drawing.Size(165, 22);
|
||||||
this.exportSelectedAssetsMenuItem.Text = "Selected assets";
|
this.exportSelectedAssetsMenuItem.Text = "Selected assets";
|
||||||
this.exportSelectedAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
this.exportSelectedAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
||||||
//
|
//
|
||||||
// exportFilteredAssetsMenuItem
|
// exportFilteredAssetsMenuItem
|
||||||
//
|
//
|
||||||
this.exportFilteredAssetsMenuItem.Name = "exportFilteredAssetsMenuItem";
|
this.exportFilteredAssetsMenuItem.Name = "exportFilteredAssetsMenuItem";
|
||||||
this.exportFilteredAssetsMenuItem.Size = new System.Drawing.Size(179, 22);
|
this.exportFilteredAssetsMenuItem.Size = new System.Drawing.Size(165, 22);
|
||||||
this.exportFilteredAssetsMenuItem.Text = "Filtered assets";
|
this.exportFilteredAssetsMenuItem.Text = "Filtered assets";
|
||||||
this.exportFilteredAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
this.exportFilteredAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
||||||
//
|
//
|
||||||
// helpToolStripMenuItem
|
// _3DToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this._3DToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.aboutToolStripMenuItem});
|
this.exportAll3DMenuItem,
|
||||||
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
|
this.all3DObjectssplitToolStripMenuItem,
|
||||||
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
this.exportSelected3DMenuItem});
|
||||||
this.helpToolStripMenuItem.Text = "Help";
|
this._3DToolStripMenuItem.Name = "_3DToolStripMenuItem";
|
||||||
|
this._3DToolStripMenuItem.Size = new System.Drawing.Size(78, 21);
|
||||||
|
this._3DToolStripMenuItem.Text = "3D Model";
|
||||||
//
|
//
|
||||||
// aboutToolStripMenuItem
|
// exportAll3DMenuItem
|
||||||
//
|
//
|
||||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
this.exportAll3DMenuItem.Name = "exportAll3DMenuItem";
|
||||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
|
this.exportAll3DMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||||
this.aboutToolStripMenuItem.Text = "About";
|
this.exportAll3DMenuItem.Text = "Export All 3D objects";
|
||||||
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
this.exportAll3DMenuItem.Click += new System.EventHandler(this.Export3DObjects_Click);
|
||||||
|
//
|
||||||
|
// all3DObjectssplitToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.all3DObjectssplitToolStripMenuItem.Name = "all3DObjectssplitToolStripMenuItem";
|
||||||
|
this.all3DObjectssplitToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||||
|
this.all3DObjectssplitToolStripMenuItem.Text = "Export All 3D objects (split)";
|
||||||
|
this.all3DObjectssplitToolStripMenuItem.Click += new System.EventHandler(this.all3DObjectssplitToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// exportSelected3DMenuItem
|
||||||
|
//
|
||||||
|
this.exportSelected3DMenuItem.Name = "exportSelected3DMenuItem";
|
||||||
|
this.exportSelected3DMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||||
|
this.exportSelected3DMenuItem.Text = "Export Selected 3D objects";
|
||||||
|
this.exportSelected3DMenuItem.Click += new System.EventHandler(this.Export3DObjects_Click);
|
||||||
//
|
//
|
||||||
// splitContainer1
|
// splitContainer1
|
||||||
//
|
//
|
||||||
this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.splitContainer1.Location = new System.Drawing.Point(0, 24);
|
this.splitContainer1.Location = new System.Drawing.Point(0, 25);
|
||||||
this.splitContainer1.Name = "splitContainer1";
|
this.splitContainer1.Name = "splitContainer1";
|
||||||
//
|
//
|
||||||
// splitContainer1.Panel1
|
// splitContainer1.Panel1
|
||||||
@@ -412,7 +394,7 @@
|
|||||||
this.splitContainer1.Panel2.Controls.Add(this.classPreviewPanel);
|
this.splitContainer1.Panel2.Controls.Add(this.classPreviewPanel);
|
||||||
this.splitContainer1.Panel2.Controls.Add(this.statusStrip1);
|
this.splitContainer1.Panel2.Controls.Add(this.statusStrip1);
|
||||||
this.splitContainer1.Panel2MinSize = 400;
|
this.splitContainer1.Panel2MinSize = 400;
|
||||||
this.splitContainer1.Size = new System.Drawing.Size(1264, 659);
|
this.splitContainer1.Size = new System.Drawing.Size(1264, 656);
|
||||||
this.splitContainer1.SplitterDistance = 420;
|
this.splitContainer1.SplitterDistance = 420;
|
||||||
this.splitContainer1.TabIndex = 2;
|
this.splitContainer1.TabIndex = 2;
|
||||||
this.splitContainer1.TabStop = false;
|
this.splitContainer1.TabStop = false;
|
||||||
@@ -426,7 +408,7 @@
|
|||||||
this.tabControl1.Name = "tabControl1";
|
this.tabControl1.Name = "tabControl1";
|
||||||
this.tabControl1.Padding = new System.Drawing.Point(17, 3);
|
this.tabControl1.Padding = new System.Drawing.Point(17, 3);
|
||||||
this.tabControl1.SelectedIndex = 0;
|
this.tabControl1.SelectedIndex = 0;
|
||||||
this.tabControl1.Size = new System.Drawing.Size(418, 635);
|
this.tabControl1.Size = new System.Drawing.Size(418, 634);
|
||||||
this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
||||||
this.tabControl1.TabIndex = 0;
|
this.tabControl1.TabIndex = 0;
|
||||||
this.tabControl1.Selected += new System.Windows.Forms.TabControlEventHandler(this.tabPageSelected);
|
this.tabControl1.Selected += new System.Windows.Forms.TabControlEventHandler(this.tabPageSelected);
|
||||||
@@ -437,7 +419,7 @@
|
|||||||
this.tabPage1.Controls.Add(this.treeSearch);
|
this.tabPage1.Controls.Add(this.treeSearch);
|
||||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||||
this.tabPage1.Name = "tabPage1";
|
this.tabPage1.Name = "tabPage1";
|
||||||
this.tabPage1.Size = new System.Drawing.Size(410, 557);
|
this.tabPage1.Size = new System.Drawing.Size(410, 608);
|
||||||
this.tabPage1.TabIndex = 0;
|
this.tabPage1.TabIndex = 0;
|
||||||
this.tabPage1.Text = "Scene Hierarchy";
|
this.tabPage1.Text = "Scene Hierarchy";
|
||||||
this.tabPage1.UseVisualStyleBackColor = true;
|
this.tabPage1.UseVisualStyleBackColor = true;
|
||||||
@@ -449,7 +431,7 @@
|
|||||||
this.sceneTreeView.HideSelection = false;
|
this.sceneTreeView.HideSelection = false;
|
||||||
this.sceneTreeView.Location = new System.Drawing.Point(0, 21);
|
this.sceneTreeView.Location = new System.Drawing.Point(0, 21);
|
||||||
this.sceneTreeView.Name = "sceneTreeView";
|
this.sceneTreeView.Name = "sceneTreeView";
|
||||||
this.sceneTreeView.Size = new System.Drawing.Size(410, 536);
|
this.sceneTreeView.Size = new System.Drawing.Size(410, 587);
|
||||||
this.sceneTreeView.TabIndex = 1;
|
this.sceneTreeView.TabIndex = 1;
|
||||||
this.sceneTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.sceneTreeView_AfterCheck);
|
this.sceneTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.sceneTreeView_AfterCheck);
|
||||||
//
|
//
|
||||||
@@ -459,7 +441,7 @@
|
|||||||
this.treeSearch.ForeColor = System.Drawing.SystemColors.GrayText;
|
this.treeSearch.ForeColor = System.Drawing.SystemColors.GrayText;
|
||||||
this.treeSearch.Location = new System.Drawing.Point(0, 0);
|
this.treeSearch.Location = new System.Drawing.Point(0, 0);
|
||||||
this.treeSearch.Name = "treeSearch";
|
this.treeSearch.Name = "treeSearch";
|
||||||
this.treeSearch.Size = new System.Drawing.Size(410, 20);
|
this.treeSearch.Size = new System.Drawing.Size(410, 21);
|
||||||
this.treeSearch.TabIndex = 0;
|
this.treeSearch.TabIndex = 0;
|
||||||
this.treeSearch.Text = " Search ";
|
this.treeSearch.Text = " Search ";
|
||||||
this.treeSearch.TextChanged += new System.EventHandler(this.treeSearch_TextChanged);
|
this.treeSearch.TextChanged += new System.EventHandler(this.treeSearch_TextChanged);
|
||||||
@@ -474,7 +456,7 @@
|
|||||||
this.tabPage2.Controls.Add(this.listSearch);
|
this.tabPage2.Controls.Add(this.listSearch);
|
||||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||||
this.tabPage2.Name = "tabPage2";
|
this.tabPage2.Name = "tabPage2";
|
||||||
this.tabPage2.Size = new System.Drawing.Size(410, 609);
|
this.tabPage2.Size = new System.Drawing.Size(410, 608);
|
||||||
this.tabPage2.TabIndex = 1;
|
this.tabPage2.TabIndex = 1;
|
||||||
this.tabPage2.Text = "Asset List";
|
this.tabPage2.Text = "Asset List";
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
@@ -491,9 +473,9 @@
|
|||||||
this.assetListView.GridLines = true;
|
this.assetListView.GridLines = true;
|
||||||
this.assetListView.HideSelection = false;
|
this.assetListView.HideSelection = false;
|
||||||
this.assetListView.LabelEdit = true;
|
this.assetListView.LabelEdit = true;
|
||||||
this.assetListView.Location = new System.Drawing.Point(0, 20);
|
this.assetListView.Location = new System.Drawing.Point(0, 21);
|
||||||
this.assetListView.Name = "assetListView";
|
this.assetListView.Name = "assetListView";
|
||||||
this.assetListView.Size = new System.Drawing.Size(410, 589);
|
this.assetListView.Size = new System.Drawing.Size(410, 587);
|
||||||
this.assetListView.TabIndex = 1;
|
this.assetListView.TabIndex = 1;
|
||||||
this.assetListView.UseCompatibleStateImageBehavior = false;
|
this.assetListView.UseCompatibleStateImageBehavior = false;
|
||||||
this.assetListView.View = System.Windows.Forms.View.Details;
|
this.assetListView.View = System.Windows.Forms.View.Details;
|
||||||
@@ -524,7 +506,7 @@
|
|||||||
this.listSearch.ForeColor = System.Drawing.SystemColors.GrayText;
|
this.listSearch.ForeColor = System.Drawing.SystemColors.GrayText;
|
||||||
this.listSearch.Location = new System.Drawing.Point(0, 0);
|
this.listSearch.Location = new System.Drawing.Point(0, 0);
|
||||||
this.listSearch.Name = "listSearch";
|
this.listSearch.Name = "listSearch";
|
||||||
this.listSearch.Size = new System.Drawing.Size(410, 20);
|
this.listSearch.Size = new System.Drawing.Size(410, 21);
|
||||||
this.listSearch.TabIndex = 0;
|
this.listSearch.TabIndex = 0;
|
||||||
this.listSearch.Text = " Filter ";
|
this.listSearch.Text = " Filter ";
|
||||||
this.listSearch.TextChanged += new System.EventHandler(this.ListSearchTextChanged);
|
this.listSearch.TextChanged += new System.EventHandler(this.ListSearchTextChanged);
|
||||||
@@ -535,18 +517,18 @@
|
|||||||
//
|
//
|
||||||
this.progressbarPanel.Controls.Add(this.progressBar1);
|
this.progressbarPanel.Controls.Add(this.progressBar1);
|
||||||
this.progressbarPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
|
this.progressbarPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
this.progressbarPanel.Location = new System.Drawing.Point(0, 635);
|
this.progressbarPanel.Location = new System.Drawing.Point(0, 634);
|
||||||
this.progressbarPanel.Name = "progressbarPanel";
|
this.progressbarPanel.Name = "progressbarPanel";
|
||||||
this.progressbarPanel.Padding = new System.Windows.Forms.Padding(1, 3, 1, 1);
|
this.progressbarPanel.Padding = new System.Windows.Forms.Padding(1, 3, 1, 1);
|
||||||
this.progressbarPanel.Size = new System.Drawing.Size(418, 22);
|
this.progressbarPanel.Size = new System.Drawing.Size(418, 20);
|
||||||
this.progressbarPanel.TabIndex = 2;
|
this.progressbarPanel.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// progressBar1
|
// progressBar1
|
||||||
//
|
//
|
||||||
this.progressBar1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.progressBar1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
this.progressBar1.Location = new System.Drawing.Point(1, 3);
|
this.progressBar1.Location = new System.Drawing.Point(1, 2);
|
||||||
this.progressBar1.Name = "progressBar1";
|
this.progressBar1.Name = "progressBar1";
|
||||||
this.progressBar1.Size = new System.Drawing.Size(416, 18);
|
this.progressBar1.Size = new System.Drawing.Size(416, 17);
|
||||||
this.progressBar1.Step = 1;
|
this.progressBar1.Step = 1;
|
||||||
this.progressBar1.TabIndex = 1;
|
this.progressBar1.TabIndex = 1;
|
||||||
//
|
//
|
||||||
@@ -563,7 +545,7 @@
|
|||||||
this.previewPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.previewPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.previewPanel.Location = new System.Drawing.Point(0, 0);
|
this.previewPanel.Location = new System.Drawing.Point(0, 0);
|
||||||
this.previewPanel.Name = "previewPanel";
|
this.previewPanel.Name = "previewPanel";
|
||||||
this.previewPanel.Size = new System.Drawing.Size(838, 635);
|
this.previewPanel.Size = new System.Drawing.Size(838, 632);
|
||||||
this.previewPanel.TabIndex = 1;
|
this.previewPanel.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// assetInfoLabel
|
// assetInfoLabel
|
||||||
@@ -571,14 +553,13 @@
|
|||||||
this.assetInfoLabel.AutoSize = true;
|
this.assetInfoLabel.AutoSize = true;
|
||||||
this.assetInfoLabel.BackColor = System.Drawing.Color.Transparent;
|
this.assetInfoLabel.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.assetInfoLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
this.assetInfoLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||||
this.assetInfoLabel.Location = new System.Drawing.Point(4, 8);
|
this.assetInfoLabel.Location = new System.Drawing.Point(4, 7);
|
||||||
this.assetInfoLabel.Name = "assetInfoLabel";
|
this.assetInfoLabel.Name = "assetInfoLabel";
|
||||||
this.assetInfoLabel.Size = new System.Drawing.Size(0, 13);
|
this.assetInfoLabel.Size = new System.Drawing.Size(0, 12);
|
||||||
this.assetInfoLabel.TabIndex = 0;
|
this.assetInfoLabel.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// FMODpanel
|
// FMODpanel
|
||||||
//
|
//
|
||||||
this.FMODpanel.Anchor = System.Windows.Forms.AnchorStyles.None;
|
|
||||||
this.FMODpanel.BackColor = System.Drawing.SystemColors.ControlDark;
|
this.FMODpanel.BackColor = System.Drawing.SystemColors.ControlDark;
|
||||||
this.FMODpanel.Controls.Add(this.FMODcopyright);
|
this.FMODpanel.Controls.Add(this.FMODcopyright);
|
||||||
this.FMODpanel.Controls.Add(this.FMODinfoLabel);
|
this.FMODpanel.Controls.Add(this.FMODinfoLabel);
|
||||||
@@ -590,9 +571,10 @@
|
|||||||
this.FMODpanel.Controls.Add(this.FMODstopButton);
|
this.FMODpanel.Controls.Add(this.FMODstopButton);
|
||||||
this.FMODpanel.Controls.Add(this.FMODpauseButton);
|
this.FMODpanel.Controls.Add(this.FMODpauseButton);
|
||||||
this.FMODpanel.Controls.Add(this.FMODplayButton);
|
this.FMODpanel.Controls.Add(this.FMODplayButton);
|
||||||
|
this.FMODpanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.FMODpanel.Location = new System.Drawing.Point(0, 0);
|
this.FMODpanel.Location = new System.Drawing.Point(0, 0);
|
||||||
this.FMODpanel.Name = "FMODpanel";
|
this.FMODpanel.Name = "FMODpanel";
|
||||||
this.FMODpanel.Size = new System.Drawing.Size(838, 635);
|
this.FMODpanel.Size = new System.Drawing.Size(838, 632);
|
||||||
this.FMODpanel.TabIndex = 2;
|
this.FMODpanel.TabIndex = 2;
|
||||||
this.FMODpanel.Visible = false;
|
this.FMODpanel.Visible = false;
|
||||||
//
|
//
|
||||||
@@ -600,26 +582,27 @@
|
|||||||
//
|
//
|
||||||
this.FMODcopyright.AutoSize = true;
|
this.FMODcopyright.AutoSize = true;
|
||||||
this.FMODcopyright.ForeColor = System.Drawing.SystemColors.ControlLight;
|
this.FMODcopyright.ForeColor = System.Drawing.SystemColors.ControlLight;
|
||||||
this.FMODcopyright.Location = new System.Drawing.Point(249, 380);
|
this.FMODcopyright.Location = new System.Drawing.Point(249, 351);
|
||||||
this.FMODcopyright.Name = "FMODcopyright";
|
this.FMODcopyright.Name = "FMODcopyright";
|
||||||
this.FMODcopyright.Size = new System.Drawing.Size(283, 13);
|
this.FMODcopyright.Size = new System.Drawing.Size(341, 12);
|
||||||
this.FMODcopyright.TabIndex = 9;
|
this.FMODcopyright.TabIndex = 9;
|
||||||
this.FMODcopyright.Text = "Audio Engine supplied by FMOD by Firelight Technologies.";
|
this.FMODcopyright.Text = "Audio Engine supplied by FMOD by Firelight Technologies.";
|
||||||
//
|
//
|
||||||
// FMODinfoLabel
|
// FMODinfoLabel
|
||||||
//
|
//
|
||||||
|
this.FMODinfoLabel.AutoSize = true;
|
||||||
this.FMODinfoLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
this.FMODinfoLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||||
this.FMODinfoLabel.Location = new System.Drawing.Point(305, 271);
|
this.FMODinfoLabel.Location = new System.Drawing.Point(305, 250);
|
||||||
this.FMODinfoLabel.Name = "FMODinfoLabel";
|
this.FMODinfoLabel.Name = "FMODinfoLabel";
|
||||||
this.FMODinfoLabel.Size = new System.Drawing.Size(176, 13);
|
this.FMODinfoLabel.Size = new System.Drawing.Size(0, 12);
|
||||||
this.FMODinfoLabel.TabIndex = 8;
|
this.FMODinfoLabel.TabIndex = 8;
|
||||||
//
|
//
|
||||||
// FMODtimerLabel
|
// FMODtimerLabel
|
||||||
//
|
//
|
||||||
this.FMODtimerLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
this.FMODtimerLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||||
this.FMODtimerLabel.Location = new System.Drawing.Point(435, 271);
|
this.FMODtimerLabel.Location = new System.Drawing.Point(440, 250);
|
||||||
this.FMODtimerLabel.Name = "FMODtimerLabel";
|
this.FMODtimerLabel.Name = "FMODtimerLabel";
|
||||||
this.FMODtimerLabel.Size = new System.Drawing.Size(158, 13);
|
this.FMODtimerLabel.Size = new System.Drawing.Size(155, 12);
|
||||||
this.FMODtimerLabel.TabIndex = 7;
|
this.FMODtimerLabel.TabIndex = 7;
|
||||||
this.FMODtimerLabel.Text = "0:00.0 / 0:00.0";
|
this.FMODtimerLabel.Text = "0:00.0 / 0:00.0";
|
||||||
this.FMODtimerLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
this.FMODtimerLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
@@ -627,19 +610,19 @@
|
|||||||
// FMODstatusLabel
|
// FMODstatusLabel
|
||||||
//
|
//
|
||||||
this.FMODstatusLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
this.FMODstatusLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||||
this.FMODstatusLabel.Location = new System.Drawing.Point(249, 271);
|
this.FMODstatusLabel.Location = new System.Drawing.Point(249, 250);
|
||||||
this.FMODstatusLabel.Name = "FMODstatusLabel";
|
this.FMODstatusLabel.Name = "FMODstatusLabel";
|
||||||
this.FMODstatusLabel.Size = new System.Drawing.Size(50, 13);
|
this.FMODstatusLabel.Size = new System.Drawing.Size(50, 12);
|
||||||
this.FMODstatusLabel.TabIndex = 6;
|
this.FMODstatusLabel.TabIndex = 6;
|
||||||
this.FMODstatusLabel.Text = "Stopped";
|
this.FMODstatusLabel.Text = "Stopped";
|
||||||
//
|
//
|
||||||
// FMODprogressBar
|
// FMODprogressBar
|
||||||
//
|
//
|
||||||
this.FMODprogressBar.AutoSize = false;
|
this.FMODprogressBar.AutoSize = false;
|
||||||
this.FMODprogressBar.Location = new System.Drawing.Point(252, 290);
|
this.FMODprogressBar.Location = new System.Drawing.Point(249, 268);
|
||||||
this.FMODprogressBar.Maximum = 1000;
|
this.FMODprogressBar.Maximum = 1000;
|
||||||
this.FMODprogressBar.Name = "FMODprogressBar";
|
this.FMODprogressBar.Name = "FMODprogressBar";
|
||||||
this.FMODprogressBar.Size = new System.Drawing.Size(348, 24);
|
this.FMODprogressBar.Size = new System.Drawing.Size(350, 22);
|
||||||
this.FMODprogressBar.TabIndex = 5;
|
this.FMODprogressBar.TabIndex = 5;
|
||||||
this.FMODprogressBar.TickStyle = System.Windows.Forms.TickStyle.None;
|
this.FMODprogressBar.TickStyle = System.Windows.Forms.TickStyle.None;
|
||||||
this.FMODprogressBar.Scroll += new System.EventHandler(this.FMODprogressBar_Scroll);
|
this.FMODprogressBar.Scroll += new System.EventHandler(this.FMODprogressBar_Scroll);
|
||||||
@@ -649,7 +632,7 @@
|
|||||||
// FMODvolumeBar
|
// FMODvolumeBar
|
||||||
//
|
//
|
||||||
this.FMODvolumeBar.LargeChange = 2;
|
this.FMODvolumeBar.LargeChange = 2;
|
||||||
this.FMODvolumeBar.Location = new System.Drawing.Point(496, 320);
|
this.FMODvolumeBar.Location = new System.Drawing.Point(496, 295);
|
||||||
this.FMODvolumeBar.Name = "FMODvolumeBar";
|
this.FMODvolumeBar.Name = "FMODvolumeBar";
|
||||||
this.FMODvolumeBar.Size = new System.Drawing.Size(104, 45);
|
this.FMODvolumeBar.Size = new System.Drawing.Size(104, 45);
|
||||||
this.FMODvolumeBar.TabIndex = 4;
|
this.FMODvolumeBar.TabIndex = 4;
|
||||||
@@ -660,9 +643,9 @@
|
|||||||
// FMODloopButton
|
// FMODloopButton
|
||||||
//
|
//
|
||||||
this.FMODloopButton.Appearance = System.Windows.Forms.Appearance.Button;
|
this.FMODloopButton.Appearance = System.Windows.Forms.Appearance.Button;
|
||||||
this.FMODloopButton.Location = new System.Drawing.Point(435, 320);
|
this.FMODloopButton.Location = new System.Drawing.Point(435, 295);
|
||||||
this.FMODloopButton.Name = "FMODloopButton";
|
this.FMODloopButton.Name = "FMODloopButton";
|
||||||
this.FMODloopButton.Size = new System.Drawing.Size(55, 46);
|
this.FMODloopButton.Size = new System.Drawing.Size(55, 42);
|
||||||
this.FMODloopButton.TabIndex = 3;
|
this.FMODloopButton.TabIndex = 3;
|
||||||
this.FMODloopButton.Text = "Loop";
|
this.FMODloopButton.Text = "Loop";
|
||||||
this.FMODloopButton.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.FMODloopButton.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
@@ -671,9 +654,9 @@
|
|||||||
//
|
//
|
||||||
// FMODstopButton
|
// FMODstopButton
|
||||||
//
|
//
|
||||||
this.FMODstopButton.Location = new System.Drawing.Point(374, 320);
|
this.FMODstopButton.Location = new System.Drawing.Point(374, 295);
|
||||||
this.FMODstopButton.Name = "FMODstopButton";
|
this.FMODstopButton.Name = "FMODstopButton";
|
||||||
this.FMODstopButton.Size = new System.Drawing.Size(55, 46);
|
this.FMODstopButton.Size = new System.Drawing.Size(55, 42);
|
||||||
this.FMODstopButton.TabIndex = 2;
|
this.FMODstopButton.TabIndex = 2;
|
||||||
this.FMODstopButton.Text = "Stop";
|
this.FMODstopButton.Text = "Stop";
|
||||||
this.FMODstopButton.UseVisualStyleBackColor = true;
|
this.FMODstopButton.UseVisualStyleBackColor = true;
|
||||||
@@ -681,9 +664,9 @@
|
|||||||
//
|
//
|
||||||
// FMODpauseButton
|
// FMODpauseButton
|
||||||
//
|
//
|
||||||
this.FMODpauseButton.Location = new System.Drawing.Point(313, 320);
|
this.FMODpauseButton.Location = new System.Drawing.Point(313, 295);
|
||||||
this.FMODpauseButton.Name = "FMODpauseButton";
|
this.FMODpauseButton.Name = "FMODpauseButton";
|
||||||
this.FMODpauseButton.Size = new System.Drawing.Size(55, 46);
|
this.FMODpauseButton.Size = new System.Drawing.Size(55, 42);
|
||||||
this.FMODpauseButton.TabIndex = 1;
|
this.FMODpauseButton.TabIndex = 1;
|
||||||
this.FMODpauseButton.Text = "Pause";
|
this.FMODpauseButton.Text = "Pause";
|
||||||
this.FMODpauseButton.UseVisualStyleBackColor = true;
|
this.FMODpauseButton.UseVisualStyleBackColor = true;
|
||||||
@@ -691,9 +674,9 @@
|
|||||||
//
|
//
|
||||||
// FMODplayButton
|
// FMODplayButton
|
||||||
//
|
//
|
||||||
this.FMODplayButton.Location = new System.Drawing.Point(252, 320);
|
this.FMODplayButton.Location = new System.Drawing.Point(252, 295);
|
||||||
this.FMODplayButton.Name = "FMODplayButton";
|
this.FMODplayButton.Name = "FMODplayButton";
|
||||||
this.FMODplayButton.Size = new System.Drawing.Size(55, 46);
|
this.FMODplayButton.Size = new System.Drawing.Size(55, 42);
|
||||||
this.FMODplayButton.TabIndex = 0;
|
this.FMODplayButton.TabIndex = 0;
|
||||||
this.FMODplayButton.Text = "Play";
|
this.FMODplayButton.Text = "Play";
|
||||||
this.FMODplayButton.UseVisualStyleBackColor = true;
|
this.FMODplayButton.UseVisualStyleBackColor = true;
|
||||||
@@ -707,7 +690,7 @@
|
|||||||
this.fontPreviewBox.Name = "fontPreviewBox";
|
this.fontPreviewBox.Name = "fontPreviewBox";
|
||||||
this.fontPreviewBox.ReadOnly = true;
|
this.fontPreviewBox.ReadOnly = true;
|
||||||
this.fontPreviewBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
|
this.fontPreviewBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
|
||||||
this.fontPreviewBox.Size = new System.Drawing.Size(838, 635);
|
this.fontPreviewBox.Size = new System.Drawing.Size(838, 632);
|
||||||
this.fontPreviewBox.TabIndex = 0;
|
this.fontPreviewBox.TabIndex = 0;
|
||||||
this.fontPreviewBox.Text = resources.GetString("fontPreviewBox.Text");
|
this.fontPreviewBox.Text = resources.GetString("fontPreviewBox.Text");
|
||||||
this.fontPreviewBox.Visible = false;
|
this.fontPreviewBox.Visible = false;
|
||||||
@@ -722,7 +705,7 @@
|
|||||||
this.textPreviewBox.Name = "textPreviewBox";
|
this.textPreviewBox.Name = "textPreviewBox";
|
||||||
this.textPreviewBox.ReadOnly = true;
|
this.textPreviewBox.ReadOnly = true;
|
||||||
this.textPreviewBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
this.textPreviewBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
this.textPreviewBox.Size = new System.Drawing.Size(838, 635);
|
this.textPreviewBox.Size = new System.Drawing.Size(838, 632);
|
||||||
this.textPreviewBox.TabIndex = 2;
|
this.textPreviewBox.TabIndex = 2;
|
||||||
this.textPreviewBox.Visible = false;
|
this.textPreviewBox.Visible = false;
|
||||||
this.textPreviewBox.WordWrap = false;
|
this.textPreviewBox.WordWrap = false;
|
||||||
@@ -733,10 +716,11 @@
|
|||||||
this.glControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.glControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.glControl1.Location = new System.Drawing.Point(0, 0);
|
this.glControl1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.glControl1.Name = "glControl1";
|
this.glControl1.Name = "glControl1";
|
||||||
this.glControl1.Size = new System.Drawing.Size(838, 635);
|
this.glControl1.Size = new System.Drawing.Size(838, 632);
|
||||||
this.glControl1.TabIndex = 4;
|
this.glControl1.TabIndex = 4;
|
||||||
this.glControl1.VSync = false;
|
this.glControl1.VSync = false;
|
||||||
this.glControl1.Paint += new System.Windows.Forms.PaintEventHandler(this.glControl1_Paint);
|
this.glControl1.Paint += new System.Windows.Forms.PaintEventHandler(this.glControl1_Paint);
|
||||||
|
this.glControl1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.glControl1_MouseWheel);
|
||||||
//
|
//
|
||||||
// classPreviewPanel
|
// classPreviewPanel
|
||||||
//
|
//
|
||||||
@@ -744,7 +728,7 @@
|
|||||||
this.classPreviewPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.classPreviewPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.classPreviewPanel.Location = new System.Drawing.Point(0, 0);
|
this.classPreviewPanel.Location = new System.Drawing.Point(0, 0);
|
||||||
this.classPreviewPanel.Name = "classPreviewPanel";
|
this.classPreviewPanel.Name = "classPreviewPanel";
|
||||||
this.classPreviewPanel.Size = new System.Drawing.Size(838, 635);
|
this.classPreviewPanel.Size = new System.Drawing.Size(838, 632);
|
||||||
this.classPreviewPanel.TabIndex = 3;
|
this.classPreviewPanel.TabIndex = 3;
|
||||||
this.classPreviewPanel.Visible = false;
|
this.classPreviewPanel.Visible = false;
|
||||||
//
|
//
|
||||||
@@ -756,7 +740,7 @@
|
|||||||
this.classTextBox.Name = "classTextBox";
|
this.classTextBox.Name = "classTextBox";
|
||||||
this.classTextBox.ReadOnly = true;
|
this.classTextBox.ReadOnly = true;
|
||||||
this.classTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
this.classTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
this.classTextBox.Size = new System.Drawing.Size(838, 635);
|
this.classTextBox.Size = new System.Drawing.Size(838, 632);
|
||||||
this.classTextBox.TabIndex = 3;
|
this.classTextBox.TabIndex = 3;
|
||||||
this.classTextBox.WordWrap = false;
|
this.classTextBox.WordWrap = false;
|
||||||
//
|
//
|
||||||
@@ -764,7 +748,7 @@
|
|||||||
//
|
//
|
||||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.toolStripStatusLabel1});
|
this.toolStripStatusLabel1});
|
||||||
this.statusStrip1.Location = new System.Drawing.Point(0, 635);
|
this.statusStrip1.Location = new System.Drawing.Point(0, 632);
|
||||||
this.statusStrip1.Name = "statusStrip1";
|
this.statusStrip1.Name = "statusStrip1";
|
||||||
this.statusStrip1.Size = new System.Drawing.Size(838, 22);
|
this.statusStrip1.Size = new System.Drawing.Size(838, 22);
|
||||||
this.statusStrip1.TabIndex = 2;
|
this.statusStrip1.TabIndex = 2;
|
||||||
@@ -823,7 +807,7 @@
|
|||||||
//
|
//
|
||||||
// timerOpenTK
|
// timerOpenTK
|
||||||
//
|
//
|
||||||
this.timerOpenTK.Interval = 1000 / 6;
|
this.timerOpenTK.Interval = 166;
|
||||||
this.timerOpenTK.Tick += new System.EventHandler(this.timerOpenTK_Tick);
|
this.timerOpenTK.Tick += new System.EventHandler(this.timerOpenTK_Tick);
|
||||||
//
|
//
|
||||||
// openFileDialog1
|
// openFileDialog1
|
||||||
@@ -833,54 +817,37 @@
|
|||||||
this.openFileDialog1.Multiselect = true;
|
this.openFileDialog1.Multiselect = true;
|
||||||
this.openFileDialog1.RestoreDirectory = true;
|
this.openFileDialog1.RestoreDirectory = true;
|
||||||
//
|
//
|
||||||
// openFolderDialog1
|
|
||||||
//
|
|
||||||
this.openFolderDialog1.AddExtension = false;
|
|
||||||
this.openFolderDialog1.CheckFileExists = false;
|
|
||||||
this.openFolderDialog1.FileName = "Select folder";
|
|
||||||
this.openFolderDialog1.Filter = "Folders|*.";
|
|
||||||
this.openFolderDialog1.RestoreDirectory = true;
|
|
||||||
this.openFolderDialog1.Title = "Browse for folder";
|
|
||||||
//
|
|
||||||
// saveFileDialog1
|
// saveFileDialog1
|
||||||
//
|
//
|
||||||
this.saveFileDialog1.Filter = "FBX file|*.fbx|Collada|*.dae";
|
this.saveFileDialog1.Filter = "FBX file|*.fbx";
|
||||||
this.saveFileDialog1.RestoreDirectory = true;
|
this.saveFileDialog1.RestoreDirectory = true;
|
||||||
//
|
//
|
||||||
// saveFolderDialog1
|
|
||||||
//
|
|
||||||
this.saveFolderDialog1.AddExtension = false;
|
|
||||||
this.saveFolderDialog1.FileName = "Select folder or write folder name to create";
|
|
||||||
this.saveFolderDialog1.Filter = "Folders|*.";
|
|
||||||
this.saveFolderDialog1.RestoreDirectory = true;
|
|
||||||
this.saveFolderDialog1.Title = "Browse for folder";
|
|
||||||
//
|
|
||||||
// contextMenuStrip1
|
// contextMenuStrip1
|
||||||
//
|
//
|
||||||
this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
|
this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.showOriginalFileToolStripMenuItem});
|
this.showOriginalFileToolStripMenuItem});
|
||||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||||
this.contextMenuStrip1.Size = new System.Drawing.Size(202, 56);
|
this.contextMenuStrip1.Size = new System.Drawing.Size(176, 26);
|
||||||
//
|
//
|
||||||
// showOriginalFileToolStripMenuItem
|
// showOriginalFileToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.showOriginalFileToolStripMenuItem.Name = "showOriginalFileToolStripMenuItem";
|
this.showOriginalFileToolStripMenuItem.Name = "showOriginalFileToolStripMenuItem";
|
||||||
this.showOriginalFileToolStripMenuItem.Size = new System.Drawing.Size(201, 24);
|
this.showOriginalFileToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
|
||||||
this.showOriginalFileToolStripMenuItem.Text = "show original file";
|
this.showOriginalFileToolStripMenuItem.Text = "show original file";
|
||||||
this.showOriginalFileToolStripMenuItem.Click += new System.EventHandler(this.showOriginalFileToolStripMenuItem_Click);
|
this.showOriginalFileToolStripMenuItem.Click += new System.EventHandler(this.showOriginalFileToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// UnityStudioForm
|
// UnityStudioForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(1264, 683);
|
this.ClientSize = new System.Drawing.Size(1264, 681);
|
||||||
this.Controls.Add(this.splitContainer1);
|
this.Controls.Add(this.splitContainer1);
|
||||||
this.Controls.Add(this.menuStrip1);
|
this.Controls.Add(this.menuStrip1);
|
||||||
this.Icon = global::Unity_Studio.Properties.Resources.unity;
|
this.Icon = global::Unity_Studio.Properties.Resources.unity;
|
||||||
this.KeyPreview = true;
|
this.KeyPreview = true;
|
||||||
this.MainMenuStrip = this.menuStrip1;
|
this.MainMenuStrip = this.menuStrip1;
|
||||||
this.MinimumSize = new System.Drawing.Size(620, 400);
|
this.MinimumSize = new System.Drawing.Size(620, 372);
|
||||||
this.Name = "UnityStudioForm";
|
this.Name = "UnityStudioForm";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "Unity Studio";
|
this.Text = "Unity Studio";
|
||||||
@@ -898,7 +865,6 @@
|
|||||||
this.tabPage2.ResumeLayout(false);
|
this.tabPage2.ResumeLayout(false);
|
||||||
this.tabPage2.PerformLayout();
|
this.tabPage2.PerformLayout();
|
||||||
this.progressbarPanel.ResumeLayout(false);
|
this.progressbarPanel.ResumeLayout(false);
|
||||||
this.glControl1.ResumeLayout(false);
|
|
||||||
this.previewPanel.ResumeLayout(false);
|
this.previewPanel.ResumeLayout(false);
|
||||||
this.previewPanel.PerformLayout();
|
this.previewPanel.PerformLayout();
|
||||||
this.FMODpanel.ResumeLayout(false);
|
this.FMODpanel.ResumeLayout(false);
|
||||||
@@ -941,7 +907,7 @@
|
|||||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
|
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
|
||||||
private System.Windows.Forms.Panel progressbarPanel;
|
private System.Windows.Forms.Panel progressbarPanel;
|
||||||
private System.Windows.Forms.ToolStripMenuItem exportFilteredAssetsMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem exportFilteredAssetsMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem _3DToolStripMenuItem;
|
||||||
private System.Windows.Forms.Label assetInfoLabel;
|
private System.Windows.Forms.Label assetInfoLabel;
|
||||||
private System.Windows.Forms.TextBox textPreviewBox;
|
private System.Windows.Forms.TextBox textPreviewBox;
|
||||||
private System.Windows.Forms.RichTextBox fontPreviewBox;
|
private System.Windows.Forms.RichTextBox fontPreviewBox;
|
||||||
@@ -957,7 +923,6 @@
|
|||||||
private System.Windows.Forms.Label FMODinfoLabel;
|
private System.Windows.Forms.Label FMODinfoLabel;
|
||||||
private System.Windows.Forms.Timer timer;
|
private System.Windows.Forms.Timer timer;
|
||||||
private System.Windows.Forms.Timer timerOpenTK;
|
private System.Windows.Forms.Timer timerOpenTK;
|
||||||
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem displayAll;
|
private System.Windows.Forms.ToolStripMenuItem displayAll;
|
||||||
private System.Windows.Forms.ToolStripMenuItem displayOriginalName;
|
private System.Windows.Forms.ToolStripMenuItem displayOriginalName;
|
||||||
@@ -968,11 +933,8 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem extractFolderToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem extractFolderToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem exportAll3DMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem exportAll3DMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem exportSelected3DMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem exportSelected3DMenuItem;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
|
||||||
private System.Windows.Forms.OpenFileDialog openFileDialog1;
|
private System.Windows.Forms.OpenFileDialog openFileDialog1;
|
||||||
private System.Windows.Forms.OpenFileDialog openFolderDialog1;
|
|
||||||
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
|
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
|
||||||
private System.Windows.Forms.SaveFileDialog saveFolderDialog1;
|
|
||||||
private System.Windows.Forms.ToolStripComboBox assetGroupOptions;
|
private System.Windows.Forms.ToolStripComboBox assetGroupOptions;
|
||||||
private System.Windows.Forms.ToolStripMenuItem openAfterExport;
|
private System.Windows.Forms.ToolStripMenuItem openAfterExport;
|
||||||
private System.Windows.Forms.ToolStripMenuItem showExpOpt;
|
private System.Windows.Forms.ToolStripMenuItem showExpOpt;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -117,10 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<data name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<value>312, 17</value>
|
||||||
<value>325, 17</value>
|
</metadata>
|
||||||
</data>
|
|
||||||
<data name="fontPreviewBox.Text" xml:space="preserve">
|
<data name="fontPreviewBox.Text" xml:space="preserve">
|
||||||
<value>abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ
|
<value>abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ
|
||||||
1234567890.:,;'\"(!?)+-*/=
|
1234567890.:,;'\"(!?)+-*/=
|
||||||
@@ -139,32 +138,31 @@ The quick brown fox jumps over the lazy dog. 1234567890
|
|||||||
|
|
||||||
The quick brown fox jumps over the lazy dog. 1234567890</value>
|
The quick brown fox jumps over the lazy dog. 1234567890</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>440, 17</value>
|
<value>432, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>556, 17</value>
|
<value>553, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<metadata name="timerOpenTK.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>636, 17</value>
|
<value>636, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="openFileDialog1.Filter" xml:space="preserve">
|
<data name="openFileDialog1.Filter" xml:space="preserve">
|
||||||
<value>Unity asset files|*.*|Unity bundle files|*.*|Unity asset files|level*; globalgamemanagers; mainData; CustomAssetBundle-*; CAB-*; BuildPlayer-*; *.assets; *.sharedAssets|Unity bundle files|*.unity3d; *.unity3d.lz4; *.assetbundle; *.bundle; *.bytes</value>
|
<value>Unity asset files|*.*|Unity bundle files|*.*|Unity asset files|level*; globalgamemanagers; mainData; CustomAssetBundle-*; CAB-*; BuildPlayer-*; *.assets; *.sharedAssets|Unity bundle files|*.unity3d; *.unity3d.lz4; *.assetbundle; *.bundle; *.bytes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="openFolderDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>169, 17</value>
|
<value>784, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<metadata name="treeTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>776, 17</value>
|
<value>928, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="saveFolderDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>147, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="treeTip.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>912, 17</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="$this.TrayHeight" type="System.Int32, mscorlib">
|
|
||||||
<value>67</value>
|
<value>67</value>
|
||||||
</data>
|
</metadata>
|
||||||
</root>
|
</root>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
<setting name="convertTexture" serializeAs="String">
|
<setting name="convertTexture" serializeAs="String">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="convertfsb" serializeAs="String">
|
<setting name="convertAudio" serializeAs="String">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="convertType" serializeAs="String">
|
<setting name="convertType" serializeAs="String">
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user