Marvin77600
Refugee
There is a bug in the TextureUtils.ApplyTintNative method :
public static void ApplyTintNative(Texture2D _sourceTex, Texture2D _destinationTex, UnityEngine.Color _tintColor)
{
if (_sourceTex.format == TextureFormat.ARGB32)
_tintColor = new UnityEngine.Color(_tintColor.a, _tintColor.b, _tintColor.g, _tintColor.r);
NativeArray<Color32> rawTextureData1 = _sourceTex.GetRawTextureData<Color32>();
NativeArray<Color32> rawTextureData2 = _destinationTex.GetRawTextureData<Color32>();
int length = rawTextureData1.Length;
for (int index = 0; index < length; ++index)
rawTextureData2[index] = (Color32)((UnityEngine.Color)rawTextureData1[index] * _tintColor);
}
The Color constructor have to be (A, R, G, B) and not (A, B, G, R)
I've made an Harmony patch on my side to remove the bug, here is the fixed method :
public static void ApplyTintNative(Texture2D _sourceTex, Texture2D _destinationTex, UnityEngine.Color _tintColor)
{
if (_sourceTex.format == TextureFormat.ARGB32)
_tintColor = new UnityEngine.Color(_tintColor.a, _tintColor.b, _tintColor.g, _tintColor.r);
NativeArray<Color32> rawTextureData1 = _sourceTex.GetRawTextureData<Color32>();
NativeArray<Color32> rawTextureData2 = _destinationTex.GetRawTextureData<Color32>();
int length = rawTextureData1.Length;
for (int index = 0; index < length; ++index)
rawTextureData2[index] = (Color32)((UnityEngine.Color)rawTextureData1[index] * _tintColor);
}
The Color constructor have to be (A, R, G, B) and not (A, B, G, R)
I've made an Harmony patch on my side to remove the bug, here is the fixed method :
Code:
public static void ApplyTintNative(Texture2D _sourceTex, Texture2D _destinationTex, UnityEngine.Color _tintColor)
{
if (_sourceTex.format == TextureFormat.ARGB32)
_tintColor = new UnityEngine.Color(_tintColor.a, _tintColor.r, _tintColor.g, _tintColor.b);
NativeArray<Color32> rawTextureData1 = _sourceTex.GetRawTextureData<Color32>();
NativeArray<Color32> rawTextureData2 = _destinationTex.GetRawTextureData<Color32>();
int length = rawTextureData1.Length;
for (int index = 0; index < length; ++index)
rawTextureData2[index] = (Color32)((UnityEngine.Color)rawTextureData1[index] * _tintColor);
}