@@ -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.\n If 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 ) ) ;
0 commit comments