Skip to content

Commit f33d997

Browse files
committed
[USDU-276] Adds testcase for Force Refreshing USDZ Imported prefab with Import Preview Surface option
1 parent 1b5bd43 commit f33d997

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

package/com.unity.formats.usd/Tests/Editor/UsdAssetReloadTests.cs

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@ public class UsdAssetReloadTests : BaseFixtureEditor
1414
const string k_USDGUID = "68d552f46d3740c47b17d0ac1c531e76"; // reloadTest.usda
1515
const string k_USDModifiedGUID = "4eccf405e5254fd4089cef2f9bcbd882"; // reloadTest_modified.usda
1616
const string k_USDOriginGUID = "069ae5d2d8a36fd4b8a0395de731eda0"; // reloadTest_origin.usda
17+
const string k_USDZGUID = "a90ff3ebef4a2aa42b559da07e4151f5"; // test-roughness.usdz
1718

1819
string testFilePath;
1920
string testFileModifiedPath;
21+
string prefabUsdPath;
2022

2123
GameObject m_usdRoot;
2224
UsdAsset m_usdAsset;
2325

2426
[SetUp]
2527
public void Setup()
2628
{
27-
testFilePath = Path.GetFullPath(AssetDatabase.GUIDToAssetPath(k_USDGUID));
28-
var stage = pxr.UsdStage.Open(testFilePath, pxr.UsdStage.InitialLoadSet.LoadNone);
29-
var scene = Scene.Open(stage);
29+
var scene = OpenUSDGUIDAssetScene(k_USDGUID, out testFilePath);
3030
m_usdRoot = ImportHelpers.ImportSceneAsGameObject(scene);
3131
scene.Close();
3232

@@ -35,12 +35,24 @@ public void Setup()
3535
Assume.That(m_usdAsset, Is.Not.Null, "Could not find USDAsset component on root gameobject.");
3636
}
3737

38+
private Scene OpenUSDGUIDAssetScene(string guid, out string filePath)
39+
{
40+
filePath = Path.GetFullPath(AssetDatabase.GUIDToAssetPath(guid));
41+
var stage = pxr.UsdStage.Open(filePath, pxr.UsdStage.InitialLoadSet.LoadNone);
42+
return Scene.Open(stage);
43+
}
44+
3845
[TearDown]
3946
public void TearDown()
4047
{
4148
m_usdAsset.DestroyAllImportedObjects();
4249
GameObject.DestroyImmediate(m_usdRoot);
4350

51+
if (!string.IsNullOrEmpty(prefabUsdPath))
52+
{
53+
AssetDatabase.DeleteAsset(prefabUsdPath);
54+
}
55+
4456
// Restore test files.
4557
ResetTestFile();
4658
}
@@ -109,6 +121,26 @@ public void UsdAsset_Reload_FileDidNotChange_ValuesDoNotChange()
109121
Assert.AreEqual(new Vector4(1, 1, 1, 1), translate);
110122
}
111123

124+
[Test]
125+
[Ignore("USDU-276")]
126+
public void UsdAsset_Force_Reload_Prefab_ImportPreviewSurface()
127+
{
128+
var initialRootGameObjects = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();
129+
var scene = OpenUSDGUIDAssetScene(k_USDZGUID, out _);
130+
prefabUsdPath = ImportHelpers.ImportAsPrefab(scene);
131+
scene.Close();
132+
133+
var prefabAsset = AssetDatabase.LoadAssetAtPath<UsdAsset>(prefabUsdPath);
134+
prefabAsset.m_materialImportMode = MaterialImportMode.ImportPreviewSurface;
135+
136+
LogAssert.Expect(LogType.Error, "Destroying assets is not permitted to avoid data loss.\nIf you really want to remove an asset use DestroyImmediate (theObject, true);");
137+
prefabAsset.Reload(true);
138+
139+
var newRootGameObjects = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();
140+
141+
Assert.AreEqual(initialRootGameObjects, newRootGameObjects, "Error during Prefab Reload does not clean up the scene");
142+
}
143+
112144
void UpdateTestFile()
113145
{
114146
testFileModifiedPath = Path.GetFullPath(AssetDatabase.GUIDToAssetPath(k_USDModifiedGUID));
Binary file not shown.

package/com.unity.formats.usd/Tests/Runtime/Data/UsdAssetReloadTests/test-roughness.usdz.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)