Skip to content

Commit 7a7806c

Browse files
Copilotkurotu
andcommitted
Address review: use DisposableObject for test cleanup, copy UV tiling in fallback path
- Use DisposableObject to dispose generated Materials/Textures in test finally blocks to prevent native-object leaks (LilToonToonStandardGeneratorTests, LilToonToonLitGeneratorTests) - Copy mainTextureScale/mainTextureOffset in ToonStandardGenerator's non-IToonStandardConvertable fallback path for consistent UV tiling behavior Co-authored-by: kurotu <74851548+kurotu@users.noreply.github.com>
1 parent 90171af commit 7a7806c

3 files changed

Lines changed: 26 additions & 0 deletions

File tree

Assets/VRCQuestTools-Tests/Editor/Models/MaterialGenerators/LilToonToonLitGeneratorTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public void ConvertToToonLit_NonBake_PreservesMainTextureScaleAndOffset()
7171
}
7272
finally
7373
{
74+
using (DisposableObject.New(resultMat)) { }
7475
Object.DestroyImmediate(sourceMaterial);
7576
}
7677
}
@@ -126,6 +127,7 @@ public void ConvertToToonLit_NonBake_PreservesDefaultMainTextureST()
126127
}
127128
finally
128129
{
130+
using (DisposableObject.New(resultMat)) { }
129131
Object.DestroyImmediate(sourceMaterial);
130132
}
131133
}
@@ -197,6 +199,8 @@ public void ConvertToToonLit_WithBake_PreservesMainTextureScaleAndOffset()
197199
}
198200
finally
199201
{
202+
using (DisposableObject.New(resultMat?.mainTexture)) { }
203+
using (DisposableObject.New(resultMat)) { }
200204
Object.DestroyImmediate(sourceMaterial);
201205
}
202206
}
@@ -290,6 +294,10 @@ public void ConvertToToonLit_WithBake_BakedTextureDoesNotEmbedUVTiling()
290294
}
291295
finally
292296
{
297+
using (DisposableObject.New(resultMat11?.mainTexture)) { }
298+
using (DisposableObject.New(resultMat11)) { }
299+
using (DisposableObject.New(resultMat22?.mainTexture)) { }
300+
using (DisposableObject.New(resultMat22)) { }
293301
Object.DestroyImmediate(mat11);
294302
Object.DestroyImmediate(mat22);
295303
}
@@ -397,6 +405,10 @@ public void ConvertToToonLit_WithBake_EmissionUVIsAdjustedRelativeToMainUV()
397405
}
398406
finally
399407
{
408+
using (DisposableObject.New(resultMat1?.mainTexture)) { }
409+
using (DisposableObject.New(resultMat1)) { }
410+
using (DisposableObject.New(resultMat2?.mainTexture)) { }
411+
using (DisposableObject.New(resultMat2)) { }
400412
Object.DestroyImmediate(mat1);
401413
Object.DestroyImmediate(mat2);
402414
}

Assets/VRCQuestTools-Tests/Editor/Models/MaterialGenerators/LilToonToonStandardGeneratorTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ public void ConvertToToonStandard_PreservesMainTextureScaleAndOffset()
160160
}
161161
finally
162162
{
163+
using (DisposableObject.New(resultMat)) { }
163164
Object.DestroyImmediate(sourceMaterial);
164165
}
165166
}
@@ -224,6 +225,7 @@ public void ConvertToToonStandard_PreservesDefaultUV()
224225
}
225226
finally
226227
{
228+
using (DisposableObject.New(resultMat)) { }
227229
Object.DestroyImmediate(sourceMaterial);
228230
}
229231
}
@@ -296,6 +298,8 @@ public void GenerateMaterial_WithBake_PreservesMainTextureST()
296298
}
297299
finally
298300
{
301+
using (DisposableObject.New(resultMat?.mainTexture)) { }
302+
using (DisposableObject.New(resultMat)) { }
299303
Object.DestroyImmediate(dummyTexture);
300304
Object.DestroyImmediate(sourceMaterial);
301305
}
@@ -498,6 +502,7 @@ public void ConvertToToonStandard_PreservesEmissionMapST_WhenDifferentFromMainUV
498502
}
499503
finally
500504
{
505+
using (DisposableObject.New(resultMat)) { }
501506
Object.DestroyImmediate(sourceMaterial);
502507
}
503508
}
@@ -574,6 +579,8 @@ public void LilToonMaterial_GenerateToonLitImage_MainUVTilingDoesNotAffectBakedO
574579
}
575580
finally
576581
{
582+
using (DisposableObject.New(result11)) { }
583+
using (DisposableObject.New(result22)) { }
577584
Object.DestroyImmediate(mat11);
578585
Object.DestroyImmediate(mat22);
579586
}
@@ -680,6 +687,10 @@ public void GenerateMaterial_WithBake_ToonStandardBakesTextureWithoutUVTiling()
680687
}
681688
finally
682689
{
690+
using (DisposableObject.New(resultMat11?.mainTexture)) { }
691+
using (DisposableObject.New(resultMat11)) { }
692+
using (DisposableObject.New(resultMat22?.mainTexture)) { }
693+
using (DisposableObject.New(resultMat22)) { }
683694
Object.DestroyImmediate(mat11);
684695
Object.DestroyImmediate(mat22);
685696
}
@@ -757,6 +768,7 @@ public void ConvertToToonStandard_PreservesOcclusionMapST()
757768
}
758769
finally
759770
{
771+
using (DisposableObject.New(resultMat)) { }
760772
Object.DestroyImmediate(sourceMaterial);
761773
}
762774
}

Packages/com.github.kurotu.vrc-quest-tools/Editor/Models/MaterialGenerators/ToonStandardGenerator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ public AsyncCallbackRequest GenerateMaterial(MaterialBase material, UnityEditor.
143143
var newMaterial = new ToonStandardMaterialWrapper();
144144
newMaterial.Name = material.Material.name;
145145
newMaterial.MainTexture = newMat.mainTexture;
146+
newMaterial.MainTextureScale = newMat.mainTextureScale;
147+
newMaterial.MainTextureOffset = newMat.mainTextureOffset;
146148
newMaterial.ShadowRamp = Settings.fallbackShadowRamp;
147149
completion?.Invoke(newMaterial);
148150
});

0 commit comments

Comments
 (0)