예제 #1
0
 /// <inheritdoc />
 public void OnAfterDeserialize()
 {
     file = null;
 }
예제 #2
0
        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--;
            }
        }