/// <inheritdoc /> public void OnAfterDeserialize() { file = null; }
private void OnGUI() { GUILayout.BeginHorizontal(); FilePath = EditorGUILayout.TextField(FilePath); if (GUILayout.Button("...")) { FilePath = EditorUtility.OpenFilePanel("Open RES file!", string.IsNullOrEmpty(FilePath) ? Application.dataPath : FilePath, "res"); } GUILayout.EndHorizontal(); if (GUILayout.Button("Load RES!")) { file = RESFile.OpenFile(FilePath); PaletteGuis.Clear(); MaterialsGUI.Clear(); for (int i = 0; i < file.Palettes.Count; i++) { PaletteGuis.Add(new PaletteGUI(file.Palettes[i])); } for (int i = 0; i < file.Materials.Count; i++) { MaterialsGUI.Add(new MaterialGUI(file.Materials[i])); } IsOpen = true; } if (file == null && !IsOpen) { EditorGUILayout.LabelField("RES file not loaded!"); return; } if (GUILayout.Button("Close")) { for (int i = 0; i < PaletteGuis.Count; i++) { PaletteGuis[i] = null; } for (int i = 0; i < MaterialsGUI.Count; i++) { MaterialsGUI[i].Destroy(); } PaletteGuis.Clear(); MaterialsGUI.Clear(); IsOpen = false; file = null; return; } SoundFilesOpen = EditorGUILayout.Foldout(SoundFilesOpen, "SOUNDFILES"); if (SoundFilesOpen) { SoundScrollPos = EditorGUILayout.BeginScrollView(SoundScrollPos); EditorGUILayout.BeginVertical(); EditorGUI.indentLevel++; for (int i = 0; i < file.SoundFiles.Count; i++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button($"Play {file.SoundFiles[i].Name}")) { AudioClip clip = ((SoundFile)file.SoundFiles[i].Item).CreateAudioClip(); } if (GUILayout.Button($"Save", GUILayout.Width(50))) { File.WriteAllBytes(Application.dataPath + $"\\{file.SoundFiles[i].Name}", ((SoundFile)file.SoundFiles[i].Item).GetBytes()); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); EditorGUI.indentLevel--; } PaletteFilesOpen = EditorGUILayout.Foldout(PaletteFilesOpen, "PALETTEFILES"); if (PaletteFilesOpen) { PaletteScrollPos = EditorGUILayout.BeginScrollView(PaletteScrollPos); EditorGUILayout.BeginVertical(); EditorGUI.indentLevel++; for (int i = 0; i < PaletteGuis.Count; i++) { PaletteGuis[i].OnGUI(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); } TextureFilesOpen = EditorGUILayout.Foldout(TextureFilesOpen, "TEXTUREFILES"); if (TextureFilesOpen) { TextureFilesScrollPos = EditorGUILayout.BeginScrollView(TextureFilesScrollPos); EditorGUILayout.BeginVertical(); EditorGUI.indentLevel++; for (int i = 0; i < file.TextureFiles.Count; i++) { EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxHeight(128)); EditorGUILayout.BeginHorizontal(); float width = EditorGUIUtility.currentViewWidth; EditorGUILayout.BeginVertical(GUILayout.MaxWidth((width / 2) - 40)); RnRTexture tex = (RnRTexture)file.TextureFiles[i].Item; EditorGUILayout.LabelField($"Texture: {file.TextureFiles[i].Name}", EditorStyles.boldLabel); EditorGUILayout.LabelField($"Dimensions: {tex.Texture.width}x{tex.Texture.height}", EditorStyles.boldLabel); EditorGUILayout.LabelField($"Format: {tex.Texture.format:G}", EditorStyles.boldLabel); EditorGUILayout.EndVertical(); EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth((width / 2) + 20)); Rect layoutRect = EditorGUILayout.GetControlRect(GUILayout.Height(128)); EditorGUI.DrawTextureTransparent(layoutRect, tex.Texture, ScaleMode.ScaleToFit); //EditorGUILayout.HelpBox(new GUIContent(tex.Texture)); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); EditorGUI.indentLevel--; } MaskFilesOpen = EditorGUILayout.Foldout(MaskFilesOpen, "MASKFILES"); if (MaskFilesOpen) { MaskFilesScrollPos = EditorGUILayout.BeginScrollView(MaskFilesScrollPos); EditorGUILayout.BeginVertical(); EditorGUI.indentLevel++; for (int i = 0; i < file.MaskFiles.Count; i++) { EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxHeight(128)); EditorGUILayout.BeginHorizontal(); float width = EditorGUIUtility.currentViewWidth; EditorGUILayout.BeginVertical(GUILayout.MaxWidth((width / 2) - 40)); RnRTexture tex = (RnRTexture)file.MaskFiles[i].Item; EditorGUILayout.LabelField($"Texture: {file.MaskFiles[i].Name}", EditorStyles.boldLabel); EditorGUILayout.LabelField($"Dimensions: {tex.Texture.width}x{tex.Texture.height}", EditorStyles.boldLabel); EditorGUILayout.LabelField($"Format: {tex.Texture.format:G}", EditorStyles.boldLabel); EditorGUILayout.EndVertical(); EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth((width / 2) + 20)); Rect layoutRect = EditorGUILayout.GetControlRect(GUILayout.Height(128)); EditorGUI.DrawTextureTransparent(layoutRect, tex.Texture, ScaleMode.ScaleToFit); //EditorGUILayout.HelpBox(new GUIContent(tex.Texture)); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); EditorGUI.indentLevel--; } MaterialsOpen = EditorGUILayout.Foldout(MaterialsOpen, "MATERIALS"); if (MaterialsOpen) { MaterialsScrollPos = EditorGUILayout.BeginScrollView(MaterialsScrollPos); EditorGUILayout.BeginVertical(); EditorGUI.indentLevel++; for (int i = 0; i < MaterialsGUI.Count; i++) { MaterialsGUI[i].OnGUI(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); EditorGUI.indentLevel--; } }