diff --git a/Unity Studio/Unity Classes/MovieTexture.cs b/Unity Studio/Unity Classes/MovieTexture.cs new file mode 100644 index 0000000..da1de63 --- /dev/null +++ b/Unity Studio/Unity Classes/MovieTexture.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Unity_Studio +{ + class MovieTexture + { + public string m_Name; + public byte[] m_MovieData; + + public MovieTexture(AssetPreloadData preloadData, bool readSwitch) + { + var sourceFile = preloadData.sourceFile; + var a_Stream = preloadData.sourceFile.a_Stream; + a_Stream.Position = preloadData.Offset; + + m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32()); + if (readSwitch) + { + var m_Loop = a_Stream.ReadBoolean(); + a_Stream.AlignStream(4); + //PPtr + sourceFile.ReadPPtr(); + var size = a_Stream.ReadInt32(); + m_MovieData = a_Stream.ReadBytes(size); + var m_ColorSpace = a_Stream.ReadInt32(); + } + else + { + preloadData.extension = ".ogv"; + preloadData.Text = m_Name; + } + } + } +} diff --git a/Unity Studio/Unity Studio Classes/UnityStudio.cs b/Unity Studio/Unity Studio Classes/UnityStudio.cs index fed1aaa..a447f48 100644 --- a/Unity Studio/Unity Studio Classes/UnityStudio.cs +++ b/Unity Studio/Unity Studio Classes/UnityStudio.cs @@ -295,6 +295,12 @@ namespace Unity_Studio exportable = true; break; } + case 152: //MovieTexture + { + var m_MovieTexture = new MovieTexture(asset, false); + exportable = true; + break; + } case 21: //Material case 74: //AnimationClip case 90: //Avatar @@ -1826,6 +1832,16 @@ namespace Unity_Studio return false; } + public static bool ExportMovieTexture(AssetPreloadData asset, string exportPath) + { + var m_MovieTexture = new MovieTexture(asset, true); + var exportFullName = exportPath + asset.Text + asset.extension; + if (ExportFileExists(exportFullName)) + return false; + File.WriteAllBytes(exportFullName, m_MovieTexture.m_MovieData); + return true; + } + public static bool ExportRawFile(AssetPreloadData asset, string exportPath) { var exportFullName = exportPath + asset.Text + asset.extension; diff --git a/Unity Studio/Unity Studio-x86.csproj b/Unity Studio/Unity Studio-x86.csproj index 3a862bb..a2b4ddd 100644 --- a/Unity Studio/Unity Studio-x86.csproj +++ b/Unity Studio/Unity Studio-x86.csproj @@ -142,6 +142,7 @@ True + diff --git a/Unity Studio/Unity Studio.csproj b/Unity Studio/Unity Studio.csproj index 0ef88f3..05cf86e 100644 --- a/Unity Studio/Unity Studio.csproj +++ b/Unity Studio/Unity Studio.csproj @@ -142,6 +142,7 @@ ShaderResource.resx + diff --git a/Unity Studio/UnityStudioForm.cs b/Unity Studio/UnityStudioForm.cs index 3227583..511ed00 100644 --- a/Unity Studio/UnityStudioForm.cs +++ b/Unity Studio/UnityStudioForm.cs @@ -1103,13 +1103,9 @@ namespace Unity_Studio #endregion #region VideoClip case 329: + case 152: //MovieTexture { - var str = asset.ViewStruct(); - if (str != null) - { - textPreviewBox.Text = str; - textPreviewBox.Visible = true; - } + StatusStripUpdate("Only supported export."); break; } #endregion @@ -1619,6 +1615,12 @@ namespace Unity_Studio exportedCount++; } break; + case 152: //MovieTexture + if (ExportMovieTexture(asset, exportpath)) + { + exportedCount++; + } + break; default: if (ExportRawFile(asset, exportpath)) {