add check to not recalculate the same textures twice

This commit is contained in:
aliaksei.kalosha
2025-03-18 12:41:59 +01:00
parent f89ed71bd4
commit d83e935a14
2 changed files with 16 additions and 2 deletions

View File

@@ -19,8 +19,11 @@ namespace SplashEdit.RuntimeCode
Renderer renderer = GetComponent<Renderer>();
if (renderer.sharedMaterial != null && renderer.sharedMaterial.mainTexture is Texture2D texture)
{
Texture = PSXTexture2D.CreateFromTexture2D(texture, BitDepth);
Texture.OriginalTexture = texture; // Stores reference to the original texture
if (Texture == null || Texture.NeedUpdate(BitDepth, texture))
{
Texture = PSXTexture2D.CreateFromTexture2D(texture, BitDepth);
Texture.OriginalTexture = texture; // Stores reference to the original texture
}
}
else
{

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using UnityEngine;
@@ -275,5 +276,15 @@ namespace SplashEdit.RuntimeCode
return vramTexture;
}
/// <summary>
/// Check if we need to update stored texture
/// </summary>
/// <param name="bitDepth">new settings for color bit depth</param>
/// <param name="texture">new texture</param>
/// <returns>return true if sored texture is different from a new one</returns>
internal bool NeedUpdate(PSXBPP bitDepth, Texture2D texture)
{
return BitDepth != bitDepth || texture.GetInstanceID() != texture.GetInstanceID();
}
}
}