From 87dcb1024f6a5a9a61aecc9b8534208350e22ae7 Mon Sep 17 00:00:00 2001 From: "aliaksei.kalosha" Date: Sat, 12 Apr 2025 01:40:06 +0200 Subject: [PATCH] fix bug with reimport of texture --- Editor/VramEditorWindow.cs | 8 +++++++- Runtime/PSXSceneExporter.cs | 10 ++++++++-- Runtime/Utils.cs | 16 ++++++++++++---- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/Editor/VramEditorWindow.cs b/Editor/VramEditorWindow.cs index 331f663..7581825 100644 --- a/Editor/VramEditorWindow.cs +++ b/Editor/VramEditorWindow.cs @@ -113,11 +113,16 @@ namespace SplashEdit.EditorCode // Retrieve all PSXObjectExporter objects and create their PSX textures. PSXObjectExporter[] objects = FindObjectsByType(FindObjectsSortMode.None); - foreach (PSXObjectExporter exp in objects) + for (int i = 0; i < objects.Length; i++) { + + EditorUtility.DisplayProgressBar($"{nameof(VRAMEditorWindow)}", $"Export {nameof(PSXObjectExporter)}", ((float)i) / objects.Length); + PSXObjectExporter exp = objects[i]; exp.CreatePSXTextures2D(); } + EditorUtility.ClearProgressBar(); + // Define framebuffer regions based on selected resolution and layout. (Rect buffer1, Rect buffer2) = Utils.BufferForResolution(selectedResolution, verticalLayout); @@ -157,6 +162,7 @@ namespace SplashEdit.EditorCode } } } + } private void OnGUI() diff --git a/Runtime/PSXSceneExporter.cs b/Runtime/PSXSceneExporter.cs index 688e23c..dbbdca0 100644 --- a/Runtime/PSXSceneExporter.cs +++ b/Runtime/PSXSceneExporter.cs @@ -34,18 +34,24 @@ namespace SplashEdit.RuntimeCode _psxData = DataStorage.LoadData(out selectedResolution, out dualBuffering, out verticalLayout, out prohibitedAreas); _exporters = FindObjectsByType(FindObjectsSortMode.None); - foreach (PSXObjectExporter exp in _exporters) + for (int i = 0; i < _exporters.Length; i++) { + PSXObjectExporter exp = _exporters[i]; + EditorUtility.DisplayProgressBar($"{nameof(PSXSceneExporter)}", $"Export {nameof(PSXObjectExporter)}", ((float)i)/ _exporters.Length); exp.CreatePSXTextures2D(); exp.CreatePSXMesh(GTEScaling); } _navmeshes = FindObjectsByType(FindObjectsSortMode.None); - foreach (PSXNavMesh navmesh in _navmeshes) + for (int i = 0; i < _navmeshes.Length; i++) { + PSXNavMesh navmesh = _navmeshes[i]; + EditorUtility.DisplayProgressBar($"{nameof(PSXSceneExporter)}", $"Export {nameof(PSXNavMesh)}", ((float)i) / _navmeshes.Length); navmesh.CreateNavmesh(GTEScaling); } + EditorUtility.ClearProgressBar(); + PackTextures(); PSXPlayer player = FindObjectsByType(FindObjectsSortMode.None).FirstOrDefault(); diff --git a/Runtime/Utils.cs b/Runtime/Utils.cs index 143dd47..6393dd3 100644 --- a/Runtime/Utils.cs +++ b/Runtime/Utils.cs @@ -342,16 +342,24 @@ namespace SplashEdit.RuntimeCode } string assetPath = AssetDatabase.GetAssetPath(texture); var tImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter; + bool needReimport = false; if (tImporter != null) { if (tImporter.maxTextureSize > MaxTextureSize) { tImporter.maxTextureSize = MaxTextureSize; + needReimport = true; + } + if (tImporter.isReadable != isReadable) + { + tImporter.isReadable = isReadable; + needReimport = true; + } + if (needReimport) + { + AssetDatabase.ImportAsset(assetPath); + AssetDatabase.Refresh(); } - tImporter.isReadable = isReadable; - - AssetDatabase.ImportAsset(assetPath); - AssetDatabase.Refresh(); } } }