@@ -316,5 +316,66 @@ public void TestExporterCallbacks()
316
316
assetMesh = asset . transform . Find ( "Parent2" ) . GetComponent < MeshFilter > ( ) . sharedMesh ;
317
317
Assert . AreEqual ( sphereMesh . triangles . Length , assetMesh . triangles . Length ) ;
318
318
}
319
+
320
+ [ Test ]
321
+ public void TestNodeVisibility ( )
322
+ {
323
+ // create test hierarchy
324
+ // root (enabled)
325
+ // -- parent1 (enabled)
326
+ // -- parent2 (disabled)
327
+ // ---- child1 (disabled)
328
+ // ---- child2 (enabled)
329
+
330
+ var root = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
331
+ root . name = "root" ;
332
+ var parent1 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
333
+ parent1 . name = "parent1" ;
334
+ var parent2 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
335
+ parent2 . name = "parent2" ;
336
+ var child1 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
337
+ child1 . name = "child1" ;
338
+ var child2 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
339
+ child2 . name = "child2" ;
340
+
341
+ parent1 . transform . SetParent ( root . transform ) ;
342
+ parent2 . transform . SetParent ( root . transform ) ;
343
+ child1 . transform . SetParent ( parent2 . transform ) ;
344
+ child2 . transform . SetParent ( parent2 . transform ) ;
345
+
346
+ root . SetActive ( true ) ;
347
+ parent1 . SetActive ( true ) ;
348
+ child2 . SetActive ( true ) ;
349
+ parent2 . SetActive ( false ) ;
350
+ child1 . SetActive ( false ) ;
351
+
352
+ string filename = GetRandomFbxFilePath ( ) ;
353
+ ModelExporter . ExportObject ( filename , root ) ;
354
+
355
+ GameObject fbxObj = AssetDatabase . LoadMainAssetAtPath ( filename ) as GameObject ;
356
+
357
+ // check root
358
+ CheckObjectVisibility ( fbxObj , true ) ;
359
+
360
+ // check child nodes
361
+ foreach ( Transform child in fbxObj . transform ) {
362
+ var isParent1 = child . name . Equals ( "parent1" ) ;
363
+ CheckObjectVisibility ( child . gameObject , isParent1 ) ;
364
+
365
+ if ( isParent1 ) {
366
+ // all of parent1's children should be disabled
367
+ foreach ( Transform c in child ) {
368
+ CheckObjectVisibility ( c . gameObject , false ) ;
369
+ }
370
+ }
371
+ }
372
+ }
373
+
374
+ private void CheckObjectVisibility ( GameObject obj , bool expectedVisibility ) {
375
+ Assert . IsTrue ( obj . activeSelf ) ;
376
+ var renderer = obj . GetComponent < MeshRenderer > ( ) ;
377
+ Assert . IsNotNull ( renderer ) ;
378
+ Assert . AreEqual ( expectedVisibility , renderer . enabled ) ;
379
+ }
319
380
}
320
381
}
0 commit comments