@@ -376,5 +376,69 @@ private void CompareCameraValues(Camera camera, Camera fbxCamera, float delta=0.
376
376
Assert . AreEqual ( camera . nearClipPlane , fbxCamera . nearClipPlane , delta ) ;
377
377
Assert . AreEqual ( camera . farClipPlane , fbxCamera . farClipPlane , delta ) ;
378
378
}
379
+
380
+ [ Test ]
381
+ public void TestNodeVisibility ( )
382
+ {
383
+ // create test hierarchy
384
+ // root (enabled)
385
+ // -- parent1 (enabled)
386
+ // ---- child3 (disabled)
387
+ // -- parent2 (disabled)
388
+ // ---- child1 (disabled)
389
+ // ---- child2 (enabled)
390
+
391
+ var root = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
392
+ root . name = "root" ;
393
+ var parent1 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
394
+ parent1 . name = "parent1" ;
395
+ var parent2 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
396
+ parent2 . name = "parent2" ;
397
+ var child1 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
398
+ child1 . name = "child1" ;
399
+ var child2 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
400
+ child2 . name = "child2" ;
401
+ var child3 = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
402
+ child3 . name = "child3" ;
403
+
404
+ parent1 . transform . SetParent ( root . transform ) ;
405
+ parent2 . transform . SetParent ( root . transform ) ;
406
+ child1 . transform . SetParent ( parent2 . transform ) ;
407
+ child2 . transform . SetParent ( parent2 . transform ) ;
408
+ child3 . transform . SetParent ( parent1 . transform ) ;
409
+
410
+ root . SetActive ( true ) ;
411
+ parent1 . SetActive ( true ) ;
412
+ child2 . SetActive ( true ) ;
413
+ parent2 . SetActive ( false ) ;
414
+ child1 . SetActive ( false ) ;
415
+ child3 . SetActive ( false ) ;
416
+
417
+ string filename = GetRandomFbxFilePath ( ) ;
418
+ ModelExporter . ExportObject ( filename , root ) ;
419
+
420
+ GameObject fbxObj = AssetDatabase . LoadMainAssetAtPath ( filename ) as GameObject ;
421
+
422
+ // check root
423
+ CheckObjectVisibility ( fbxObj , true ) ;
424
+
425
+ // check child nodes
426
+ foreach ( Transform child in fbxObj . transform ) {
427
+ var isParent1 = child . name . Equals ( "parent1" ) ;
428
+ CheckObjectVisibility ( child . gameObject , isParent1 ) ;
429
+
430
+ // all children should be disabled
431
+ foreach ( Transform c in child ) {
432
+ CheckObjectVisibility ( c . gameObject , false ) ;
433
+ }
434
+ }
435
+ }
436
+
437
+ private void CheckObjectVisibility ( GameObject obj , bool expectedVisibility ) {
438
+ Assert . IsTrue ( obj . activeSelf ) ;
439
+ var renderer = obj . GetComponent < MeshRenderer > ( ) ;
440
+ Assert . IsNotNull ( renderer ) ;
441
+ Assert . AreEqual ( expectedVisibility , renderer . enabled ) ;
442
+ }
379
443
}
380
444
}
0 commit comments