Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
05fd0588e8 | ||
|
|
f60f7ac413 | ||
|
|
344f69fddc | ||
|
|
dc5691aefc | ||
|
|
797216fed4 | ||
|
|
4899d6d7d0 | ||
|
|
8637c31311 | ||
|
|
ac33fd5ab8 | ||
|
|
8ccfbcf66a | ||
|
|
2e84b08494 | ||
|
|
08bf84146b | ||
|
|
fbfdb789f5 | ||
|
|
dcde8902f1 | ||
|
|
d079368acf | ||
|
|
92426fa585 | ||
|
|
248063276d | ||
|
|
d61f1ac676 | ||
|
|
1f1a8c5956 | ||
|
|
4b8b8fb8ea | ||
|
|
0df3b54499 | ||
|
|
cc3b08fea5 | ||
|
|
4eebbaa5ef |
35
README.md
35
README.md
@@ -1,28 +1,37 @@
|
||||
**Unity Studio** is a tool for exploring, extracting and exporting assets from Unity games and apps.
|
||||
|
||||
It is the continuation of my Unity Importer script for 3ds Max, and comprises all my research and reverse engineering of Unity file formats. It has been thoroughly 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.0 up to the 5.4 version.
|
||||
It is the continuation of my Unity Importer script for 3ds Max, and comprises all my research and reverse engineering of Unity file formats. It has been thoroughly 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.0 up to the 5.5 version.
|
||||
|
||||
#### Current features
|
||||
## Current features
|
||||
|
||||
* Support the 'UnityFS' asset bundle type
|
||||
* Extraction of assets that can be used as standalone resources:
|
||||
* Textures:
|
||||
* **Texture2D**:
|
||||
* DDS (Alpha8, ARGB4444, RGB24, RGBA32, ARGB32, RGB565, DXT1, DXT5, RGBA4444, BGRA32)
|
||||
* PVR (YUY2, PVRTC_RGB2, PVRTC_RGBA2, PVRTC_RGB4, PVRTC_RGBA4, ETC_RGB4, ETC2_RGB, ETC2_RGBA1, ETC2_RGBA8, EAC_R, EAC_R_SIGNED, EAC_RG, EAC_RG_SIGNED)
|
||||
* KTX (ATC_RGB4, ATC_RGBA8)
|
||||
* PVR (YUY2, PVRTC_RGB2, PVRTC_RGBA2, PVRTC_RGB4, PVRTC_RGBA4, ETC_RGB4, ETC2_RGB, ETC2_RGBA1, ETC2_RGBA8)
|
||||
* KTX (RHalf, RGHalf, RGBAHalf, RFloat, RGFloat, RGBAFloat, ATC_RGB4, ATC_RGBA8, EAC_R, EAC_R_SIGNED, EAC_RG, EAC_RG_SIGNED)
|
||||
* ASTC (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)
|
||||
* Audio clips: fsb, mp3, ogg, wav, xbox wav (including streams from resource files)
|
||||
* Fonts: ttf, otf
|
||||
* Text Assets
|
||||
* Shaders
|
||||
* Can convert .dds .pvr .astc file to .bmp .png or .jpeg
|
||||
* Can convert .fsb file to .wav
|
||||
* **AudioClip**: fsb, mp3, ogg, wav, m4a, xbox wav (including streams from resource files)
|
||||
* **Font**: ttf, otf
|
||||
* **TextAsset**
|
||||
* **Shader**
|
||||
* **MonoBehaviour**
|
||||
* Support convert almost all textures to bmp png or jpeg
|
||||
* 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
|
||||
* Diagnostics mode with useful tools for research
|
||||
|
||||
|
||||
#### UI guide
|
||||
## Usage
|
||||
|
||||
Requirements:
|
||||
|
||||
- [.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++ 2015 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=53840)
|
||||
|
||||
|
||||
## UI guide
|
||||
|
||||
| Item | Action
|
||||
| :---------------------------- | :----------------------------
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
//using System.Diagnostics; //remove this later
|
||||
using System.Text;
|
||||
|
||||
namespace Unity_Studio
|
||||
{
|
||||
@@ -31,6 +29,7 @@ namespace Unity_Studio
|
||||
public SortedDictionary<int, ClassStrStruct> ClassStructures = new SortedDictionary<int, ClassStrStruct>();
|
||||
|
||||
private bool baseDefinitions = false;
|
||||
private List<int[]> classIDs = new List<int[]>();//use for 5.5.0
|
||||
|
||||
public class UnityShared
|
||||
{
|
||||
@@ -84,7 +83,9 @@ namespace Unity_Studio
|
||||
break;
|
||||
}
|
||||
case 14://5.0.0 beta and final
|
||||
case 15://5.0.1 and up
|
||||
case 15://5.0.1 - 5.4
|
||||
case 16://??.. no sure
|
||||
case 17://5.5.0 and up
|
||||
{
|
||||
a_Stream.Position += 4;//azero
|
||||
m_Version = a_Stream.ReadStringToNull();
|
||||
@@ -94,7 +95,7 @@ namespace Unity_Studio
|
||||
}
|
||||
default:
|
||||
{
|
||||
//MessageBox.Show("Unsupported Unity version!", "Unity Studio Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
//MessageBox.Show("Unsupported Unity version!" + fileGen, "Unity Studio Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -163,10 +164,19 @@ namespace Unity_Studio
|
||||
asset.Offset = a_Stream.ReadInt32();
|
||||
asset.Offset += dataOffset;
|
||||
asset.Size = a_Stream.ReadInt32();
|
||||
asset.Type1 = a_Stream.ReadInt32();
|
||||
asset.Type2 = a_Stream.ReadUInt16();
|
||||
a_Stream.Position += 2;
|
||||
if (fileGen >= 15)
|
||||
if (fileGen > 15)
|
||||
{
|
||||
int index = a_Stream.ReadInt32();
|
||||
asset.Type1 = classIDs[index][0];
|
||||
asset.Type2 = (ushort)classIDs[index][1];
|
||||
}
|
||||
else
|
||||
{
|
||||
asset.Type1 = a_Stream.ReadInt32();
|
||||
asset.Type2 = a_Stream.ReadUInt16();
|
||||
a_Stream.Position += 2;
|
||||
}
|
||||
if (fileGen == 15)
|
||||
{
|
||||
byte unknownByte = a_Stream.ReadByte();
|
||||
//this is a single byte, not an int32
|
||||
@@ -184,7 +194,7 @@ namespace Unity_Studio
|
||||
}
|
||||
else
|
||||
{
|
||||
asset.TypeString = "unknown";
|
||||
asset.TypeString = "Unknown Type " + asset.Type2;
|
||||
}
|
||||
|
||||
asset.uniqueID = i.ToString(assetIDfmt);
|
||||
@@ -258,68 +268,127 @@ namespace Unity_Studio
|
||||
{
|
||||
int classID = a_Stream.ReadInt32();
|
||||
if (classID < 0) { a_Stream.Position += 16; }
|
||||
if (fileGen > 15)
|
||||
{
|
||||
a_Stream.ReadByte();
|
||||
int type1;
|
||||
if ((type1 = a_Stream.ReadInt16()) >= 0)
|
||||
{
|
||||
type1 = -1 - type1;
|
||||
a_Stream.Position += 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
type1 = classID;
|
||||
}
|
||||
classIDs.Add(new int[] { type1, classID });
|
||||
classID = type1;
|
||||
}
|
||||
a_Stream.Position += 16;
|
||||
|
||||
if (baseDefinitions)
|
||||
{
|
||||
#region cmmon string array
|
||||
string[] baseStrings = new string[1007];
|
||||
string[] baseStrings = new string[1016];
|
||||
baseStrings[0] = "AABB";
|
||||
baseStrings[5] = "AnimationClip";
|
||||
baseStrings[19] = "AnimationCurve";
|
||||
baseStrings[34] = "AnimationState";
|
||||
baseStrings[49] = "Array";
|
||||
baseStrings[55] = "Base";
|
||||
baseStrings[60] = "BitField";
|
||||
baseStrings[69] = "bitset";
|
||||
baseStrings[76] = "bool";
|
||||
baseStrings[81] = "char";
|
||||
baseStrings[86] = "ColorRGBA";
|
||||
baseStrings[96] = "Component";
|
||||
baseStrings[106] = "data";
|
||||
baseStrings[111] = "deque";
|
||||
baseStrings[117] = "double";
|
||||
baseStrings[124] = "dynamic_array";
|
||||
baseStrings[138] = "FastPropertyName";
|
||||
baseStrings[155] = "first";
|
||||
baseStrings[161] = "float";
|
||||
baseStrings[167] = "Font";
|
||||
baseStrings[172] = "GameObject";
|
||||
baseStrings[183] = "Generic Mono";
|
||||
baseStrings[196] = "GradientNEW";
|
||||
baseStrings[208] = "GUID";
|
||||
baseStrings[213] = "GUIStyle";
|
||||
baseStrings[222] = "int";
|
||||
baseStrings[226] = "list";
|
||||
baseStrings[231] = "long long";
|
||||
baseStrings[241] = "map";
|
||||
baseStrings[245] = "Matrix4x4f";
|
||||
baseStrings[262] = "NavMeshSettings";
|
||||
baseStrings[256] = "MdFour";
|
||||
baseStrings[263] = "MonoBehaviour";
|
||||
baseStrings[277] = "MonoScript";
|
||||
baseStrings[288] = "m_ByteSize";
|
||||
baseStrings[299] = "m_Curve";
|
||||
baseStrings[307] = "m_EditorClassIdentifier";
|
||||
baseStrings[331] = "m_EditorHideFlags";
|
||||
baseStrings[349] = "m_Enabled";
|
||||
baseStrings[359] = "m_ExtensionPtr";
|
||||
baseStrings[374] = "m_GameObject";
|
||||
baseStrings[387] = "m_Index";
|
||||
baseStrings[395] = "m_IsArray";
|
||||
baseStrings[405] = "m_IsStatic";
|
||||
baseStrings[416] = "m_MetaFlag";
|
||||
baseStrings[427] = "m_Name";
|
||||
baseStrings[434] = "m_ObjectHideFlags";
|
||||
baseStrings[452] = "m_PrefabInternal";
|
||||
baseStrings[469] = "m_PrefabParentObject";
|
||||
baseStrings[490] = "m_Script";
|
||||
baseStrings[499] = "m_StaticEditorFlags";
|
||||
baseStrings[519] = "m_Type";
|
||||
baseStrings[526] = "m_Version";
|
||||
baseStrings[536] = "Object";
|
||||
baseStrings[543] = "pair";
|
||||
baseStrings[548] = "PPtr<Component>";
|
||||
baseStrings[564] = "PPtr<GameObject>";
|
||||
baseStrings[581] = "PPtr<Material>";
|
||||
baseStrings[596] = "PPtr<MonoBehaviour>";
|
||||
baseStrings[616] = "PPtr<MonoScript>";
|
||||
baseStrings[633] = "PPtr<Object>";
|
||||
baseStrings[646] = "PPtr<Prefab>";
|
||||
baseStrings[659] = "PPtr<Sprite>";
|
||||
baseStrings[672] = "PPtr<TextAsset>";
|
||||
baseStrings[688] = "PPtr<Texture>";
|
||||
baseStrings[702] = "PPtr<Texture2D>";
|
||||
baseStrings[718] = "PPtr<Transform>";
|
||||
baseStrings[734] = "Prefab";
|
||||
baseStrings[741] = "Quaternionf";
|
||||
baseStrings[753] = "Rectf";
|
||||
baseStrings[759] = "RectInt";
|
||||
baseStrings[767] = "RectOffset";
|
||||
baseStrings[778] = "second";
|
||||
baseStrings[785] = "set";
|
||||
baseStrings[789] = "short";
|
||||
baseStrings[795] = "size";
|
||||
baseStrings[800] = "SInt16";
|
||||
baseStrings[814] = "int64";
|
||||
baseStrings[807] = "SInt32";
|
||||
baseStrings[814] = "SInt64";
|
||||
baseStrings[821] = "SInt8";
|
||||
baseStrings[827] = "staticvector";
|
||||
baseStrings[840] = "string";
|
||||
baseStrings[847] = "TextAsset";
|
||||
baseStrings[857] = "TextMesh";
|
||||
baseStrings[866] = "Texture";
|
||||
baseStrings[874] = "Texture2D";
|
||||
baseStrings[884] = "Transform";
|
||||
baseStrings[894] = "TypelessData";
|
||||
baseStrings[907] = "UInt16";
|
||||
baseStrings[914] = "UInt32";
|
||||
baseStrings[921] = "UInt64";
|
||||
baseStrings[928] = "UInt8";
|
||||
baseStrings[934] = "unsigned int";
|
||||
baseStrings[947] = "unsigned long long";
|
||||
baseStrings[966] = "unsigned short";
|
||||
baseStrings[981] = "vector";
|
||||
baseStrings[988] = "Vector2f";
|
||||
baseStrings[997] = "Vector3f";
|
||||
baseStrings[1006] = "Vector4f";
|
||||
baseStrings[1015] = "m_ScriptingClassIdentifier";
|
||||
#endregion
|
||||
|
||||
int varCount = a_Stream.ReadInt32();
|
||||
@@ -328,8 +397,8 @@ namespace Unity_Studio
|
||||
a_Stream.Position += varCount * 24;
|
||||
string varStrings = Encoding.UTF8.GetString(a_Stream.ReadBytes(stringSize));
|
||||
string className = "";
|
||||
StringBuilder classVarStr = new StringBuilder();
|
||||
|
||||
var classVarStr = new StringBuilder();
|
||||
var classVarStr2 = new StringBuilder();//用来export
|
||||
//build Class Structures
|
||||
a_Stream.Position -= varCount * 24 + stringSize;
|
||||
for (int i = 0; i < varCount; i++)
|
||||
@@ -357,18 +426,21 @@ namespace Unity_Studio
|
||||
int num1 = a_Stream.ReadInt32();
|
||||
|
||||
if (index == 0) { className = varTypeStr + " " + varNameStr; }
|
||||
else { classVarStr.AppendFormat("{0}{1} {2} {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, size); }
|
||||
else
|
||||
{
|
||||
classVarStr.AppendFormat("{0}{1} {2} {3}\r\n", (new string('\t', level - 1)), varTypeStr, varNameStr, size);
|
||||
classVarStr2.AppendFormat("{0}\t{1}\t{2}\r\n", level - 1, varTypeStr, varNameStr);
|
||||
}
|
||||
|
||||
//for (int t = 0; t < level; t++) { Debug.Write("\t"); }
|
||||
//Debug.WriteLine(varTypeStr + " " + varNameStr + " " + size);
|
||||
}
|
||||
a_Stream.Position += stringSize;
|
||||
|
||||
var aClass = new ClassStrStruct() { ID = classID, Text = className, members = classVarStr.ToString() };
|
||||
var aClass = new ClassStrStruct() { ID = classID, Text = className, members = classVarStr.ToString(), members2 = classVarStr2.ToString() };
|
||||
aClass.SubItems.Add(classID.ToString());
|
||||
ClassStructures.Add(classID, aClass);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -123,80 +123,109 @@ namespace Unity_Studio
|
||||
var bundleSize = b_Stream.ReadInt64();
|
||||
int compressedSize = b_Stream.ReadInt32();
|
||||
int uncompressedSize = b_Stream.ReadInt32();
|
||||
int flag = b_Stream.ReadInt32() & 0x3F;
|
||||
var entryinfoBytes = b_Stream.ReadBytes(compressedSize);
|
||||
EndianStream entryinfo;
|
||||
if (flag == 3)//LZ4
|
||||
int flag = b_Stream.ReadInt32();
|
||||
byte[] blocksInfoBytes;
|
||||
if ((flag & 0x80) != 0)//at end of file
|
||||
{
|
||||
byte[] uncompressedBytes = new byte[uncompressedSize];
|
||||
using (var mstream = new MemoryStream(entryinfoBytes))
|
||||
{
|
||||
var decoder = new Lz4DecoderStream(mstream);
|
||||
decoder.Read(uncompressedBytes, 0, uncompressedSize);
|
||||
decoder.Dispose();
|
||||
}
|
||||
entryinfo = new EndianStream(new MemoryStream(uncompressedBytes), EndianType.BigEndian);
|
||||
}
|
||||
else if(flag == 1)//LZMA
|
||||
{
|
||||
entryinfo = new EndianStream(SevenZip.Compression.LZMA.SevenZipHelper.StreamDecompress(new MemoryStream(entryinfoBytes)), EndianType.BigEndian);
|
||||
var position = b_Stream.Position;
|
||||
b_Stream.Position = b_Stream.BaseStream.Length - compressedSize;
|
||||
blocksInfoBytes = b_Stream.ReadBytes(compressedSize);
|
||||
b_Stream.Position = position;
|
||||
}
|
||||
else
|
||||
{
|
||||
entryinfo = new EndianStream(new MemoryStream(entryinfoBytes), EndianType.BigEndian);
|
||||
blocksInfoBytes = b_Stream.ReadBytes(compressedSize);
|
||||
}
|
||||
using (entryinfo)
|
||||
EndianStream blocksInfo;
|
||||
switch (flag & 0x3F)
|
||||
{
|
||||
entryinfo.Position = 0x10;
|
||||
int blockcount = entryinfo.ReadInt32();
|
||||
EndianStream assetsData;
|
||||
var assetsDatam = new MemoryStream();
|
||||
for (int i = 0; i < blockcount; i++)
|
||||
{
|
||||
uncompressedSize = entryinfo.ReadInt32();
|
||||
compressedSize = entryinfo.ReadInt32();
|
||||
flag = entryinfo.ReadInt16() & 0x3F;
|
||||
var compressedBytes = b_Stream.ReadBytes(compressedSize);
|
||||
if (flag == 3)//LZ4
|
||||
default:
|
||||
case 0://None
|
||||
{
|
||||
var uncompressedBytes = new byte[uncompressedSize];
|
||||
using (var mstream = new MemoryStream(compressedBytes))
|
||||
blocksInfo = new EndianStream(new MemoryStream(blocksInfoBytes), EndianType.BigEndian);
|
||||
break;
|
||||
}
|
||||
case 1://LZMA
|
||||
{
|
||||
blocksInfo = new EndianStream(SevenZip.Compression.LZMA.SevenZipHelper.StreamDecompress(new MemoryStream(blocksInfoBytes)), EndianType.BigEndian);
|
||||
break;
|
||||
}
|
||||
case 2://LZ4
|
||||
case 3://LZ4HC
|
||||
{
|
||||
byte[] uncompressedBytes = new byte[uncompressedSize];
|
||||
using (var mstream = new MemoryStream(blocksInfoBytes))
|
||||
{
|
||||
var decoder = new Lz4DecoderStream(mstream);
|
||||
decoder.Read(uncompressedBytes, 0, uncompressedSize);
|
||||
decoder.Dispose();
|
||||
}
|
||||
assetsDatam.Write(uncompressedBytes, 0, uncompressedSize);
|
||||
blocksInfo = new EndianStream(new MemoryStream(uncompressedBytes), EndianType.BigEndian);
|
||||
break;
|
||||
}
|
||||
else if(flag == 1)//LZMA
|
||||
//case 4:LZHAM?
|
||||
}
|
||||
using (blocksInfo)
|
||||
{
|
||||
blocksInfo.Position = 0x10;
|
||||
int blockcount = blocksInfo.ReadInt32();
|
||||
EndianStream assetsData;
|
||||
var assetsDataStream = new MemoryStream();
|
||||
for (int i = 0; i < blockcount; i++)
|
||||
{
|
||||
uncompressedSize = blocksInfo.ReadInt32();
|
||||
compressedSize = blocksInfo.ReadInt32();
|
||||
flag = blocksInfo.ReadInt16();
|
||||
var compressedBytes = b_Stream.ReadBytes(compressedSize);
|
||||
switch (flag & 0x3F)
|
||||
{
|
||||
var uncompressedBytes = new byte[uncompressedSize];
|
||||
using (var mstream = new MemoryStream(compressedBytes))
|
||||
{
|
||||
var decoder = SevenZip.Compression.LZMA.SevenZipHelper.StreamDecompress(mstream, uncompressedSize);
|
||||
decoder.Read(uncompressedBytes, 0, uncompressedSize);
|
||||
decoder.Dispose();
|
||||
}
|
||||
assetsDatam.Write(uncompressedBytes, 0, uncompressedSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
assetsDatam.Write(compressedBytes, 0, compressedSize);
|
||||
default:
|
||||
case 0://None
|
||||
{
|
||||
assetsDataStream.Write(compressedBytes, 0, compressedSize);
|
||||
break;
|
||||
}
|
||||
case 1://LZMA
|
||||
{
|
||||
var uncompressedBytes = new byte[uncompressedSize];
|
||||
using (var mstream = new MemoryStream(compressedBytes))
|
||||
{
|
||||
var decoder = SevenZip.Compression.LZMA.SevenZipHelper.StreamDecompress(mstream, uncompressedSize);
|
||||
decoder.Read(uncompressedBytes, 0, uncompressedSize);
|
||||
decoder.Dispose();
|
||||
}
|
||||
assetsDataStream.Write(uncompressedBytes, 0, uncompressedSize);
|
||||
break;
|
||||
}
|
||||
case 2://LZ4
|
||||
case 3://LZ4HC
|
||||
{
|
||||
var uncompressedBytes = new byte[uncompressedSize];
|
||||
using (var mstream = new MemoryStream(compressedBytes))
|
||||
{
|
||||
var decoder = new Lz4DecoderStream(mstream);
|
||||
decoder.Read(uncompressedBytes, 0, uncompressedSize);
|
||||
decoder.Dispose();
|
||||
}
|
||||
assetsDataStream.Write(uncompressedBytes, 0, uncompressedSize);
|
||||
break;
|
||||
}
|
||||
//case 4:LZHAM?
|
||||
}
|
||||
}
|
||||
assetsData = new EndianStream(assetsDatam, EndianType.BigEndian);
|
||||
assetsData = new EndianStream(assetsDataStream, EndianType.BigEndian);
|
||||
using (assetsData)
|
||||
{
|
||||
var entryinfo_count = entryinfo.ReadInt32();
|
||||
var entryinfo_count = blocksInfo.ReadInt32();
|
||||
for (int i = 0; i < entryinfo_count; i++)
|
||||
{
|
||||
MemoryAssetsFile memFile = new MemoryAssetsFile();
|
||||
var entryinfo_offset = entryinfo.ReadInt64();
|
||||
var entryinfo_size = entryinfo.ReadInt64();
|
||||
var unknown = entryinfo.ReadInt32();
|
||||
memFile.fileName = entryinfo.ReadStringToNull();
|
||||
var memFile = new MemoryAssetsFile();
|
||||
var entryinfo_offset = blocksInfo.ReadInt64();
|
||||
var entryinfo_size = blocksInfo.ReadInt64();
|
||||
var unknown = blocksInfo.ReadInt32();
|
||||
memFile.fileName = blocksInfo.ReadStringToNull();
|
||||
assetsData.Position = entryinfo_offset;
|
||||
byte[] buffer = new byte[entryinfo_size];
|
||||
var buffer = new byte[entryinfo_size];
|
||||
assetsData.Read(buffer, 0, (int)entryinfo_size);
|
||||
memFile.memStream = new MemoryStream(buffer);
|
||||
MemoryAssetsFileList.Add(memFile);
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace Unity_Studio
|
||||
{
|
||||
public int ID;
|
||||
public string members;
|
||||
public string members2;
|
||||
}
|
||||
|
||||
public class ClassIDReference
|
||||
@@ -208,6 +209,9 @@ namespace Unity_Studio
|
||||
Names[272] = "AudioMixerSnapshot";
|
||||
Names[273] = "AudioMixerGroup";
|
||||
Names[290] = "AssetBundleManifest";
|
||||
Names[300] = "RuntimeInitializeOnLoadManager";
|
||||
Names[301] = "CloudWebServicesManager";
|
||||
Names[310] = "UnityConnectSettings";
|
||||
Names[1001] = "Prefab";
|
||||
Names[1002] = "EditorExtensionImpl";
|
||||
Names[1003] = "AssetImporter";
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
|
||||
@@ -21,41 +20,9 @@ namespace Unity_Studio
|
||||
|
||||
public EndianStream(Stream stream, EndianType endian) : base(stream) { }
|
||||
|
||||
~EndianStream()
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public long Position { get { return base.BaseStream.Position; } set { base.BaseStream.Position = value; } }
|
||||
|
||||
public new void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override bool ReadBoolean()
|
||||
{
|
||||
return base.ReadBoolean();
|
||||
}
|
||||
|
||||
public override byte ReadByte()
|
||||
{
|
||||
try
|
||||
{
|
||||
return base.ReadByte();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public override char ReadChar()
|
||||
{
|
||||
return base.ReadChar();
|
||||
}
|
||||
|
||||
public override Int16 ReadInt16()
|
||||
public override short ReadInt16()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@@ -65,7 +32,7 @@ namespace Unity_Studio
|
||||
}
|
||||
else return base.ReadInt16();
|
||||
}
|
||||
|
||||
|
||||
public override int ReadInt32()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
@@ -76,8 +43,8 @@ namespace Unity_Studio
|
||||
}
|
||||
else return base.ReadInt32();
|
||||
}
|
||||
|
||||
public override Int64 ReadInt64()
|
||||
|
||||
public override long ReadInt64()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@@ -87,8 +54,8 @@ namespace Unity_Studio
|
||||
}
|
||||
else return base.ReadInt64();
|
||||
}
|
||||
|
||||
public override UInt16 ReadUInt16()
|
||||
|
||||
public override ushort ReadUInt16()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@@ -98,8 +65,8 @@ namespace Unity_Studio
|
||||
}
|
||||
else return base.ReadUInt16();
|
||||
}
|
||||
|
||||
public override UInt32 ReadUInt32()
|
||||
|
||||
public override uint ReadUInt32()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@@ -110,7 +77,7 @@ namespace Unity_Studio
|
||||
else return base.ReadUInt32();
|
||||
}
|
||||
|
||||
public override UInt64 ReadUInt64()
|
||||
public override ulong ReadUInt64()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@@ -120,8 +87,8 @@ namespace Unity_Studio
|
||||
}
|
||||
else return base.ReadUInt64();
|
||||
}
|
||||
|
||||
public override Single ReadSingle()
|
||||
|
||||
public override float ReadSingle()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@@ -131,8 +98,8 @@ namespace Unity_Studio
|
||||
}
|
||||
else return base.ReadSingle();
|
||||
}
|
||||
|
||||
public override Double ReadDouble()
|
||||
|
||||
public override double ReadDouble()
|
||||
{
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
@@ -143,14 +110,9 @@ namespace Unity_Studio
|
||||
else return base.ReadDouble();
|
||||
}
|
||||
|
||||
public override string ReadString()
|
||||
{
|
||||
return base.ReadString();
|
||||
}
|
||||
|
||||
public string ReadASCII(int length)
|
||||
{
|
||||
return ASCIIEncoding.ASCII.GetString(base.ReadBytes(length));
|
||||
return Encoding.ASCII.GetString(base.ReadBytes(length));
|
||||
}
|
||||
|
||||
public void AlignStream(int alignment)
|
||||
@@ -167,7 +129,7 @@ namespace Unity_Studio
|
||||
{
|
||||
byte[] stringData = new byte[length];
|
||||
base.Read(stringData, 0, length);
|
||||
var result = System.Text.Encoding.UTF8.GetString(stringData); //must verify strange characters in PS3
|
||||
var result = Encoding.UTF8.GetString(stringData); //must verify strange characters in PS3
|
||||
|
||||
/*string result = "";
|
||||
char c;
|
||||
@@ -182,20 +144,14 @@ namespace Unity_Studio
|
||||
}
|
||||
else { return ""; }
|
||||
}
|
||||
|
||||
|
||||
public string ReadStringToNull()
|
||||
{
|
||||
string result = "";
|
||||
char c;
|
||||
for (int i = 0; i < base.BaseStream.Length; i++)
|
||||
{
|
||||
if ((c = (char)base.ReadByte()) == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
result += c.ToString();
|
||||
}
|
||||
return result;
|
||||
var bytes = new List<byte>();
|
||||
byte b;
|
||||
while ((b = ReadByte()) != 0)
|
||||
bytes.Add(b);
|
||||
return Encoding.UTF8.GetString(bytes.ToArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
139
Unity Studio/ExportOptions.Designer.cs
generated
139
Unity Studio/ExportOptions.Designer.cs
generated
@@ -72,9 +72,11 @@
|
||||
this.includeBox.Controls.Add(this.camerasBox);
|
||||
this.includeBox.Controls.Add(this.exportDeformers);
|
||||
this.includeBox.Controls.Add(this.geometryBox);
|
||||
this.includeBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.includeBox.Location = new System.Drawing.Point(16, 15);
|
||||
this.includeBox.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.includeBox.Name = "includeBox";
|
||||
this.includeBox.Size = new System.Drawing.Size(249, 266);
|
||||
this.includeBox.Padding = new System.Windows.Forms.Padding(4);
|
||||
this.includeBox.Size = new System.Drawing.Size(332, 334);
|
||||
this.includeBox.TabIndex = 0;
|
||||
this.includeBox.TabStop = false;
|
||||
this.includeBox.Text = "Include";
|
||||
@@ -82,9 +84,10 @@
|
||||
// convertDummies
|
||||
//
|
||||
this.convertDummies.AutoSize = true;
|
||||
this.convertDummies.Location = new System.Drawing.Point(14, 164);
|
||||
this.convertDummies.Location = new System.Drawing.Point(19, 205);
|
||||
this.convertDummies.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.convertDummies.Name = "convertDummies";
|
||||
this.convertDummies.Size = new System.Drawing.Size(228, 16);
|
||||
this.convertDummies.Size = new System.Drawing.Size(302, 20);
|
||||
this.convertDummies.TabIndex = 5;
|
||||
this.convertDummies.Text = "Convert Deforming Dummies to Bones";
|
||||
this.convertDummies.UseVisualStyleBackColor = true;
|
||||
@@ -94,9 +97,10 @@
|
||||
//
|
||||
this.embedBox.AutoSize = true;
|
||||
this.embedBox.Enabled = false;
|
||||
this.embedBox.Location = new System.Drawing.Point(14, 230);
|
||||
this.embedBox.Location = new System.Drawing.Point(19, 288);
|
||||
this.embedBox.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.embedBox.Name = "embedBox";
|
||||
this.embedBox.Size = new System.Drawing.Size(90, 16);
|
||||
this.embedBox.Size = new System.Drawing.Size(118, 20);
|
||||
this.embedBox.TabIndex = 4;
|
||||
this.embedBox.Text = "Embed Media";
|
||||
this.embedBox.UseVisualStyleBackColor = true;
|
||||
@@ -105,9 +109,10 @@
|
||||
//
|
||||
this.lightsBox.AutoSize = true;
|
||||
this.lightsBox.Enabled = false;
|
||||
this.lightsBox.Location = new System.Drawing.Point(14, 208);
|
||||
this.lightsBox.Location = new System.Drawing.Point(19, 260);
|
||||
this.lightsBox.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.lightsBox.Name = "lightsBox";
|
||||
this.lightsBox.Size = new System.Drawing.Size(60, 16);
|
||||
this.lightsBox.Size = new System.Drawing.Size(78, 20);
|
||||
this.lightsBox.TabIndex = 3;
|
||||
this.lightsBox.Text = "Lights";
|
||||
this.lightsBox.UseVisualStyleBackColor = true;
|
||||
@@ -116,9 +121,10 @@
|
||||
//
|
||||
this.camerasBox.AutoSize = true;
|
||||
this.camerasBox.Enabled = false;
|
||||
this.camerasBox.Location = new System.Drawing.Point(14, 186);
|
||||
this.camerasBox.Location = new System.Drawing.Point(19, 232);
|
||||
this.camerasBox.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.camerasBox.Name = "camerasBox";
|
||||
this.camerasBox.Size = new System.Drawing.Size(66, 16);
|
||||
this.camerasBox.Size = new System.Drawing.Size(86, 20);
|
||||
this.camerasBox.TabIndex = 2;
|
||||
this.camerasBox.Text = "Cameras";
|
||||
this.camerasBox.UseVisualStyleBackColor = true;
|
||||
@@ -126,9 +132,10 @@
|
||||
// exportDeformers
|
||||
//
|
||||
this.exportDeformers.AutoSize = true;
|
||||
this.exportDeformers.Location = new System.Drawing.Point(14, 142);
|
||||
this.exportDeformers.Location = new System.Drawing.Point(19, 178);
|
||||
this.exportDeformers.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.exportDeformers.Name = "exportDeformers";
|
||||
this.exportDeformers.Size = new System.Drawing.Size(108, 16);
|
||||
this.exportDeformers.Size = new System.Drawing.Size(142, 20);
|
||||
this.exportDeformers.TabIndex = 1;
|
||||
this.exportDeformers.Text = "Skin Deformers";
|
||||
this.exportDeformers.UseVisualStyleBackColor = true;
|
||||
@@ -141,9 +148,11 @@
|
||||
this.geometryBox.Controls.Add(this.exportUVs);
|
||||
this.geometryBox.Controls.Add(this.exportTangents);
|
||||
this.geometryBox.Controls.Add(this.exportNormals);
|
||||
this.geometryBox.Location = new System.Drawing.Point(7, 18);
|
||||
this.geometryBox.Location = new System.Drawing.Point(9, 22);
|
||||
this.geometryBox.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.geometryBox.Name = "geometryBox";
|
||||
this.geometryBox.Size = new System.Drawing.Size(235, 121);
|
||||
this.geometryBox.Padding = new System.Windows.Forms.Padding(4);
|
||||
this.geometryBox.Size = new System.Drawing.Size(313, 161);
|
||||
this.geometryBox.TabIndex = 0;
|
||||
this.geometryBox.TabStop = false;
|
||||
this.geometryBox.Text = "Geometry";
|
||||
@@ -153,9 +162,10 @@
|
||||
this.exportColors.AutoSize = true;
|
||||
this.exportColors.Checked = true;
|
||||
this.exportColors.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.exportColors.Location = new System.Drawing.Point(7, 85);
|
||||
this.exportColors.Location = new System.Drawing.Point(9, 106);
|
||||
this.exportColors.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.exportColors.Name = "exportColors";
|
||||
this.exportColors.Size = new System.Drawing.Size(102, 16);
|
||||
this.exportColors.Size = new System.Drawing.Size(134, 20);
|
||||
this.exportColors.TabIndex = 3;
|
||||
this.exportColors.Text = "Vertex Colors";
|
||||
this.exportColors.UseVisualStyleBackColor = true;
|
||||
@@ -166,9 +176,10 @@
|
||||
this.exportUVs.AutoSize = true;
|
||||
this.exportUVs.Checked = true;
|
||||
this.exportUVs.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.exportUVs.Location = new System.Drawing.Point(7, 63);
|
||||
this.exportUVs.Location = new System.Drawing.Point(9, 79);
|
||||
this.exportUVs.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.exportUVs.Name = "exportUVs";
|
||||
this.exportUVs.Size = new System.Drawing.Size(108, 16);
|
||||
this.exportUVs.Size = new System.Drawing.Size(142, 20);
|
||||
this.exportUVs.TabIndex = 2;
|
||||
this.exportUVs.Text = "UV Coordinates";
|
||||
this.exportUVs.UseVisualStyleBackColor = true;
|
||||
@@ -177,9 +188,10 @@
|
||||
// exportTangents
|
||||
//
|
||||
this.exportTangents.AutoSize = true;
|
||||
this.exportTangents.Location = new System.Drawing.Point(7, 41);
|
||||
this.exportTangents.Location = new System.Drawing.Point(9, 51);
|
||||
this.exportTangents.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.exportTangents.Name = "exportTangents";
|
||||
this.exportTangents.Size = new System.Drawing.Size(72, 16);
|
||||
this.exportTangents.Size = new System.Drawing.Size(94, 20);
|
||||
this.exportTangents.TabIndex = 1;
|
||||
this.exportTangents.Text = "Tangents";
|
||||
this.exportTangents.UseVisualStyleBackColor = true;
|
||||
@@ -190,9 +202,10 @@
|
||||
this.exportNormals.AutoSize = true;
|
||||
this.exportNormals.Checked = true;
|
||||
this.exportNormals.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.exportNormals.Location = new System.Drawing.Point(7, 18);
|
||||
this.exportNormals.Location = new System.Drawing.Point(9, 22);
|
||||
this.exportNormals.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.exportNormals.Name = "exportNormals";
|
||||
this.exportNormals.Size = new System.Drawing.Size(66, 16);
|
||||
this.exportNormals.Size = new System.Drawing.Size(86, 20);
|
||||
this.exportNormals.TabIndex = 0;
|
||||
this.exportNormals.Text = "Normals";
|
||||
this.exportNormals.UseVisualStyleBackColor = true;
|
||||
@@ -205,9 +218,11 @@
|
||||
this.advancedBox.Controls.Add(this.upAxis);
|
||||
this.advancedBox.Controls.Add(this.scaleFactor);
|
||||
this.advancedBox.Controls.Add(this.scaleLabel);
|
||||
this.advancedBox.Location = new System.Drawing.Point(12, 284);
|
||||
this.advancedBox.Location = new System.Drawing.Point(16, 355);
|
||||
this.advancedBox.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.advancedBox.Name = "advancedBox";
|
||||
this.advancedBox.Size = new System.Drawing.Size(249, 77);
|
||||
this.advancedBox.Padding = new System.Windows.Forms.Padding(4);
|
||||
this.advancedBox.Size = new System.Drawing.Size(332, 96);
|
||||
this.advancedBox.TabIndex = 5;
|
||||
this.advancedBox.TabStop = false;
|
||||
this.advancedBox.Text = "Advanced Options";
|
||||
@@ -215,9 +230,10 @@
|
||||
// axisLabel
|
||||
//
|
||||
this.axisLabel.AutoSize = true;
|
||||
this.axisLabel.Location = new System.Drawing.Point(6, 40);
|
||||
this.axisLabel.Location = new System.Drawing.Point(8, 50);
|
||||
this.axisLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.axisLabel.Name = "axisLabel";
|
||||
this.axisLabel.Size = new System.Drawing.Size(53, 12);
|
||||
this.axisLabel.Size = new System.Drawing.Size(72, 16);
|
||||
this.axisLabel.TabIndex = 3;
|
||||
this.axisLabel.Text = "Up Axis:";
|
||||
//
|
||||
@@ -226,10 +242,11 @@
|
||||
this.upAxis.FormattingEnabled = true;
|
||||
this.upAxis.Items.AddRange(new object[] {
|
||||
"Y-up"});
|
||||
this.upAxis.Location = new System.Drawing.Point(58, 37);
|
||||
this.upAxis.Location = new System.Drawing.Point(88, 47);
|
||||
this.upAxis.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.upAxis.MaxDropDownItems = 2;
|
||||
this.upAxis.Name = "upAxis";
|
||||
this.upAxis.Size = new System.Drawing.Size(70, 20);
|
||||
this.upAxis.Size = new System.Drawing.Size(92, 23);
|
||||
this.upAxis.TabIndex = 2;
|
||||
//
|
||||
// scaleFactor
|
||||
@@ -240,9 +257,10 @@
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.scaleFactor.Location = new System.Drawing.Point(82, 13);
|
||||
this.scaleFactor.Location = new System.Drawing.Point(128, 17);
|
||||
this.scaleFactor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.scaleFactor.Name = "scaleFactor";
|
||||
this.scaleFactor.Size = new System.Drawing.Size(46, 21);
|
||||
this.scaleFactor.Size = new System.Drawing.Size(61, 25);
|
||||
this.scaleFactor.TabIndex = 1;
|
||||
this.scaleFactor.Value = new decimal(new int[] {
|
||||
254,
|
||||
@@ -253,17 +271,19 @@
|
||||
// scaleLabel
|
||||
//
|
||||
this.scaleLabel.AutoSize = true;
|
||||
this.scaleLabel.Location = new System.Drawing.Point(6, 15);
|
||||
this.scaleLabel.Location = new System.Drawing.Point(8, 19);
|
||||
this.scaleLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.scaleLabel.Name = "scaleLabel";
|
||||
this.scaleLabel.Size = new System.Drawing.Size(83, 12);
|
||||
this.scaleLabel.Size = new System.Drawing.Size(112, 16);
|
||||
this.scaleLabel.TabIndex = 0;
|
||||
this.scaleLabel.Text = "Scale Factor:";
|
||||
//
|
||||
// fbxOKbutton
|
||||
//
|
||||
this.fbxOKbutton.Location = new System.Drawing.Point(332, 364);
|
||||
this.fbxOKbutton.Location = new System.Drawing.Point(443, 455);
|
||||
this.fbxOKbutton.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.fbxOKbutton.Name = "fbxOKbutton";
|
||||
this.fbxOKbutton.Size = new System.Drawing.Size(75, 21);
|
||||
this.fbxOKbutton.Size = new System.Drawing.Size(100, 26);
|
||||
this.fbxOKbutton.TabIndex = 6;
|
||||
this.fbxOKbutton.Text = "OK";
|
||||
this.fbxOKbutton.UseVisualStyleBackColor = true;
|
||||
@@ -272,9 +292,10 @@
|
||||
// fbxCancel
|
||||
//
|
||||
this.fbxCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.fbxCancel.Location = new System.Drawing.Point(420, 364);
|
||||
this.fbxCancel.Location = new System.Drawing.Point(560, 455);
|
||||
this.fbxCancel.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.fbxCancel.Name = "fbxCancel";
|
||||
this.fbxCancel.Size = new System.Drawing.Size(75, 21);
|
||||
this.fbxCancel.Size = new System.Drawing.Size(100, 26);
|
||||
this.fbxCancel.TabIndex = 7;
|
||||
this.fbxCancel.Text = "Cancel";
|
||||
this.fbxCancel.UseVisualStyleBackColor = true;
|
||||
@@ -288,9 +309,10 @@
|
||||
// showExpOpt
|
||||
//
|
||||
this.showExpOpt.AutoSize = true;
|
||||
this.showExpOpt.Location = new System.Drawing.Point(12, 367);
|
||||
this.showExpOpt.Location = new System.Drawing.Point(16, 459);
|
||||
this.showExpOpt.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.showExpOpt.Name = "showExpOpt";
|
||||
this.showExpOpt.Size = new System.Drawing.Size(222, 16);
|
||||
this.showExpOpt.Size = new System.Drawing.Size(294, 20);
|
||||
this.showExpOpt.TabIndex = 8;
|
||||
this.showExpOpt.Text = "Show this dialog for every export";
|
||||
this.showExpOpt.UseVisualStyleBackColor = true;
|
||||
@@ -300,9 +322,11 @@
|
||||
this.groupBox1.Controls.Add(this.convertfsb);
|
||||
this.groupBox1.Controls.Add(this.panel1);
|
||||
this.groupBox1.Controls.Add(this.converttexture);
|
||||
this.groupBox1.Location = new System.Drawing.Point(267, 12);
|
||||
this.groupBox1.Location = new System.Drawing.Point(356, 15);
|
||||
this.groupBox1.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(228, 349);
|
||||
this.groupBox1.Padding = new System.Windows.Forms.Padding(4);
|
||||
this.groupBox1.Size = new System.Drawing.Size(304, 436);
|
||||
this.groupBox1.TabIndex = 9;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Convert";
|
||||
@@ -312,9 +336,10 @@
|
||||
this.convertfsb.AutoSize = true;
|
||||
this.convertfsb.Checked = true;
|
||||
this.convertfsb.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.convertfsb.Location = new System.Drawing.Point(8, 81);
|
||||
this.convertfsb.Location = new System.Drawing.Point(11, 101);
|
||||
this.convertfsb.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.convertfsb.Name = "convertfsb";
|
||||
this.convertfsb.Size = new System.Drawing.Size(132, 16);
|
||||
this.convertfsb.Size = new System.Drawing.Size(174, 20);
|
||||
this.convertfsb.TabIndex = 6;
|
||||
this.convertfsb.Text = "Convert FSB to WAV";
|
||||
this.convertfsb.UseVisualStyleBackColor = true;
|
||||
@@ -324,17 +349,19 @@
|
||||
this.panel1.Controls.Add(this.tojpg);
|
||||
this.panel1.Controls.Add(this.topng);
|
||||
this.panel1.Controls.Add(this.tobmp);
|
||||
this.panel1.Location = new System.Drawing.Point(30, 42);
|
||||
this.panel1.Location = new System.Drawing.Point(40, 52);
|
||||
this.panel1.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(146, 30);
|
||||
this.panel1.Size = new System.Drawing.Size(195, 38);
|
||||
this.panel1.TabIndex = 5;
|
||||
//
|
||||
// tojpg
|
||||
//
|
||||
this.tojpg.AutoSize = true;
|
||||
this.tojpg.Location = new System.Drawing.Point(97, 6);
|
||||
this.tojpg.Location = new System.Drawing.Point(129, 8);
|
||||
this.tojpg.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tojpg.Name = "tojpg";
|
||||
this.tojpg.Size = new System.Drawing.Size(47, 16);
|
||||
this.tojpg.Size = new System.Drawing.Size(61, 20);
|
||||
this.tojpg.TabIndex = 4;
|
||||
this.tojpg.Text = "JPEG";
|
||||
this.tojpg.UseVisualStyleBackColor = true;
|
||||
@@ -343,9 +370,10 @@
|
||||
//
|
||||
this.topng.AutoSize = true;
|
||||
this.topng.Checked = true;
|
||||
this.topng.Location = new System.Drawing.Point(50, 6);
|
||||
this.topng.Location = new System.Drawing.Point(67, 8);
|
||||
this.topng.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.topng.Name = "topng";
|
||||
this.topng.Size = new System.Drawing.Size(41, 16);
|
||||
this.topng.Size = new System.Drawing.Size(53, 20);
|
||||
this.topng.TabIndex = 3;
|
||||
this.topng.TabStop = true;
|
||||
this.topng.Text = "PNG";
|
||||
@@ -354,9 +382,10 @@
|
||||
// tobmp
|
||||
//
|
||||
this.tobmp.AutoSize = true;
|
||||
this.tobmp.Location = new System.Drawing.Point(3, 6);
|
||||
this.tobmp.Location = new System.Drawing.Point(4, 8);
|
||||
this.tobmp.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tobmp.Name = "tobmp";
|
||||
this.tobmp.Size = new System.Drawing.Size(41, 16);
|
||||
this.tobmp.Size = new System.Drawing.Size(53, 20);
|
||||
this.tobmp.TabIndex = 2;
|
||||
this.tobmp.Text = "BMP";
|
||||
this.tobmp.UseVisualStyleBackColor = true;
|
||||
@@ -366,9 +395,10 @@
|
||||
this.converttexture.AutoSize = true;
|
||||
this.converttexture.Checked = true;
|
||||
this.converttexture.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.converttexture.Location = new System.Drawing.Point(8, 20);
|
||||
this.converttexture.Location = new System.Drawing.Point(11, 25);
|
||||
this.converttexture.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.converttexture.Name = "converttexture";
|
||||
this.converttexture.Size = new System.Drawing.Size(192, 16);
|
||||
this.converttexture.Size = new System.Drawing.Size(254, 20);
|
||||
this.converttexture.TabIndex = 1;
|
||||
this.converttexture.Text = "Convert Texture (If support)";
|
||||
this.converttexture.UseVisualStyleBackColor = true;
|
||||
@@ -376,10 +406,10 @@
|
||||
// ExportOptions
|
||||
//
|
||||
this.AcceptButton = this.fbxOKbutton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.fbxCancel;
|
||||
this.ClientSize = new System.Drawing.Size(513, 392);
|
||||
this.ClientSize = new System.Drawing.Size(684, 490);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.showExpOpt);
|
||||
this.Controls.Add(this.fbxCancel);
|
||||
@@ -387,6 +417,7 @@
|
||||
this.Controls.Add(this.advancedBox);
|
||||
this.Controls.Add(this.includeBox);
|
||||
this.HelpButton = true;
|
||||
this.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ExportOptions";
|
||||
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.6.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.6.0.0")]
|
||||
[assembly: AssemblyVersion("0.6.5.0")]
|
||||
[assembly: AssemblyFileVersion("0.6.5.0")]
|
||||
|
||||
10
Unity Studio/Properties/Resources.Designer.cs
generated
10
Unity Studio/Properties/Resources.Designer.cs
generated
@@ -69,5 +69,15 @@ namespace Unity_Studio.Properties {
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似于 (Icon) 的 System.Drawing.Icon 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon unity {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("unity", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,4 +121,7 @@
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
</root>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 17 KiB |
@@ -164,9 +164,13 @@ namespace Unity_Studio
|
||||
preloadData.extension = ".fsb";
|
||||
preloadData.InfoText += "MP3";//not sure
|
||||
break;
|
||||
case 7:
|
||||
preloadData.extension = ".m4a";
|
||||
preloadData.InfoText += "M4a";
|
||||
break;
|
||||
}
|
||||
|
||||
if (preloadData.extension == "")
|
||||
if (preloadData.extension == null)
|
||||
{
|
||||
preloadData.extension = ".AudioClip";
|
||||
preloadData.InfoText += "Unknown";
|
||||
|
||||
@@ -27,107 +27,162 @@ namespace Unity_Studio
|
||||
|
||||
if (readSwitch)
|
||||
{
|
||||
int m_AsciiStartOffset = a_Stream.ReadInt32();
|
||||
|
||||
if (sourceFile.version[0] <= 3)
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)
|
||||
{
|
||||
int m_FontCountX = a_Stream.ReadInt32();
|
||||
int m_FontCountY = a_Stream.ReadInt32();
|
||||
}
|
||||
|
||||
float m_Kerning = a_Stream.ReadSingle();
|
||||
float m_LineSpacing = a_Stream.ReadSingle();
|
||||
|
||||
if (sourceFile.version[0] <= 3)
|
||||
{
|
||||
int m_PerCharacterKerning_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_PerCharacterKerning_size; i++)
|
||||
var m_LineSpacing = a_Stream.ReadSingle();
|
||||
var m_DefaultMaterial = sourceFile.ReadPPtr();
|
||||
var m_FontSize = a_Stream.ReadSingle();
|
||||
var m_Texture = sourceFile.ReadPPtr();
|
||||
int m_AsciiStartOffset = a_Stream.ReadInt32();
|
||||
var m_Tracking = a_Stream.ReadSingle();
|
||||
var m_CharacterSpacing = a_Stream.ReadInt32();
|
||||
var m_CharacterPadding = a_Stream.ReadInt32();
|
||||
var m_ConvertCase = a_Stream.ReadInt32();
|
||||
int m_CharacterRects_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_CharacterRects_size; i++)
|
||||
{
|
||||
int first = a_Stream.ReadInt32();
|
||||
int index = a_Stream.ReadInt32();
|
||||
//Rectf uv
|
||||
float uvx = a_Stream.ReadSingle();
|
||||
float uvy = a_Stream.ReadSingle();
|
||||
float uvwidth = a_Stream.ReadSingle();
|
||||
float uvheight = a_Stream.ReadSingle();
|
||||
//Rectf vert
|
||||
float vertx = a_Stream.ReadSingle();
|
||||
float verty = a_Stream.ReadSingle();
|
||||
float vertwidth = a_Stream.ReadSingle();
|
||||
float vertheight = a_Stream.ReadSingle();
|
||||
float width = a_Stream.ReadSingle();
|
||||
|
||||
if (sourceFile.version[0] >= 4)
|
||||
{
|
||||
bool flipped = a_Stream.ReadBoolean();
|
||||
a_Stream.Position += 3;
|
||||
}
|
||||
}
|
||||
int m_KerningValues_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_KerningValues_size; i++)
|
||||
{
|
||||
int pairfirst = a_Stream.ReadInt16();
|
||||
int pairsecond = a_Stream.ReadInt16();
|
||||
float second = a_Stream.ReadSingle();
|
||||
}
|
||||
var m_PixelScale = a_Stream.ReadSingle();
|
||||
int m_FontData_size = a_Stream.ReadInt32();
|
||||
if (m_FontData_size > 0)
|
||||
{
|
||||
m_FontData = new byte[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)
|
||||
{ preloadData.extension = ".otf"; }
|
||||
else { preloadData.extension = ".ttf"; }
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int m_CharacterSpacing = a_Stream.ReadInt32();
|
||||
int m_CharacterPadding = a_Stream.ReadInt32();
|
||||
}
|
||||
int m_AsciiStartOffset = a_Stream.ReadInt32();
|
||||
|
||||
int m_ConvertCase = a_Stream.ReadInt32();
|
||||
PPtr m_DefaultMaterial = sourceFile.ReadPPtr();
|
||||
if (sourceFile.version[0] <= 3)
|
||||
{
|
||||
int m_FontCountX = a_Stream.ReadInt32();
|
||||
int m_FontCountY = a_Stream.ReadInt32();
|
||||
}
|
||||
|
||||
int m_CharacterRects_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_CharacterRects_size; i++)
|
||||
{
|
||||
int index = a_Stream.ReadInt32();
|
||||
//Rectf uv
|
||||
float uvx = a_Stream.ReadSingle();
|
||||
float uvy = a_Stream.ReadSingle();
|
||||
float uvwidth = a_Stream.ReadSingle();
|
||||
float uvheight = a_Stream.ReadSingle();
|
||||
//Rectf vert
|
||||
float vertx = a_Stream.ReadSingle();
|
||||
float verty = a_Stream.ReadSingle();
|
||||
float vertwidth = a_Stream.ReadSingle();
|
||||
float vertheight = a_Stream.ReadSingle();
|
||||
float width = a_Stream.ReadSingle();
|
||||
float m_Kerning = a_Stream.ReadSingle();
|
||||
float m_LineSpacing = a_Stream.ReadSingle();
|
||||
|
||||
if (sourceFile.version[0] <= 3)
|
||||
{
|
||||
int m_PerCharacterKerning_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_PerCharacterKerning_size; i++)
|
||||
{
|
||||
int first = a_Stream.ReadInt32();
|
||||
float second = a_Stream.ReadSingle();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int m_CharacterSpacing = a_Stream.ReadInt32();
|
||||
int m_CharacterPadding = a_Stream.ReadInt32();
|
||||
}
|
||||
|
||||
int m_ConvertCase = a_Stream.ReadInt32();
|
||||
PPtr m_DefaultMaterial = sourceFile.ReadPPtr();
|
||||
|
||||
int m_CharacterRects_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_CharacterRects_size; i++)
|
||||
{
|
||||
int index = a_Stream.ReadInt32();
|
||||
//Rectf uv
|
||||
float uvx = a_Stream.ReadSingle();
|
||||
float uvy = a_Stream.ReadSingle();
|
||||
float uvwidth = a_Stream.ReadSingle();
|
||||
float uvheight = a_Stream.ReadSingle();
|
||||
//Rectf vert
|
||||
float vertx = a_Stream.ReadSingle();
|
||||
float verty = a_Stream.ReadSingle();
|
||||
float vertwidth = a_Stream.ReadSingle();
|
||||
float vertheight = a_Stream.ReadSingle();
|
||||
float width = a_Stream.ReadSingle();
|
||||
|
||||
if (sourceFile.version[0] >= 4)
|
||||
{
|
||||
bool flipped = a_Stream.ReadBoolean();
|
||||
a_Stream.Position += 3;
|
||||
}
|
||||
}
|
||||
|
||||
PPtr m_Texture = sourceFile.ReadPPtr();
|
||||
|
||||
int m_KerningValues_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_KerningValues_size; i++)
|
||||
{
|
||||
int pairfirst = a_Stream.ReadInt16();
|
||||
int pairsecond = a_Stream.ReadInt16();
|
||||
float second = a_Stream.ReadSingle();
|
||||
}
|
||||
|
||||
if (sourceFile.version[0] <= 3)
|
||||
{
|
||||
bool m_GridFont = a_Stream.ReadBoolean();
|
||||
a_Stream.Position += 3; //4 byte alignment
|
||||
}
|
||||
else { float m_PixelScale = a_Stream.ReadSingle(); }
|
||||
|
||||
int m_FontData_size = a_Stream.ReadInt32();
|
||||
if (m_FontData_size > 0)
|
||||
{
|
||||
m_FontData = new byte[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)
|
||||
{ preloadData.extension = ".otf"; }
|
||||
else { preloadData.extension = ".ttf"; }
|
||||
|
||||
}
|
||||
|
||||
float m_FontSize = a_Stream.ReadSingle();//problem here in minifootball
|
||||
float m_Ascent = a_Stream.ReadSingle();
|
||||
uint m_DefaultStyle = a_Stream.ReadUInt32();
|
||||
|
||||
int m_FontNames = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_FontNames; i++)
|
||||
{
|
||||
string m_FontName = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||
}
|
||||
|
||||
if (sourceFile.version[0] >= 4)
|
||||
{
|
||||
bool flipped = a_Stream.ReadBoolean();
|
||||
a_Stream.Position += 3;
|
||||
int m_FallbackFonts = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_FallbackFonts; i++)
|
||||
{
|
||||
PPtr m_FallbackFont = sourceFile.ReadPPtr();
|
||||
}
|
||||
|
||||
int m_FontRenderingMode = a_Stream.ReadInt32();
|
||||
}
|
||||
}
|
||||
|
||||
PPtr m_Texture = sourceFile.ReadPPtr();
|
||||
|
||||
int m_KerningValues_size = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_KerningValues_size; i++)
|
||||
{
|
||||
int pairfirst = a_Stream.ReadInt16();
|
||||
int pairsecond = a_Stream.ReadInt16();
|
||||
float second = a_Stream.ReadSingle();
|
||||
}
|
||||
|
||||
if (sourceFile.version[0] <= 3)
|
||||
{
|
||||
bool m_GridFont = a_Stream.ReadBoolean();
|
||||
a_Stream.Position += 3; //4 byte alignment
|
||||
}
|
||||
else { float m_PixelScale = a_Stream.ReadSingle(); }
|
||||
|
||||
int m_FontData_size = a_Stream.ReadInt32();
|
||||
if (m_FontData_size > 0)
|
||||
{
|
||||
m_FontData = new byte[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)
|
||||
{ preloadData.extension = ".otf"; }
|
||||
else { preloadData.extension = ".ttf"; }
|
||||
|
||||
}
|
||||
|
||||
float m_FontSize = a_Stream.ReadSingle();//problem here in minifootball
|
||||
float m_Ascent = a_Stream.ReadSingle();
|
||||
uint m_DefaultStyle = a_Stream.ReadUInt32();
|
||||
|
||||
int m_FontNames = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_FontNames; i++)
|
||||
{
|
||||
string m_FontName = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||
}
|
||||
|
||||
if (sourceFile.version[0] >= 4)
|
||||
{
|
||||
int m_FallbackFonts = a_Stream.ReadInt32();
|
||||
for (int i = 0; i < m_FallbackFonts; i++)
|
||||
{
|
||||
PPtr m_FallbackFont = sourceFile.ReadPPtr();
|
||||
}
|
||||
|
||||
int m_FontRenderingMode = a_Stream.ReadInt32();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -8,15 +8,16 @@ namespace Unity_Studio
|
||||
{
|
||||
public class GameObject : TreeNode
|
||||
{
|
||||
public List<PPtr> m_Components = new List<PPtr>();
|
||||
public PPtr m_Transform;
|
||||
public PPtr m_Renderer;
|
||||
public PPtr m_MeshRenderer;
|
||||
public PPtr m_MeshFilter;
|
||||
public PPtr m_SkinnedMeshRenderer;
|
||||
public int m_Layer;
|
||||
public string m_Name;
|
||||
public ushort m_Tag;
|
||||
public bool m_IsActive;
|
||||
|
||||
|
||||
public string uniqueID = "0";//this way file and folder TreeNodes will be treated as FBX scene
|
||||
|
||||
public GameObject(AssetPreloadData preloadData)
|
||||
@@ -39,25 +40,14 @@ namespace Unity_Studio
|
||||
int m_Component_size = a_Stream.ReadInt32();
|
||||
for (int j = 0; j < m_Component_size; j++)
|
||||
{
|
||||
int m_Component_type = a_Stream.ReadInt32();
|
||||
|
||||
switch (m_Component_type)
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)//5.5.0 and up
|
||||
{
|
||||
case 4:
|
||||
m_Transform = sourceFile.ReadPPtr();
|
||||
break;
|
||||
case 23:
|
||||
m_Renderer = sourceFile.ReadPPtr();
|
||||
break;
|
||||
case 33:
|
||||
m_MeshFilter = sourceFile.ReadPPtr();
|
||||
break;
|
||||
case 137:
|
||||
m_SkinnedMeshRenderer = sourceFile.ReadPPtr();
|
||||
break;
|
||||
default:
|
||||
PPtr m_Component = sourceFile.ReadPPtr();
|
||||
break;
|
||||
m_Components.Add(sourceFile.ReadPPtr());
|
||||
}
|
||||
else
|
||||
{
|
||||
int first = a_Stream.ReadInt32();
|
||||
m_Components.Add(sourceFile.ReadPPtr());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +57,7 @@ namespace Unity_Studio
|
||||
if (m_Name == "") { m_Name = "GameObject #" + uniqueID; }
|
||||
m_Tag = a_Stream.ReadUInt16();
|
||||
m_IsActive = a_Stream.ReadBoolean();
|
||||
|
||||
|
||||
base.Text = m_Name;
|
||||
preloadData.Text = m_Name;
|
||||
//name should be unique
|
||||
|
||||
@@ -422,7 +422,7 @@ namespace Unity_Studio
|
||||
a_Stream.Position += m_ShapeVertices_size * 40; //vertex positions, normals, tangents & uint index
|
||||
|
||||
int shapes_size = a_Stream.ReadInt32();
|
||||
a_Stream.Position += shapes_size * 12; //uint firstVertex, vertexCount; bool hasNormals, hasTangents
|
||||
a_Stream.Position += shapes_size * 10; //uint firstVertex, vertexCount; bool hasNormals, hasTangents
|
||||
|
||||
int channels_size = a_Stream.ReadInt32();
|
||||
for (int c = 0; c < channels_size; c++)
|
||||
|
||||
@@ -5,7 +5,7 @@ using System.Text;
|
||||
|
||||
namespace Unity_Studio
|
||||
{
|
||||
class Renderer
|
||||
class MeshRenderer
|
||||
{
|
||||
public PPtr m_GameObject;
|
||||
public bool m_Enabled;
|
||||
@@ -15,7 +15,7 @@ namespace Unity_Studio
|
||||
public ushort m_LightmapIndexDynamic;
|
||||
public PPtr[] m_Materials;
|
||||
|
||||
public Renderer(AssetPreloadData preloadData)
|
||||
public MeshRenderer(AssetPreloadData preloadData)
|
||||
{
|
||||
var sourceFile = preloadData.sourceFile;
|
||||
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||
182
Unity Studio/Unity Classes/MonoBehaviour.cs
Normal file
182
Unity Studio/Unity Classes/MonoBehaviour.cs
Normal file
@@ -0,0 +1,182 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Unity_Studio
|
||||
{
|
||||
class MonoBehaviour
|
||||
{
|
||||
public string serializedText;
|
||||
|
||||
public MonoBehaviour(AssetPreloadData preloadData, bool readSwitch)
|
||||
{
|
||||
var sourceFile = preloadData.sourceFile;
|
||||
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||
a_Stream.Position = preloadData.Offset;
|
||||
|
||||
var m_GameObject = sourceFile.ReadPPtr();
|
||||
var m_Enabled = a_Stream.ReadByte();
|
||||
a_Stream.AlignStream(4);
|
||||
var m_Script = sourceFile.ReadPPtr();
|
||||
var m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||
if (readSwitch)
|
||||
{
|
||||
preloadData.extension = ".txt";
|
||||
a_Stream.Position = preloadData.Offset;
|
||||
ClassStrStruct classStructure;
|
||||
if (sourceFile.ClassStructures.TryGetValue(preloadData.Type1, out classStructure))
|
||||
{
|
||||
var member = classStructure.members2;
|
||||
var strs = member.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var sb = new StringBuilder();
|
||||
Read(sb, strs, a_Stream);
|
||||
serializedText = sb.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
var str = "PPtr<GameObject> m_GameObject\r\n";
|
||||
str += "\tint m_FileID = " + m_GameObject.m_FileID + "\r\n";
|
||||
str += "\tint64 m_PathID = " + m_GameObject.m_PathID + "\r\n";
|
||||
str += "UInt8 m_Enabled = " + m_Enabled + "\r\n";
|
||||
str += "PPtr<MonoScript> m_Script\r\n";
|
||||
str += "\tint m_FileID = " + m_Script.m_FileID + "\r\n";
|
||||
str += "\tint64 m_PathID = " + m_Script.m_PathID + "\r\n";
|
||||
str += "string m_Name = \"" + m_Name + "\"\r\n";
|
||||
serializedText = str;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_Name != "")
|
||||
{
|
||||
preloadData.Text = m_Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID;
|
||||
}
|
||||
preloadData.SubItems.AddRange(new string[] { preloadData.TypeString, preloadData.Size.ToString() });
|
||||
}
|
||||
}
|
||||
|
||||
private void Read(StringBuilder sb, string[] strs, EndianStream a_Stream)
|
||||
{
|
||||
for (int i = 0; i < strs.Length; i++)
|
||||
{
|
||||
var strs2 = strs[i].Split('\t');
|
||||
var level = int.Parse(strs2[0]);
|
||||
var varTypeStr = strs2[1];
|
||||
var varNameStr = strs2[2];
|
||||
if (varTypeStr == "SInt8")//sbyte
|
||||
{
|
||||
var value = a_Stream.ReadSByte();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt8")//byte
|
||||
{
|
||||
var value = a_Stream.ReadByte();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "short" || varTypeStr == "SInt16")//Int16
|
||||
{
|
||||
var value = a_Stream.ReadInt16();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt16" || varTypeStr == "unsigned short")//UInt16
|
||||
{
|
||||
var value = a_Stream.ReadUInt16();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "int" || varTypeStr == "SInt32")//Int32
|
||||
{
|
||||
var value = a_Stream.ReadInt32();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt32" || varTypeStr == "unsigned int")//UInt32
|
||||
{
|
||||
var value = a_Stream.ReadUInt32();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "long long" || varTypeStr == "SInt64")//Int64
|
||||
{
|
||||
var value = a_Stream.ReadInt64();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "UInt64" || varTypeStr == "unsigned long long")//UInt64
|
||||
{
|
||||
var value = a_Stream.ReadUInt64();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "float")//float
|
||||
{
|
||||
var value = a_Stream.ReadSingle();
|
||||
sb.AppendFormat("{0}{1} {2} = {3:f}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "double")//double
|
||||
{
|
||||
var value = a_Stream.ReadDouble();
|
||||
sb.AppendFormat("{0}{1} {2} = {3:f4}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "bool")//bool
|
||||
{
|
||||
var value = a_Stream.ReadBoolean();
|
||||
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
else if (varTypeStr == "string")//string
|
||||
{
|
||||
var value = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||
sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level)), varTypeStr, varNameStr, value);
|
||||
i += 3;//skip
|
||||
}
|
||||
else if (varTypeStr == "Array")//Array
|
||||
{
|
||||
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(strs, 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.Length + 1;//skip
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string[] ReadArray(string[] strs, int level, int index)
|
||||
{
|
||||
List<string> strs3 = new List<string>();
|
||||
for (int i = index + 2; i < strs.Length; i++)//skip int size
|
||||
{
|
||||
var strs2 = strs[i].Split('\t');
|
||||
var level2 = int.Parse(strs2[0]);
|
||||
if (level2 <= level)
|
||||
{
|
||||
return strs3.ToArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
strs3.Add(strs[i]);
|
||||
}
|
||||
}
|
||||
return strs3.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,15 @@ namespace Unity_Studio
|
||||
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||
a_Stream.Position = preloadData.Offset;
|
||||
|
||||
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)//5.5.0 nad up
|
||||
{
|
||||
//productGUID
|
||||
a_Stream.ReadInt32();
|
||||
a_Stream.ReadInt32();
|
||||
a_Stream.ReadInt32();
|
||||
a_Stream.ReadInt32();
|
||||
}
|
||||
if (sourceFile.version[0] >= 3)
|
||||
{
|
||||
if (sourceFile.version[0] == 3 && sourceFile.version[1] < 2) { string AndroidLicensePublicKey = a_Stream.ReadAlignedString(a_Stream.ReadInt32()); }
|
||||
|
||||
73
Unity Studio/Unity Classes/Shader.cs
Normal file
73
Unity Studio/Unity Classes/Shader.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.Text;
|
||||
|
||||
namespace Unity_Studio
|
||||
{
|
||||
class Shader
|
||||
{
|
||||
public string m_Name;
|
||||
public byte[] m_Script;
|
||||
public string m_PathName;
|
||||
|
||||
public Shader(AssetPreloadData preloadData, bool readSwitch)
|
||||
{
|
||||
var sourceFile = preloadData.sourceFile;
|
||||
var a_Stream = preloadData.sourceFile.a_Stream;
|
||||
a_Stream.Position = preloadData.Offset;
|
||||
preloadData.extension = ".txt";
|
||||
|
||||
if (sourceFile.platform == -2)
|
||||
{
|
||||
uint m_ObjectHideFlags = a_Stream.ReadUInt32();
|
||||
PPtr m_PrefabParentObject = sourceFile.ReadPPtr();
|
||||
PPtr m_PrefabInternal = sourceFile.ReadPPtr();
|
||||
}
|
||||
|
||||
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)
|
||||
{
|
||||
if (readSwitch)
|
||||
{
|
||||
m_Script = Encoding.UTF8.GetBytes("Serialized Shader can't be read");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_Name != "") { preloadData.Text = m_Name; }
|
||||
else { preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID; }
|
||||
preloadData.SubItems.AddRange(new string[] { preloadData.TypeString, preloadData.exportSize.ToString() });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int m_Script_size = a_Stream.ReadInt32();
|
||||
|
||||
if (readSwitch) //asset is read for preview or export
|
||||
{
|
||||
m_Script = new byte[m_Script_size];
|
||||
a_Stream.Read(m_Script, 0, m_Script_size);
|
||||
|
||||
if (m_Script[0] == 93) { m_Script = SevenZip.Compression.LZMA.SevenZipHelper.Decompress(m_Script); }
|
||||
if (m_Script[0] == 60 || (m_Script[0] == 239 && m_Script[1] == 187 && m_Script[2] == 191 && m_Script[3] == 60)) { preloadData.extension = ".xml"; }
|
||||
}
|
||||
else
|
||||
{
|
||||
byte lzmaTest = a_Stream.ReadByte();
|
||||
if (lzmaTest == 93)
|
||||
{
|
||||
a_Stream.Position += 4;
|
||||
preloadData.exportSize = a_Stream.ReadInt32(); //actualy int64
|
||||
a_Stream.Position -= 8;
|
||||
}
|
||||
else { preloadData.exportSize = m_Script_size; }
|
||||
|
||||
a_Stream.Position += m_Script_size - 1;
|
||||
|
||||
if (m_Name != "") { preloadData.Text = m_Name; }
|
||||
else { preloadData.Text = preloadData.TypeString + " #" + preloadData.uniqueID; }
|
||||
preloadData.SubItems.AddRange(new string[] { preloadData.TypeString, preloadData.exportSize.ToString() });
|
||||
}
|
||||
a_Stream.AlignStream(4);
|
||||
m_PathName = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -60,14 +60,29 @@ namespace Unity_Studio
|
||||
m_Materials[m] = sourceFile.ReadPPtr();
|
||||
}
|
||||
|
||||
if (version[0] < 3) { a_Stream.Position += 16; } //m_LightmapTilingOffset vector4d
|
||||
if (version[0] < 3)
|
||||
{
|
||||
a_Stream.Position += 16;//m_LightmapTilingOffset vector4d
|
||||
}
|
||||
else
|
||||
{
|
||||
int m_SubsetIndices_size = a_Stream.ReadInt32();
|
||||
a_Stream.Position += m_SubsetIndices_size * 4;
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)//5.5.0 and up
|
||||
{
|
||||
a_Stream.Position += 4;//m_StaticBatchInfo
|
||||
}
|
||||
else
|
||||
{
|
||||
int m_SubsetIndices_size = a_Stream.ReadInt32();
|
||||
a_Stream.Position += m_SubsetIndices_size * 4;
|
||||
}
|
||||
PPtr m_StaticBatchRoot = sourceFile.ReadPPtr();
|
||||
|
||||
if (version[0] >= 4 || (version[0] == 3 && version[1] >= 5))
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 4) || sourceFile.version[0] > 5)//5.4.0 and up
|
||||
{
|
||||
PPtr m_ProbeAnchor = sourceFile.ReadPPtr();
|
||||
PPtr m_LightProbeVolumeOverride = sourceFile.ReadPPtr();
|
||||
}
|
||||
else if (version[0] >= 4 || (version[0] == 3 && version[1] >= 5))
|
||||
{
|
||||
bool m_UseLightProbes = a_Stream.ReadBoolean();
|
||||
a_Stream.Position += 3; //alignment
|
||||
@@ -80,7 +95,7 @@ namespace Unity_Studio
|
||||
{
|
||||
if (version[0] == 4 && version[1] <= 3) { int m_SortingLayer = a_Stream.ReadInt16(); }
|
||||
else { int m_SortingLayer = a_Stream.ReadInt32(); }
|
||||
|
||||
|
||||
int m_SortingOrder = a_Stream.ReadInt16();
|
||||
a_Stream.AlignStream(4);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Unity_Studio
|
||||
public int m_Width;
|
||||
public int m_Height;
|
||||
public int m_CompleteImageSize;
|
||||
public int m_TextureFormat;
|
||||
public TextureFormat m_TextureFormat;
|
||||
public bool m_MipMap = false;
|
||||
public bool m_IsReadable;
|
||||
public bool m_ReadAllowed;
|
||||
@@ -78,14 +78,16 @@ namespace Unity_Studio
|
||||
public int bytesOfKeyValueData = 0;
|
||||
//KTX End
|
||||
//ASTC Start
|
||||
public byte[] astc_magicnum = { 0x13, 0xab, 0xa1, 0x5c };
|
||||
public byte astc_x;
|
||||
public byte astc_y;
|
||||
public byte astc_z = 1;
|
||||
public byte[] astc_width = new byte[3];
|
||||
public byte[] astc_height = new byte[3];
|
||||
public byte[] astc_length = new byte[3] { 1, 0, 0 };//I don't know what this is.
|
||||
public byte[] astc_magic = { 0x13, 0xab, 0xa1, 0x5c };
|
||||
public byte blockdim_x;
|
||||
public byte blockdim_y;
|
||||
public byte blockdim_z = 1;
|
||||
public byte[] xsize = new byte[3];
|
||||
public byte[] ysize = new byte[3];
|
||||
public byte[] zsize = new byte[3] { 1, 0, 0 };
|
||||
//ASTC END
|
||||
//TextureConverter
|
||||
public int q_format;
|
||||
//Texture data
|
||||
public int image_data_size;
|
||||
|
||||
@@ -106,7 +108,7 @@ namespace Unity_Studio
|
||||
m_Width = a_Stream.ReadInt32();
|
||||
m_Height = a_Stream.ReadInt32();
|
||||
m_CompleteImageSize = a_Stream.ReadInt32();
|
||||
m_TextureFormat = a_Stream.ReadInt32();
|
||||
m_TextureFormat = (TextureFormat)a_Stream.ReadInt32();
|
||||
|
||||
if (sourceFile.version[0] < 5 || (sourceFile.version[0] == 5 && sourceFile.version[1] < 2))
|
||||
{ m_MipMap = a_Stream.ReadBoolean(); }
|
||||
@@ -182,7 +184,7 @@ namespace Unity_Studio
|
||||
a_Stream.Read(image_data, 0, image_data_size);
|
||||
}
|
||||
|
||||
switch ((TextureFormat)m_TextureFormat)
|
||||
switch (m_TextureFormat)
|
||||
{
|
||||
case TextureFormat.Alpha8: //test pass
|
||||
{
|
||||
@@ -191,7 +193,7 @@ namespace Unity_Studio
|
||||
dwRBitMask = 0x0;
|
||||
dwGBitMask = 0x0;
|
||||
dwBBitMask = 0x0;
|
||||
dwABitMask = 0x0; *///透明通道丢失?
|
||||
dwABitMask = 0xFF; *///透明通道丢失?
|
||||
//转ARGB32
|
||||
var bytes = Enumerable.Repeat<byte>(0xFF, image_data_size * 4).ToArray();
|
||||
for (int i = 0; i < image_data_size; i++)
|
||||
@@ -281,7 +283,7 @@ namespace Unity_Studio
|
||||
}
|
||||
case TextureFormat.R16:
|
||||
break;
|
||||
case TextureFormat.DXT1: //DXT1
|
||||
case TextureFormat.DXT1: //test pass
|
||||
{
|
||||
if (sourceFile.platform == 11) //X360 only, PS3 not
|
||||
{
|
||||
@@ -303,7 +305,7 @@ namespace Unity_Studio
|
||||
dwABitMask = 0x0;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.DXT5: //DXT5
|
||||
case TextureFormat.DXT5: //test pass
|
||||
{
|
||||
if (sourceFile.platform == 11) //X360, PS3 not
|
||||
{
|
||||
@@ -345,16 +347,76 @@ namespace Unity_Studio
|
||||
dwABitMask = -16777216;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.RHalf:
|
||||
case TextureFormat.RGHalf:
|
||||
case TextureFormat.RGBAHalf:
|
||||
case TextureFormat.RFloat:
|
||||
case TextureFormat.RGFloat:
|
||||
case TextureFormat.RGBAFloat:
|
||||
break;
|
||||
case TextureFormat.YUY2:
|
||||
case TextureFormat.RHalf://Not sure
|
||||
{
|
||||
pvrPixelFormat = 0x11;
|
||||
q_format = (int)QFORMAT.Q_FORMAT_R_16F;
|
||||
glInternalFormat = KTXHeader.GL_R16F;
|
||||
glBaseInternalFormat = KTXHeader.GL_RED;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.RGHalf://Not sure
|
||||
{
|
||||
q_format = (int)QFORMAT.Q_FORMAT_RG_HF;
|
||||
glInternalFormat = KTXHeader.GL_RG16F;
|
||||
glBaseInternalFormat = KTXHeader.GL_RG;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.RGBAHalf://Not sure
|
||||
{
|
||||
q_format = (int)QFORMAT.Q_FORMAT_RGBA_HF;
|
||||
glInternalFormat = KTXHeader.GL_RGBA16F;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.RFloat://Not sure
|
||||
{
|
||||
q_format = (int)QFORMAT.Q_FORMAT_R_F;
|
||||
glInternalFormat = KTXHeader.GL_R32F;
|
||||
glBaseInternalFormat = KTXHeader.GL_RED;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.RGFloat://Not sure
|
||||
{
|
||||
q_format = (int)QFORMAT.Q_FORMAT_RG_F;
|
||||
glInternalFormat = KTXHeader.GL_RG32F;
|
||||
glBaseInternalFormat = KTXHeader.GL_RG;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.RGBAFloat://Not sure
|
||||
{
|
||||
q_format = (int)QFORMAT.Q_FORMAT_RGBA_F;
|
||||
glInternalFormat = KTXHeader.GL_RGBA32F;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.YUY2://Not sure
|
||||
{
|
||||
pvrPixelFormat = 17;
|
||||
q_format = (int)QFORMAT.Q_FORMAT_YUYV_16;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.BC4:
|
||||
{
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RED_RGTC1;
|
||||
glBaseInternalFormat = KTXHeader.GL_RED;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.BC5:
|
||||
{
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RG_RGTC2;
|
||||
glBaseInternalFormat = KTXHeader.GL_RG;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.BC6H:
|
||||
{
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGB;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.BC7:
|
||||
{
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGBA_BPTC_UNORM;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.DXT1Crunched: //DXT1 Crunched
|
||||
@@ -362,75 +424,77 @@ namespace Unity_Studio
|
||||
break;
|
||||
case TextureFormat.PVRTC_RGB2: //test pass
|
||||
{
|
||||
pvrPixelFormat = 0x0;
|
||||
pvrPixelFormat = 0;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGB;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.PVRTC_RGBA2: //test pass
|
||||
{
|
||||
pvrPixelFormat = 0x1;
|
||||
pvrPixelFormat = 1;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.PVRTC_RGB4: //test pass
|
||||
{
|
||||
pvrPixelFormat = 0x2;
|
||||
pvrPixelFormat = 2;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGB;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.PVRTC_RGBA4: //test pass
|
||||
{
|
||||
pvrPixelFormat = 0x3;
|
||||
pvrPixelFormat = 3;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ETC_RGB4: //test pass
|
||||
{
|
||||
pvrPixelFormat = 0x16;
|
||||
pvrPixelFormat = 6;
|
||||
glInternalFormat = KTXHeader.GL_ETC1_RGB8_OES;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGB;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ATC_RGB4: //can use QCompress to convert
|
||||
case TextureFormat.ATC_RGB4: //test pass
|
||||
{
|
||||
q_format = (int)QFORMAT.Q_FORMAT_ATITC_RGB;
|
||||
glInternalFormat = KTXHeader.GL_ATC_RGB_AMD;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGB;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ATC_RGBA8: //can use QCompress to convert
|
||||
case TextureFormat.ATC_RGBA8: //test pass
|
||||
{
|
||||
glInternalFormat = KTXHeader.GL_ATC_RGBA_EXPLICIT_ALPHA_AMD;
|
||||
q_format = (int)QFORMAT.Q_FORMAT_ATC_RGBA_INTERPOLATED_ALPHA;
|
||||
glInternalFormat = KTXHeader.GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD;
|
||||
glBaseInternalFormat = KTXHeader.GL_RGBA;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.EAC_R:
|
||||
{
|
||||
pvrPixelFormat = 25;
|
||||
q_format = (int)QFORMAT.Q_FORMAT_EAC_R_UNSIGNED;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_R11_EAC;
|
||||
glBaseInternalFormat = KTXHeader.GL_RED;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.EAC_R_SIGNED:
|
||||
{
|
||||
pvrPixelFormat = 25;
|
||||
q_format = (int)QFORMAT.Q_FORMAT_EAC_R_SIGNED;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_SIGNED_R11_EAC;
|
||||
glBaseInternalFormat = KTXHeader.GL_RED;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.EAC_RG:
|
||||
{
|
||||
pvrPixelFormat = 26;
|
||||
q_format = (int)QFORMAT.Q_FORMAT_EAC_RG_UNSIGNED;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_RG11_EAC;
|
||||
glBaseInternalFormat = KTXHeader.GL_RG;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.EAC_RG_SIGNED:
|
||||
{
|
||||
pvrPixelFormat = 26;
|
||||
q_format = (int)QFORMAT.Q_FORMAT_EAC_RG_SIGNED;
|
||||
glInternalFormat = KTXHeader.GL_COMPRESSED_SIGNED_RG11_EAC;
|
||||
glBaseInternalFormat = KTXHeader.GL_RG;
|
||||
break;
|
||||
@@ -459,43 +523,43 @@ namespace Unity_Studio
|
||||
case TextureFormat.ASTC_RGB_4x4: //test pass
|
||||
case TextureFormat.ASTC_RGBA_4x4: //test pass
|
||||
{
|
||||
astc_x = 4;
|
||||
astc_y = 4;
|
||||
blockdim_x = 4;
|
||||
blockdim_y = 4;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ASTC_RGB_5x5: //test pass
|
||||
case TextureFormat.ASTC_RGBA_5x5: //test pass
|
||||
{
|
||||
astc_x = 5;
|
||||
astc_y = 5;
|
||||
blockdim_x = 5;
|
||||
blockdim_y = 5;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ASTC_RGB_6x6: //test pass
|
||||
case TextureFormat.ASTC_RGBA_6x6: //test pass
|
||||
{
|
||||
astc_x = 6;
|
||||
astc_y = 6;
|
||||
blockdim_x = 6;
|
||||
blockdim_y = 6;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ASTC_RGB_8x8: //test pass
|
||||
case TextureFormat.ASTC_RGBA_8x8: //test pass
|
||||
{
|
||||
astc_x = 8;
|
||||
astc_y = 8;
|
||||
blockdim_x = 8;
|
||||
blockdim_y = 8;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ASTC_RGB_10x10: //test pass
|
||||
case TextureFormat.ASTC_RGBA_10x10: //test pass
|
||||
{
|
||||
astc_x = 10;
|
||||
astc_y = 10;
|
||||
blockdim_x = 10;
|
||||
blockdim_y = 10;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ASTC_RGB_12x12: //test pass
|
||||
case TextureFormat.ASTC_RGBA_12x12: //test pass
|
||||
{
|
||||
astc_x = 12;
|
||||
astc_y = 12;
|
||||
blockdim_x = 12;
|
||||
blockdim_y = 12;
|
||||
break;
|
||||
}
|
||||
case TextureFormat.ETC_RGB4_3DS:
|
||||
@@ -508,10 +572,10 @@ namespace Unity_Studio
|
||||
preloadData.InfoText = "Width: " + m_Width.ToString() + "\nHeight: " + m_Height.ToString() + "\nFormat: ";
|
||||
preloadData.exportSize = image_data_size;
|
||||
|
||||
string type = ((TextureFormat)m_TextureFormat).ToString();
|
||||
string type = m_TextureFormat.ToString();
|
||||
preloadData.InfoText += type;
|
||||
|
||||
switch ((TextureFormat)m_TextureFormat)
|
||||
switch (m_TextureFormat)
|
||||
{
|
||||
case TextureFormat.Alpha8:
|
||||
case TextureFormat.ARGB4444:
|
||||
@@ -536,25 +600,23 @@ namespace Unity_Studio
|
||||
case TextureFormat.ETC2_RGB:
|
||||
case TextureFormat.ETC2_RGBA1:
|
||||
case TextureFormat.ETC2_RGBA8:
|
||||
preloadData.extension = ".pvr"; preloadData.exportSize += 52; break;
|
||||
case TextureFormat.RHalf:
|
||||
case TextureFormat.RGHalf:
|
||||
case TextureFormat.RGBAHalf:
|
||||
case TextureFormat.RFloat:
|
||||
case TextureFormat.RGFloat:
|
||||
case TextureFormat.RGBAFloat:
|
||||
case TextureFormat.BC4:
|
||||
case TextureFormat.BC5:
|
||||
case TextureFormat.BC6H:
|
||||
case TextureFormat.BC7:
|
||||
case TextureFormat.ATC_RGB4:
|
||||
case TextureFormat.ATC_RGBA8:
|
||||
case TextureFormat.EAC_R:
|
||||
case TextureFormat.EAC_R_SIGNED:
|
||||
case TextureFormat.EAC_RG:
|
||||
case TextureFormat.EAC_RG_SIGNED:
|
||||
preloadData.extension = ".pvr"; preloadData.exportSize += 52; break;
|
||||
//case TextureFormat.PVRTC_RGB2:
|
||||
//case TextureFormat.PVRTC_RGBA2:
|
||||
//case TextureFormat.PVRTC_RGB4:
|
||||
//case TextureFormat.PVRTC_RGBA4:
|
||||
case TextureFormat.ATC_RGB4:
|
||||
case TextureFormat.ATC_RGBA8:
|
||||
//case TextureFormat.ETC_RGB4:
|
||||
//case TextureFormat.ETC2_RGB:
|
||||
//case TextureFormat.ETC2_RGBA1:
|
||||
//case TextureFormat.ETC2_RGBA8:
|
||||
//case TextureFormat.EAC_R:
|
||||
//case TextureFormat.EAC_R_SIGNED:
|
||||
//case TextureFormat.EAC_RG:
|
||||
//case TextureFormat.EAC_RG_SIGNED:
|
||||
preloadData.extension = ".ktx"; preloadData.exportSize += 68; break;
|
||||
case TextureFormat.ASTC_RGB_4x4:
|
||||
case TextureFormat.ASTC_RGB_5x5:
|
||||
@@ -617,6 +679,10 @@ namespace Unity_Studio
|
||||
RGFloat,
|
||||
RGBAFloat,
|
||||
YUY2,
|
||||
BC4 = 26,
|
||||
BC5,
|
||||
BC6H = 24,
|
||||
BC7,
|
||||
DXT1Crunched = 28,
|
||||
DXT5Crunched,
|
||||
PVRTC_RGB2,
|
||||
@@ -679,6 +745,18 @@ public class KTXHeader
|
||||
public static int GL_COMPRESSED_RG11_EAC = 0x9272;
|
||||
public static int GL_COMPRESSED_SIGNED_RG11_EAC = 0x9273;
|
||||
|
||||
public static int GL_COMPRESSED_RED_RGTC1 = 0x8DBB;
|
||||
public static int GL_COMPRESSED_RG_RGTC2 = 0x8DBD;
|
||||
public static int GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F;
|
||||
public static int GL_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C;
|
||||
|
||||
public static int GL_R16F = 0x822D;
|
||||
public static int GL_RG16F = 0x822F;
|
||||
public static int GL_RGBA16F = 0x881A;
|
||||
public static int GL_R32F = 0x822E;
|
||||
public static int GL_RG32F = 0x8230;
|
||||
public static int GL_RGBA32F = 0x8814;
|
||||
|
||||
// constants for glBaseInternalFormat
|
||||
public static int GL_RED = 0x1903;
|
||||
public static int GL_GREEN = 0x1904;
|
||||
@@ -687,14 +765,128 @@ public class KTXHeader
|
||||
public static int GL_RGB = 0x1907;
|
||||
public static int GL_RGBA = 0x1908;
|
||||
public static int GL_RG = 0x8227;
|
||||
}
|
||||
|
||||
public static int getMipMapCount(int width, int height)
|
||||
{
|
||||
int mipMapCount = 1;
|
||||
for (int dim = Math.Max(width, height); dim > 1; dim /= 2)
|
||||
{
|
||||
mipMapCount++;
|
||||
}
|
||||
return mipMapCount;
|
||||
}
|
||||
}
|
||||
//from TextureConverter.h
|
||||
public enum QFORMAT
|
||||
{
|
||||
// General formats
|
||||
Q_FORMAT_RGBA_8UI = 1,
|
||||
Q_FORMAT_RGBA_8I,
|
||||
Q_FORMAT_RGB5_A1UI,
|
||||
Q_FORMAT_RGBA_4444,
|
||||
Q_FORMAT_RGBA_16UI,
|
||||
Q_FORMAT_RGBA_16I,
|
||||
Q_FORMAT_RGBA_32UI,
|
||||
Q_FORMAT_RGBA_32I,
|
||||
|
||||
Q_FORMAT_PALETTE_8_RGBA_8888,
|
||||
Q_FORMAT_PALETTE_8_RGBA_5551,
|
||||
Q_FORMAT_PALETTE_8_RGBA_4444,
|
||||
Q_FORMAT_PALETTE_4_RGBA_8888,
|
||||
Q_FORMAT_PALETTE_4_RGBA_5551,
|
||||
Q_FORMAT_PALETTE_4_RGBA_4444,
|
||||
Q_FORMAT_PALETTE_1_RGBA_8888,
|
||||
Q_FORMAT_PALETTE_8_RGB_888,
|
||||
Q_FORMAT_PALETTE_8_RGB_565,
|
||||
Q_FORMAT_PALETTE_4_RGB_888,
|
||||
Q_FORMAT_PALETTE_4_RGB_565,
|
||||
|
||||
Q_FORMAT_R2_GBA10UI,
|
||||
Q_FORMAT_RGB10_A2UI,
|
||||
Q_FORMAT_RGB10_A2I,
|
||||
Q_FORMAT_RGBA_F,
|
||||
Q_FORMAT_RGBA_HF,
|
||||
|
||||
Q_FORMAT_RGB9_E5, // Last five bits are exponent bits (Read following section in GLES3 spec: "3.8.17 Shared Exponent Texture Color Conversion")
|
||||
Q_FORMAT_RGB_8UI,
|
||||
Q_FORMAT_RGB_8I,
|
||||
Q_FORMAT_RGB_565,
|
||||
Q_FORMAT_RGB_16UI,
|
||||
Q_FORMAT_RGB_16I,
|
||||
Q_FORMAT_RGB_32UI,
|
||||
Q_FORMAT_RGB_32I,
|
||||
|
||||
Q_FORMAT_RGB_F,
|
||||
Q_FORMAT_RGB_HF,
|
||||
Q_FORMAT_RGB_11_11_10_F,
|
||||
|
||||
Q_FORMAT_RG_F,
|
||||
Q_FORMAT_RG_HF,
|
||||
Q_FORMAT_RG_32UI,
|
||||
Q_FORMAT_RG_32I,
|
||||
Q_FORMAT_RG_16I,
|
||||
Q_FORMAT_RG_16UI,
|
||||
Q_FORMAT_RG_8I,
|
||||
Q_FORMAT_RG_8UI,
|
||||
Q_FORMAT_RG_S88,
|
||||
|
||||
Q_FORMAT_R_32UI,
|
||||
Q_FORMAT_R_32I,
|
||||
Q_FORMAT_R_F,
|
||||
Q_FORMAT_R_16F,
|
||||
Q_FORMAT_R_16I,
|
||||
Q_FORMAT_R_16UI,
|
||||
Q_FORMAT_R_8I,
|
||||
Q_FORMAT_R_8UI,
|
||||
|
||||
Q_FORMAT_LUMINANCE_ALPHA_88,
|
||||
Q_FORMAT_LUMINANCE_8,
|
||||
Q_FORMAT_ALPHA_8,
|
||||
|
||||
Q_FORMAT_LUMINANCE_ALPHA_F,
|
||||
Q_FORMAT_LUMINANCE_F,
|
||||
Q_FORMAT_ALPHA_F,
|
||||
Q_FORMAT_LUMINANCE_ALPHA_HF,
|
||||
Q_FORMAT_LUMINANCE_HF,
|
||||
Q_FORMAT_ALPHA_HF,
|
||||
Q_FORMAT_DEPTH_16,
|
||||
Q_FORMAT_DEPTH_24,
|
||||
Q_FORMAT_DEPTH_24_STENCIL_8,
|
||||
Q_FORMAT_DEPTH_32,
|
||||
|
||||
Q_FORMAT_BGR_565,
|
||||
Q_FORMAT_BGRA_8888,
|
||||
Q_FORMAT_BGRA_5551,
|
||||
Q_FORMAT_BGRX_8888,
|
||||
Q_FORMAT_BGRA_4444,
|
||||
// Compressed formats
|
||||
Q_FORMAT_ATITC_RGBA,
|
||||
Q_FORMAT_ATC_RGBA_EXPLICIT_ALPHA = Q_FORMAT_ATITC_RGBA,
|
||||
Q_FORMAT_ATITC_RGB,
|
||||
Q_FORMAT_ATC_RGB = Q_FORMAT_ATITC_RGB,
|
||||
Q_FORMAT_ATC_RGBA_INTERPOLATED_ALPHA,
|
||||
Q_FORMAT_ETC1_RGB8,
|
||||
Q_FORMAT_3DC_X,
|
||||
Q_FORMAT_3DC_XY,
|
||||
|
||||
Q_FORMAT_ETC2_RGB8,
|
||||
Q_FORMAT_ETC2_RGBA8,
|
||||
Q_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1,
|
||||
Q_FORMAT_ETC2_SRGB8,
|
||||
Q_FORMAT_ETC2_SRGB8_ALPHA8,
|
||||
Q_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1,
|
||||
Q_FORMAT_EAC_R_SIGNED,
|
||||
Q_FORMAT_EAC_R_UNSIGNED,
|
||||
Q_FORMAT_EAC_RG_SIGNED,
|
||||
Q_FORMAT_EAC_RG_UNSIGNED,
|
||||
|
||||
Q_FORMAT_S3TC_DXT1_RGB,
|
||||
Q_FORMAT_S3TC_DXT1_RGBA,
|
||||
Q_FORMAT_S3TC_DXT3_RGBA,
|
||||
Q_FORMAT_S3TC_DXT5_RGBA,
|
||||
|
||||
// YUV formats
|
||||
Q_FORMAT_AYUV_32,
|
||||
Q_FORMAT_I444_24,
|
||||
Q_FORMAT_YUYV_16,
|
||||
Q_FORMAT_UYVY_16,
|
||||
Q_FORMAT_I420_12,
|
||||
Q_FORMAT_YV12_12,
|
||||
Q_FORMAT_NV21_12,
|
||||
Q_FORMAT_NV12_12,
|
||||
|
||||
// ASTC Format
|
||||
Q_FORMAT_ASTC_8,
|
||||
Q_FORMAT_ASTC_16,
|
||||
};
|
||||
@@ -171,9 +171,11 @@
|
||||
<Compile Include="Unity Classes\Mesh.cs" />
|
||||
<Compile Include="Unity Classes\GameObject.cs" />
|
||||
<Compile Include="helpers.cs" />
|
||||
<Compile Include="Unity Classes\MonoBehaviour.cs" />
|
||||
<Compile Include="Unity Classes\PlayerSettings.cs" />
|
||||
<Compile Include="Unity Classes\RectTransform.cs" />
|
||||
<Compile Include="Unity Classes\Renderer.cs" />
|
||||
<Compile Include="Unity Classes\MeshRenderer.cs" />
|
||||
<Compile Include="Unity Classes\Shader.cs" />
|
||||
<Compile Include="Unity Classes\SkinnedMeshRenderer.cs" />
|
||||
<Compile Include="Unity Classes\MeshFilter.cs" />
|
||||
<Compile Include="Unity Classes\TextAsset.cs" />
|
||||
@@ -219,7 +221,6 @@
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<None Include="Resources\preview.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
|
||||
@@ -239,9 +240,11 @@
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\unity.ico" />
|
||||
<None Include="Resources\unity.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\preview.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>xcopy /y "$(ProjectDir)library" "$(TargetDir)"
|
||||
|
||||
26
Unity Studio/UnityStudioForm.Designer.cs
generated
26
Unity Studio/UnityStudioForm.Designer.cs
generated
@@ -101,6 +101,7 @@
|
||||
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
|
||||
this.saveFolderDialog1 = new System.Windows.Forms.SaveFileDialog();
|
||||
this.treeTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.all3DObjectssplitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
@@ -303,6 +304,7 @@
|
||||
//
|
||||
this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.exportAll3DMenuItem,
|
||||
this.all3DObjectssplitToolStripMenuItem,
|
||||
this.exportSelected3DMenuItem,
|
||||
this.toolStripSeparator1,
|
||||
this.exportAllAssetsMenuItem,
|
||||
@@ -315,40 +317,40 @@
|
||||
// exportAll3DMenuItem
|
||||
//
|
||||
this.exportAll3DMenuItem.Name = "exportAll3DMenuItem";
|
||||
this.exportAll3DMenuItem.Size = new System.Drawing.Size(191, 22);
|
||||
this.exportAll3DMenuItem.Size = new System.Drawing.Size(192, 22);
|
||||
this.exportAll3DMenuItem.Text = "All 3D objects";
|
||||
this.exportAll3DMenuItem.Click += new System.EventHandler(this.Export3DObjects_Click);
|
||||
//
|
||||
// exportSelected3DMenuItem
|
||||
//
|
||||
this.exportSelected3DMenuItem.Name = "exportSelected3DMenuItem";
|
||||
this.exportSelected3DMenuItem.Size = new System.Drawing.Size(191, 22);
|
||||
this.exportSelected3DMenuItem.Size = new System.Drawing.Size(192, 22);
|
||||
this.exportSelected3DMenuItem.Text = "Selected 3D objects";
|
||||
this.exportSelected3DMenuItem.Click += new System.EventHandler(this.Export3DObjects_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(188, 6);
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(189, 6);
|
||||
//
|
||||
// exportAllAssetsMenuItem
|
||||
//
|
||||
this.exportAllAssetsMenuItem.Name = "exportAllAssetsMenuItem";
|
||||
this.exportAllAssetsMenuItem.Size = new System.Drawing.Size(191, 22);
|
||||
this.exportAllAssetsMenuItem.Size = new System.Drawing.Size(192, 22);
|
||||
this.exportAllAssetsMenuItem.Text = "All assets";
|
||||
this.exportAllAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
||||
//
|
||||
// exportSelectedAssetsMenuItem
|
||||
//
|
||||
this.exportSelectedAssetsMenuItem.Name = "exportSelectedAssetsMenuItem";
|
||||
this.exportSelectedAssetsMenuItem.Size = new System.Drawing.Size(191, 22);
|
||||
this.exportSelectedAssetsMenuItem.Size = new System.Drawing.Size(192, 22);
|
||||
this.exportSelectedAssetsMenuItem.Text = "Selected assets";
|
||||
this.exportSelectedAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
||||
//
|
||||
// exportFilteredAssetsMenuItem
|
||||
//
|
||||
this.exportFilteredAssetsMenuItem.Name = "exportFilteredAssetsMenuItem";
|
||||
this.exportFilteredAssetsMenuItem.Size = new System.Drawing.Size(191, 22);
|
||||
this.exportFilteredAssetsMenuItem.Size = new System.Drawing.Size(192, 22);
|
||||
this.exportFilteredAssetsMenuItem.Text = "Filtered assets";
|
||||
this.exportFilteredAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click);
|
||||
//
|
||||
@@ -526,7 +528,7 @@
|
||||
// previewPanel
|
||||
//
|
||||
this.previewPanel.BackColor = System.Drawing.SystemColors.ControlDark;
|
||||
this.previewPanel.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("previewPanel.BackgroundImage")));
|
||||
this.previewPanel.BackgroundImage = Properties.Resources.preview;
|
||||
this.previewPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
this.previewPanel.Controls.Add(this.assetInfoLabel);
|
||||
this.previewPanel.Controls.Add(this.FMODpanel);
|
||||
@@ -811,6 +813,13 @@
|
||||
this.saveFolderDialog1.RestoreDirectory = true;
|
||||
this.saveFolderDialog1.Title = "Browse for folder";
|
||||
//
|
||||
// all3DObjectssplitToolStripMenuItem
|
||||
//
|
||||
this.all3DObjectssplitToolStripMenuItem.Name = "all3DObjectssplitToolStripMenuItem";
|
||||
this.all3DObjectssplitToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
|
||||
this.all3DObjectssplitToolStripMenuItem.Text = "All 3D objects (split)";
|
||||
this.all3DObjectssplitToolStripMenuItem.Click += new System.EventHandler(this.all3DObjectssplitToolStripMenuItem_Click);
|
||||
//
|
||||
// UnityStudioForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
@@ -818,7 +827,7 @@
|
||||
this.ClientSize = new System.Drawing.Size(1264, 630);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Icon = Properties.Resources.unity;
|
||||
this.KeyPreview = true;
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.MinimumSize = new System.Drawing.Size(620, 372);
|
||||
@@ -929,6 +938,7 @@
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripMenuItem exportClassStructuresMenuItem;
|
||||
private System.Windows.Forms.Label FMODcopyright;
|
||||
private System.Windows.Forms.ToolStripMenuItem all3DObjectssplitToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,6 +77,9 @@ namespace Unity_Studio
|
||||
[DllImport("PVRTexLibWrapper.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern void DecompressPVR(byte[] buffer, IntPtr bmp, int len);
|
||||
|
||||
[DllImport("TextureConverterWrapper.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern void Ponvert(byte[] buffer, IntPtr bmp, int nWidth, int nHeight, int len, int type);
|
||||
|
||||
|
||||
private void loadFile_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
@@ -556,7 +559,6 @@ namespace Unity_Studio
|
||||
if (enablePreview.Checked && imageTexture != null)
|
||||
{
|
||||
previewPanel.BackgroundImage = imageTexture;
|
||||
previewPanel.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -567,6 +569,7 @@ namespace Unity_Studio
|
||||
break;
|
||||
case 48:
|
||||
case 49:
|
||||
case 114:
|
||||
textPreviewBox.Visible = !textPreviewBox.Visible;
|
||||
break;
|
||||
case 128:
|
||||
@@ -698,6 +701,11 @@ namespace Unity_Studio
|
||||
break;
|
||||
}
|
||||
case 48: //Shader
|
||||
{
|
||||
Shader m_Shader = new Shader(asset, false);
|
||||
exportable = true;
|
||||
break;
|
||||
}
|
||||
case 49: //TextAsset
|
||||
{
|
||||
TextAsset m_TextAsset = new TextAsset(asset, false);
|
||||
@@ -710,7 +718,13 @@ namespace Unity_Studio
|
||||
exportable = true;
|
||||
break;
|
||||
}
|
||||
//case 89: //CubeMap
|
||||
case 114: //MonoBehaviour
|
||||
{
|
||||
var m_MonoBehaviour = new MonoBehaviour(asset, false);
|
||||
if (asset.Type1 != asset.Type2 && assetsFile.ClassStructures.ContainsKey(asset.Type1))
|
||||
exportable = true;
|
||||
break;
|
||||
}
|
||||
case 128: //Font
|
||||
{
|
||||
unityFont m_Font = new unityFont(asset, false);
|
||||
@@ -723,19 +737,6 @@ namespace Unity_Studio
|
||||
productName = plSet.productName;
|
||||
break;
|
||||
}
|
||||
case 114: //MonoBehaviour
|
||||
{
|
||||
if (asset.Offset + 0x1c + 4 > asset.sourceFile.a_Stream.BaseStream.Length)
|
||||
break;
|
||||
asset.sourceFile.a_Stream.Position = asset.Offset + 0x1c;
|
||||
var len = asset.sourceFile.a_Stream.ReadInt32();
|
||||
if (len > 0 && len < asset.Size - 4 - 0x1c)
|
||||
{
|
||||
var bytes = asset.sourceFile.a_Stream.ReadBytes(len);
|
||||
asset.Text = Encoding.UTF8.GetString(bytes);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 21: //Material
|
||||
case 43: //Mesh
|
||||
case 74: //AnimationClip
|
||||
@@ -768,7 +769,7 @@ namespace Unity_Studio
|
||||
}
|
||||
if (exportable)
|
||||
{
|
||||
if (!exportableAssetsHash.Add(asset.TypeString + asset.Text))
|
||||
if (!exportableAssetsHash.Add((asset.TypeString + asset.Text).ToUpper()))
|
||||
{
|
||||
asset.Text += " #" + asset.uniqueID;
|
||||
}
|
||||
@@ -808,6 +809,8 @@ namespace Unity_Studio
|
||||
|
||||
foreach (var m_GameObject in assetsFile.GameObjectList.Values)
|
||||
{
|
||||
assetsfileList.ParseGameObject(m_GameObject);
|
||||
|
||||
var parentNode = fileNode;
|
||||
|
||||
Transform m_Transform;
|
||||
@@ -1142,7 +1145,7 @@ namespace Unity_Studio
|
||||
|
||||
private void selectAsset(object sender, ListViewItemSelectionChangedEventArgs e)
|
||||
{
|
||||
previewPanel.BackgroundImage = global::Unity_Studio.Properties.Resources.preview;
|
||||
previewPanel.BackgroundImage = Properties.Resources.preview;
|
||||
previewPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
assetInfoLabel.Visible = false;
|
||||
assetInfoLabel.Text = null;
|
||||
@@ -1187,6 +1190,8 @@ namespace Unity_Studio
|
||||
#region Texture2D
|
||||
case 28: //Texture2D
|
||||
{
|
||||
if (imageTexture != null)
|
||||
imageTexture.Dispose();
|
||||
Texture2D m_Texture2D = new Texture2D(asset, true);
|
||||
if (asset.extension == ".dds")
|
||||
{
|
||||
@@ -1211,10 +1216,10 @@ namespace Unity_Studio
|
||||
string temptgafilepath = tempastcfilepath.Replace(".tmp", ".tga");
|
||||
File.WriteAllBytes(tempastcfilepath, Texture2DToASTC(m_Texture2D));
|
||||
Execute("astcenc.exe -d " + tempastcfilepath + " " + temptgafilepath);
|
||||
File.Delete(tempastcfilepath);
|
||||
if (File.Exists(temptgafilepath))
|
||||
{
|
||||
var tempddsfile = File.ReadAllBytes(temptgafilepath);
|
||||
File.Delete(tempastcfilepath);
|
||||
File.Delete(temptgafilepath);
|
||||
imageTexture = TGAToBMP(tempddsfile);
|
||||
imageTexture.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
||||
@@ -1222,8 +1227,14 @@ namespace Unity_Studio
|
||||
}
|
||||
else if (asset.extension == ".ktx")
|
||||
{
|
||||
StatusStripUpdate("Unsupported image for preview. Can export the ktx file.");
|
||||
imageTexture = null;
|
||||
imageTexture = new Bitmap(m_Texture2D.m_Width, m_Texture2D.m_Height);
|
||||
var rect = new Rectangle(0, 0, m_Texture2D.m_Width, m_Texture2D.m_Height);
|
||||
BitmapData bmd = imageTexture.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
||||
Ponvert(m_Texture2D.image_data, bmd.Scan0, m_Texture2D.m_Width, m_Texture2D.m_Height, m_Texture2D.image_data_size, m_Texture2D.q_format);
|
||||
imageTexture.UnlockBits(bmd);
|
||||
if (m_Texture2D.glBaseInternalFormat == KTXHeader.GL_RED || m_Texture2D.glBaseInternalFormat == KTXHeader.GL_RG)
|
||||
FixAlpha(imageTexture);
|
||||
imageTexture.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1232,13 +1243,11 @@ namespace Unity_Studio
|
||||
}
|
||||
if (imageTexture != null)
|
||||
{
|
||||
var oldimage = previewPanel.BackgroundImage;
|
||||
previewPanel.BackgroundImage = imageTexture;
|
||||
if (imageTexture.Width > previewPanel.Width || imageTexture.Height > previewPanel.Height)
|
||||
previewPanel.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
else
|
||||
previewPanel.BackgroundImageLayout = ImageLayout.Center;
|
||||
oldimage.Dispose();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1280,13 +1289,23 @@ namespace Unity_Studio
|
||||
break;
|
||||
}
|
||||
#endregion
|
||||
#region Shader & TextAsset
|
||||
#region Shader
|
||||
case 48:
|
||||
{
|
||||
Shader m_TextAsset = new Shader(asset, true);
|
||||
string m_Script_Text = Encoding.UTF8.GetString(m_TextAsset.m_Script);
|
||||
m_Script_Text = Regex.Replace(m_Script_Text, "(?<!\r)\n", "\r\n");
|
||||
textPreviewBox.Text = m_Script_Text;
|
||||
textPreviewBox.Visible = true;
|
||||
break;
|
||||
}
|
||||
#endregion
|
||||
#region TextAsset
|
||||
case 49:
|
||||
{
|
||||
TextAsset m_TextAsset = new TextAsset(asset, true);
|
||||
|
||||
string m_Script_Text = UnicodeEncoding.UTF8.GetString(m_TextAsset.m_Script);
|
||||
string m_Script_Text = Encoding.UTF8.GetString(m_TextAsset.m_Script);
|
||||
m_Script_Text = Regex.Replace(m_Script_Text, "(?<!\r)\n", "\r\n");
|
||||
textPreviewBox.Text = m_Script_Text;
|
||||
textPreviewBox.Visible = true;
|
||||
@@ -1294,6 +1313,16 @@ namespace Unity_Studio
|
||||
break;
|
||||
}
|
||||
#endregion
|
||||
#region MonoBehaviour
|
||||
case 114:
|
||||
{
|
||||
MonoBehaviour m_MonoBehaviour = new MonoBehaviour(asset, true);
|
||||
textPreviewBox.Text = m_MonoBehaviour.serializedText;
|
||||
textPreviewBox.Visible = true;
|
||||
|
||||
break;
|
||||
}
|
||||
#endregion
|
||||
#region Font
|
||||
case 128: //Font
|
||||
{
|
||||
@@ -1356,6 +1385,19 @@ namespace Unity_Studio
|
||||
}
|
||||
}
|
||||
|
||||
private void FixAlpha(Bitmap imageTexture)
|
||||
{
|
||||
for (int y = 0; y < imageTexture.Height; y++)
|
||||
{
|
||||
for (int x = 0; x < imageTexture.Width; x++)
|
||||
{
|
||||
var color = imageTexture.GetPixel(x, y);
|
||||
color = Color.FromArgb(255, color.R, color.G, color.B);
|
||||
imageTexture.SetPixel(x, y, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] Texture2DToDDS(Texture2D m_Texture2D)
|
||||
{
|
||||
byte[] imageBuffer = new byte[128 + m_Texture2D.image_data_size];
|
||||
@@ -1405,15 +1447,15 @@ namespace Unity_Studio
|
||||
{
|
||||
var mstream = new MemoryStream();
|
||||
var writer = new BinaryWriter(mstream);
|
||||
Array.Copy(BitConverter.GetBytes(m_Texture2D.m_Width), 0, m_Texture2D.astc_width, 0, 3);
|
||||
Array.Copy(BitConverter.GetBytes(m_Texture2D.m_Height), 0, m_Texture2D.astc_height, 0, 3);
|
||||
writer.Write(m_Texture2D.astc_magicnum);
|
||||
writer.Write(m_Texture2D.astc_x);
|
||||
writer.Write(m_Texture2D.astc_y);
|
||||
writer.Write(m_Texture2D.astc_z);
|
||||
writer.Write(m_Texture2D.astc_width);
|
||||
writer.Write(m_Texture2D.astc_height);
|
||||
writer.Write(m_Texture2D.astc_length);
|
||||
Array.Copy(BitConverter.GetBytes(m_Texture2D.m_Width), 0, m_Texture2D.xsize, 0, 3);
|
||||
Array.Copy(BitConverter.GetBytes(m_Texture2D.m_Height), 0, m_Texture2D.ysize, 0, 3);
|
||||
writer.Write(m_Texture2D.astc_magic);
|
||||
writer.Write(m_Texture2D.blockdim_x);
|
||||
writer.Write(m_Texture2D.blockdim_y);
|
||||
writer.Write(m_Texture2D.blockdim_z);
|
||||
writer.Write(m_Texture2D.xsize);
|
||||
writer.Write(m_Texture2D.ysize);
|
||||
writer.Write(m_Texture2D.zsize);
|
||||
writer.Write(m_Texture2D.image_data);
|
||||
var astcdata = mstream.ToArray();
|
||||
writer.Close();
|
||||
@@ -1823,6 +1865,71 @@ namespace Unity_Studio
|
||||
else { return false; }
|
||||
}
|
||||
|
||||
private void all3DObjectssplitToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (sceneTreeView.Nodes.Count > 0)
|
||||
{
|
||||
if (saveFolderDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
var savePath = saveFolderDialog1.FileName;
|
||||
if (Path.GetFileName(savePath) == "Select folder or write folder name to create")
|
||||
{ savePath = Path.GetDirectoryName(saveFolderDialog1.FileName); }
|
||||
savePath = savePath + "\\";
|
||||
switch ((bool)Properties.Settings.Default["showExpOpt"])
|
||||
{
|
||||
case true:
|
||||
ExportOptions exportOpt = new ExportOptions();
|
||||
if (exportOpt.ShowDialog() == DialogResult.OK) { goto case false; }
|
||||
break;
|
||||
case false:
|
||||
{
|
||||
progressBar1.Value = 0;
|
||||
progressBar1.Maximum = sceneTreeView.Nodes.Count;
|
||||
//防止主界面假死
|
||||
ThreadPool.QueueUserWorkItem(delegate
|
||||
{
|
||||
sceneTreeView.Invoke(new Action(() =>
|
||||
{
|
||||
//挂起控件防止更新
|
||||
sceneTreeView.BeginUpdate();
|
||||
//先取消所有Node的选中
|
||||
foreach (TreeNode i in sceneTreeView.Nodes)
|
||||
{
|
||||
i.Checked = false;
|
||||
}
|
||||
}));
|
||||
//遍历根节点
|
||||
foreach (TreeNode i in sceneTreeView.Nodes)
|
||||
{
|
||||
if (i.Nodes.Count > 0)
|
||||
{
|
||||
//遍历一级子节点
|
||||
foreach (TreeNode j in i.Nodes)
|
||||
{
|
||||
//加上时间,因为可能有重名的object
|
||||
var filename = j.Text + DateTime.Now.ToString("_mm_ss_ffff");
|
||||
//选中它和它的子节点
|
||||
sceneTreeView.Invoke(new Action(() => j.Checked = true));
|
||||
//导出FBX
|
||||
WriteFBX(savePath + filename + ".fbx", false);
|
||||
//取消选中
|
||||
sceneTreeView.Invoke(new Action(() => j.Checked = false));
|
||||
}
|
||||
}
|
||||
ProgressBarPerformStep();
|
||||
}
|
||||
//取消挂起
|
||||
sceneTreeView.Invoke(new Action(() => sceneTreeView.EndUpdate()));
|
||||
if (openAfterExport.Checked) { Process.Start(savePath); }
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else { StatusStripUpdate("No Objects available for export"); }
|
||||
}
|
||||
|
||||
private void Export3DObjects_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -1853,7 +1960,7 @@ namespace Unity_Studio
|
||||
break;
|
||||
}
|
||||
|
||||
if (openAfterExport.Checked && File.Exists(saveFileDialog1.FileName)) { System.Diagnostics.Process.Start(saveFileDialog1.FileName); }
|
||||
if (openAfterExport.Checked && File.Exists(saveFileDialog1.FileName)) { try { Process.Start(saveFileDialog1.FileName); } catch { } }
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1927,9 +2034,9 @@ namespace Unity_Studio
|
||||
|
||||
#region get Renderer
|
||||
AssetPreloadData RendererPD;
|
||||
if (assetsfileList.TryGetPD(m_GameObject.m_Renderer, out RendererPD))
|
||||
if (assetsfileList.TryGetPD(m_GameObject.m_MeshRenderer, out RendererPD))
|
||||
{
|
||||
Renderer m_Renderer = new Renderer(RendererPD);
|
||||
MeshRenderer m_Renderer = new MeshRenderer(RendererPD);
|
||||
|
||||
foreach (var MaterialPPtr in m_Renderer.m_Materials)
|
||||
{
|
||||
@@ -2521,8 +2628,6 @@ namespace Unity_Studio
|
||||
cb.Append(cb2); cb2.Clear();
|
||||
|
||||
#region write & extract Textures
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(FBXfile) + "\\Texture2D");
|
||||
|
||||
foreach (var TexturePD in Textures)
|
||||
{
|
||||
//TODO check texture type and set path accordingly; eg. CubeMap, Texture3D
|
||||
@@ -3060,9 +3165,9 @@ namespace Unity_Studio
|
||||
}
|
||||
break;
|
||||
case 48:
|
||||
if (!ExportFileExists(exportpath + asset.Text + ".txt", asset.TypeString))
|
||||
if (!ExportFileExists(exportpath + asset.Text + asset.extension, asset.TypeString))
|
||||
{
|
||||
ExportText(new TextAsset(asset, true), exportpath + asset.Text + ".txt");
|
||||
ExportShader(new Shader(asset, true), exportpath + asset.Text + ".txt");
|
||||
exportedCount++;
|
||||
}
|
||||
break;
|
||||
@@ -3074,6 +3179,14 @@ namespace Unity_Studio
|
||||
exportedCount++;
|
||||
}
|
||||
break;
|
||||
case 114:
|
||||
MonoBehaviour m_MonoBehaviour = new MonoBehaviour(asset, true);
|
||||
if (!ExportFileExists(exportpath + asset.Text + asset.extension, asset.TypeString))
|
||||
{
|
||||
ExportMonoBehaviour(m_MonoBehaviour, exportpath + asset.Text + asset.extension);
|
||||
exportedCount++;
|
||||
}
|
||||
break;
|
||||
case 128:
|
||||
unityFont m_Font = new unityFont(asset, true);
|
||||
if (!ExportFileExists(exportpath + asset.Text + asset.extension, asset.TypeString))
|
||||
@@ -3127,8 +3240,9 @@ namespace Unity_Studio
|
||||
private bool ExportTexture(AssetPreloadData asset, string exportFilename, string exportFileextension, bool flip)
|
||||
{
|
||||
ImageFormat format = null;
|
||||
var convert = (bool)Properties.Settings.Default["convertTexture"];
|
||||
var oldextension = exportFileextension;
|
||||
if ((bool)Properties.Settings.Default["convertTexture"])
|
||||
if (convert && exportFileextension != ".tex")
|
||||
{
|
||||
string str = Properties.Settings.Default["convertType"] as string;
|
||||
exportFileextension = "." + str.ToLower();
|
||||
@@ -3140,18 +3254,13 @@ namespace Unity_Studio
|
||||
format = ImageFormat.Jpeg;
|
||||
}
|
||||
var exportFullname = exportFilename + exportFileextension;
|
||||
if (File.Exists(exportFullname))
|
||||
{
|
||||
StatusStripUpdate("Texture2D file " + Path.GetFileName(exportFullname) + " already exists");
|
||||
if (ExportFileExists(exportFullname, "Texture2D"))
|
||||
return false;
|
||||
}
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(exportFullname));
|
||||
StatusStripUpdate("Exporting Texture2D: " + Path.GetFileName(exportFullname));
|
||||
var m_Texture2D = new Texture2D(asset, true);
|
||||
if (oldextension == ".dds")
|
||||
{
|
||||
byte[] imageBuffer = Texture2DToDDS(m_Texture2D);
|
||||
if ((bool)Properties.Settings.Default["convertTexture"])
|
||||
if (convert)
|
||||
{
|
||||
var bitmap = DDSToBMP(imageBuffer);
|
||||
if (flip)
|
||||
@@ -3166,7 +3275,7 @@ namespace Unity_Studio
|
||||
else if (oldextension == ".pvr")
|
||||
{
|
||||
var pvrdata = Texture2DToPVR(m_Texture2D);
|
||||
if ((bool)Properties.Settings.Default["convertTexture"])
|
||||
if (convert)
|
||||
{
|
||||
var bitmap = new Bitmap(m_Texture2D.m_Width, m_Texture2D.m_Height);
|
||||
Rectangle rect = new Rectangle(0, 0, m_Texture2D.m_Width, m_Texture2D.m_Height);
|
||||
@@ -3186,7 +3295,7 @@ namespace Unity_Studio
|
||||
else if (oldextension == ".astc")
|
||||
{
|
||||
var astcdata = Texture2DToASTC(m_Texture2D);
|
||||
if ((bool)Properties.Settings.Default["convertTexture"])
|
||||
if (convert)
|
||||
{
|
||||
string tempastcfilepath = Path.GetTempFileName();
|
||||
string temptgafilepath = tempastcfilepath.Replace(".tmp", ".tga");
|
||||
@@ -3210,8 +3319,24 @@ namespace Unity_Studio
|
||||
}
|
||||
else if (oldextension == ".ktx")
|
||||
{
|
||||
var ktxdata = Texture2DToKTX(m_Texture2D);
|
||||
File.WriteAllBytes(exportFullname, ktxdata);
|
||||
if (convert)
|
||||
{
|
||||
var bitmap = new Bitmap(m_Texture2D.m_Width, m_Texture2D.m_Height);
|
||||
var rect = new Rectangle(0, 0, m_Texture2D.m_Width, m_Texture2D.m_Height);
|
||||
var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
||||
Ponvert(m_Texture2D.image_data, bmd.Scan0, m_Texture2D.m_Width, m_Texture2D.m_Height, m_Texture2D.image_data_size, m_Texture2D.q_format);
|
||||
bitmap.UnlockBits(bmd);
|
||||
if (m_Texture2D.glBaseInternalFormat == KTXHeader.GL_RED || m_Texture2D.glBaseInternalFormat == KTXHeader.GL_RG)
|
||||
FixAlpha(bitmap);
|
||||
if (flip)
|
||||
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
||||
bitmap.Save(exportFullname, format);
|
||||
}
|
||||
else
|
||||
{
|
||||
var ktxdata = Texture2DToKTX(m_Texture2D);
|
||||
File.WriteAllBytes(exportFullname, ktxdata);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3228,31 +3353,23 @@ namespace Unity_Studio
|
||||
exportFileextension = ".wav";
|
||||
}
|
||||
var exportFullname = exportFilename + exportFileextension;
|
||||
if (File.Exists(exportFullname))
|
||||
{
|
||||
StatusStripUpdate("AudioClip file " + Path.GetFileName(exportFullname) + " already exists");
|
||||
if (ExportFileExists(exportFullname, "AudioClip"))
|
||||
return false;
|
||||
}
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(exportFullname));
|
||||
StatusStripUpdate("Exporting AudioClip: " + Path.GetFileName(exportFullname));
|
||||
var m_AudioClip = new AudioClip(asset, true);
|
||||
if ((bool)Properties.Settings.Default["convertfsb"] && oldextension == ".fsb")
|
||||
{
|
||||
FMOD.System system;
|
||||
FMOD.Sound sound;
|
||||
FMOD.RESULT result;
|
||||
FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();
|
||||
|
||||
result = FMOD.Factory.System_Create(out system);
|
||||
if (ERRCHECK(result)) { return false; }
|
||||
|
||||
result = system.setOutput(FMOD.OUTPUTTYPE.WAVWRITER_NRT);
|
||||
result = system.setOutput(FMOD.OUTPUTTYPE.NOSOUND_NRT);
|
||||
if (ERRCHECK(result)) { return false; }
|
||||
|
||||
//var pObject = Marshal.StringToHGlobalUni(exportFilename.Replace("fsb", "wav")); not work
|
||||
var bytes = Encoding.UTF8.GetBytes(exportFullname);
|
||||
GCHandle hObject = GCHandle.Alloc(bytes, GCHandleType.Pinned);
|
||||
var pObject = hObject.AddrOfPinnedObject();
|
||||
result = system.init(1, FMOD.INITFLAGS.NORMAL, pObject);
|
||||
hObject.Free();
|
||||
result = system.init(1, FMOD.INITFLAGS.NORMAL, (IntPtr)null);
|
||||
if (ERRCHECK(result)) { return false; }
|
||||
|
||||
exinfo.cbsize = Marshal.SizeOf(exinfo);
|
||||
@@ -3270,28 +3387,55 @@ namespace Unity_Studio
|
||||
result = sound.setLoopCount(-1);
|
||||
if (ERRCHECK(result)) { return false; }
|
||||
|
||||
result = system.playSound(sound, null, false, out channel);
|
||||
uint length;
|
||||
result = sound.getLength(out length, FMOD.TIMEUNIT.PCMBYTES);
|
||||
if (ERRCHECK(result)) { return false; }
|
||||
|
||||
bool playing = false;
|
||||
do
|
||||
{
|
||||
system.update();
|
||||
result = channel.isPlaying(out playing);
|
||||
} while (playing);
|
||||
IntPtr ptr1, ptr2;
|
||||
uint len1, len2;
|
||||
result = sound.@lock(0, length, out ptr1, out ptr2, out len1, out len2);
|
||||
if (ERRCHECK(result)) { return false; }
|
||||
|
||||
byte[] buffer = new byte[len1 + 44];
|
||||
//添加wav头
|
||||
Encoding.UTF8.GetBytes("RIFF").CopyTo(buffer, 0);
|
||||
BitConverter.GetBytes(len1 + 36).CopyTo(buffer, 4);
|
||||
Encoding.UTF8.GetBytes("WAVEfmt ").CopyTo(buffer, 8);
|
||||
BitConverter.GetBytes(16).CopyTo(buffer, 16);
|
||||
BitConverter.GetBytes((short)1).CopyTo(buffer, 20);
|
||||
BitConverter.GetBytes((short)m_AudioClip.m_Channels).CopyTo(buffer, 22);
|
||||
BitConverter.GetBytes(m_AudioClip.m_Frequency).CopyTo(buffer, 24);
|
||||
BitConverter.GetBytes(m_AudioClip.m_Frequency * m_AudioClip.m_Channels * m_AudioClip.m_BitsPerSample / 8).CopyTo(buffer, 28);
|
||||
BitConverter.GetBytes((short)(m_AudioClip.m_Channels * m_AudioClip.m_BitsPerSample / 8)).CopyTo(buffer, 32);
|
||||
BitConverter.GetBytes((short)m_AudioClip.m_BitsPerSample).CopyTo(buffer, 34);
|
||||
Encoding.UTF8.GetBytes("data").CopyTo(buffer, 36);
|
||||
BitConverter.GetBytes(len1).CopyTo(buffer, 40);
|
||||
Marshal.Copy(ptr1, buffer, 44, (int)len1);
|
||||
File.WriteAllBytes(exportFullname, buffer);
|
||||
|
||||
result = sound.unlock(ptr1, ptr2, len1, len2);
|
||||
if (ERRCHECK(result)) { return false; }
|
||||
|
||||
sound.release();
|
||||
system.release();
|
||||
system = null;
|
||||
sound = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
File.WriteAllBytes(exportFilename, m_AudioClip.m_AudioData);
|
||||
File.WriteAllBytes(exportFullname, m_AudioClip.m_AudioData);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void ExportMonoBehaviour(MonoBehaviour m_MonoBehaviour, string exportFilename)
|
||||
{
|
||||
File.WriteAllText(exportFilename, m_MonoBehaviour.serializedText);
|
||||
}
|
||||
|
||||
private void ExportShader(Shader m_Shader, string exportFilename)
|
||||
{
|
||||
File.WriteAllBytes(exportFilename, m_Shader.m_Script);
|
||||
}
|
||||
|
||||
private void ExportText(TextAsset m_TextAsset, string exportFilename)
|
||||
{
|
||||
File.WriteAllBytes(exportFilename, m_TextAsset.m_Script);
|
||||
@@ -3315,7 +3459,6 @@ namespace Unity_Studio
|
||||
else
|
||||
{
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(filename));
|
||||
|
||||
StatusStripUpdate("Exporting " + assetType + ": " + Path.GetFileName(filename));
|
||||
return false;
|
||||
}
|
||||
@@ -3405,7 +3548,7 @@ namespace Unity_Studio
|
||||
classesListView.Items.Clear();
|
||||
classesListView.Groups.Clear();
|
||||
|
||||
previewPanel.BackgroundImage = global::Unity_Studio.Properties.Resources.preview;
|
||||
previewPanel.BackgroundImage = Properties.Resources.preview;
|
||||
previewPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
assetInfoLabel.Visible = false;
|
||||
assetInfoLabel.Text = null;
|
||||
|
||||
@@ -117,183 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>325, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="previewPanel.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
B4miQIUoSo42AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
<data name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>325, 17</value>
|
||||
</data>
|
||||
<data name="fontPreviewBox.Text" xml:space="preserve">
|
||||
<value>abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ
|
||||
@@ -313,525 +139,32 @@ The quick brown fox jumps over the lazy dog. 1234567890
|
||||
|
||||
The quick brown fox jumps over the lazy dog. 1234567890</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<data name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>440, 17</value>
|
||||
</metadata>
|
||||
<metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
</data>
|
||||
<data name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>556, 17</value>
|
||||
</metadata>
|
||||
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
</data>
|
||||
<data name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>636, 17</value>
|
||||
</metadata>
|
||||
</data>
|
||||
<data name="openFileDialog1.Filter" xml:space="preserve">
|
||||
<value>Unity asset files|level*; globalgamemanagers; mainData; CustomAssetBundle-*; CAB-*; BuildPlayer-*; *.assets; *.sharedAssets|Unity bundle files|*.unity3d; *.unity3d.lz4; *.assetbundle; *.bundle; *.bytes</value>
|
||||
</data>
|
||||
<metadata name="openFolderDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<data name="openFolderDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>169, 17</value>
|
||||
</metadata>
|
||||
<metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
</data>
|
||||
<data name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>776, 17</value>
|
||||
</metadata>
|
||||
<metadata name="saveFolderDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
</data>
|
||||
<data name="saveFolderDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="treeTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
</data>
|
||||
<data name="treeTip.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<value>912, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
</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>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
mP8HaXmb6e5VKzoAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -24,13 +24,13 @@ namespace Unity_Studio
|
||||
int FileID = a_Stream.ReadInt32();
|
||||
if (FileID >= 0 && FileID < sourceFile.sharedAssetsList.Count)
|
||||
{ result.m_FileID = sourceFile.sharedAssetsList[FileID].Index; }
|
||||
|
||||
|
||||
if (sourceFile.fileGen < 14) { result.m_PathID = a_Stream.ReadInt32(); }
|
||||
else { result.m_PathID = a_Stream.ReadInt64(); }
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static bool TryGetPD(this List<AssetsFile> assetsfileList, PPtr m_elm, out AssetPreloadData result)
|
||||
{
|
||||
result = null;
|
||||
@@ -73,6 +73,44 @@ namespace Unity_Studio
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void ParseGameObject(this List<AssetsFile> assetsfileList, GameObject m_GameObject)
|
||||
{
|
||||
foreach (var m_Component in m_GameObject.m_Components)
|
||||
{
|
||||
if (m_Component.m_FileID >= 0 && m_Component.m_FileID < assetsfileList.Count)
|
||||
{
|
||||
AssetsFile sourceFile = assetsfileList[m_Component.m_FileID];
|
||||
AssetPreloadData asset;
|
||||
if (sourceFile.preloadTable.TryGetValue(m_Component.m_PathID, out asset))
|
||||
{
|
||||
switch (asset.Type2)
|
||||
{
|
||||
case 4: //Transform
|
||||
{
|
||||
m_GameObject.m_Transform = m_Component;
|
||||
break;
|
||||
}
|
||||
case 23: //MeshRenderer
|
||||
{
|
||||
m_GameObject.m_MeshRenderer = m_Component;
|
||||
break;
|
||||
}
|
||||
case 33: //MeshFilter
|
||||
{
|
||||
m_GameObject.m_MeshFilter = m_Component;
|
||||
break;
|
||||
}
|
||||
case 137: //SkinnedMeshRenderer
|
||||
{
|
||||
m_GameObject.m_SkinnedMeshRenderer = m_Component;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TexEnv
|
||||
|
||||
Binary file not shown.
BIN
Unity Studio/library/x64/TextureConverter.dll
Normal file
BIN
Unity Studio/library/x64/TextureConverter.dll
Normal file
Binary file not shown.
BIN
Unity Studio/library/x64/TextureConverterWrapper.dll
Normal file
BIN
Unity Studio/library/x64/TextureConverterWrapper.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
Unity Studio/library/x86/TextureConverter.dll
Normal file
BIN
Unity Studio/library/x86/TextureConverter.dll
Normal file
Binary file not shown.
BIN
Unity Studio/library/x86/TextureConverterWrapper.dll
Normal file
BIN
Unity Studio/library/x86/TextureConverterWrapper.dll
Normal file
Binary file not shown.
Reference in New Issue
Block a user