@@ -595,7 +595,7 @@ def testCustomTags( self ) :
595
595
doTest = True
596
596
597
597
def hasMyTags ( node , tag , tagFilter ) :
598
- """ 'archivable' should be on all transforms and 'renderable' only at shape transforms."""
598
+ # 'archivable' should be on all transforms and 'renderable' only at shape transforms.
599
599
600
600
if not doTest :
601
601
return False
@@ -621,7 +621,7 @@ def hasMyTags( node, tag, tagFilter ) :
621
621
return dagPath .fullPathName ().endswith ("Shape" )
622
622
623
623
def readMyTags ( node , tagFilter ) :
624
- """ 'archivable' should be on all transforms and 'renderable' only at shape transforms."""
624
+ # 'archivable' should be on all transforms and 'renderable' only at shape transforms.
625
625
626
626
if not doTest :
627
627
return []
@@ -712,17 +712,86 @@ def readMyAttribute( node, attr ) :
712
712
sphereScene = scene .child ('pSphere' )
713
713
self .assertEqual ( scene .attributeNames (), [] )
714
714
self .assertEqual ( scene .readAttribute ("anyAttr" , 0.0 ), None )
715
- self .assertEqual ( transformScene .attributeNames (), [ IECore .InternedString ("transformAttribute" ) ] )
715
+ self .assertEqual ( transformScene .attributeNames (), [ IECore .InternedString ("scene:visible" ), IECore . InternedString ( " transformAttribute" ) ] )
716
716
self .assertEqual ( transformScene .hasAttribute ("shapeAttribute" ), False )
717
717
self .assertEqual ( transformScene .readAttribute ("shapeAttribute" , 0.0 ), None )
718
718
self .assertEqual ( transformScene .readAttribute ( "transformAttribute" , 0.0 ), IECore .FloatData (5 ) )
719
- self .assertEqual ( sphereScene .attributeNames (), [ IECore .InternedString ('shapeAttribute' ) ] )
719
+ self .assertEqual ( sphereScene .attributeNames (), [ IECore .InternedString ("scene:visible" ), IECore . InternedString ( 'shapeAttribute' ) ] )
720
720
self .assertEqual ( sphereScene .readAttribute ( "shapeAttribute" , 0.0 ), IECore .StringData ("mesh" ) )
721
721
722
722
# Disable custom attribute functions so they don't mess with other tests
723
723
doTest = False
724
+
725
+ def testSceneVisible ( self ) :
726
+
727
+ maya .cmds .createNode ( "transform" , name = "t1" )
728
+ maya .cmds .createNode ( "transform" , name = "t2" )
729
+
730
+ scene = IECoreMaya .MayaScene ()
731
+ t1 = scene .child ( "t1" )
732
+ t2 = scene .child ( "t2" )
733
+
734
+ self .assertEqual ( t1 .attributeNames (), ["scene:visible" ] )
735
+ self .assertEqual ( t2 .attributeNames (), ["scene:visible" ] )
736
+
737
+ self .assertEqual ( t1 .hasAttribute ( "scene:visible" ), True )
738
+ self .assertEqual ( t2 .hasAttribute ( "scene:visible" ), True )
739
+
740
+ self .assertEqual ( t1 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( True ) )
741
+ self .assertEqual ( t2 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( True ) )
742
+
743
+ # test visibility on transform:
744
+ maya .cmds .setAttr ( "t1.visibility" , False )
745
+
746
+ self .assertEqual ( t1 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( False ) )
747
+ self .assertEqual ( t2 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( True ) )
748
+
749
+ maya .cmds .setAttr ( "t1.visibility" , True )
750
+
751
+ # test visibility on shape. Add a mesh to the two transforms, along with an image plane to confuse it:
752
+ maya .cmds .createNode ( "mesh" , name = "m1" , parent = "t1" )
753
+ maya .cmds .createNode ( "imagePlane" , name = "i1" , parent = "t1" )
754
+
755
+ maya .cmds .createNode ( "imagePlane" , name = "i2" , parent = "t2" )
756
+ maya .cmds .createNode ( "mesh" , name = "m2" , parent = "t2" )
757
+
758
+ maya .cmds .setAttr ( "i1.visibility" , False )
759
+ maya .cmds .setAttr ( "i2.visibility" , False )
760
+
761
+ # these should both be visible, as cortex ignores image planes and the meshes are visible:
762
+ self .assertEqual ( t1 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( True ) )
763
+ self .assertEqual ( t2 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( True ) )
764
+
765
+ maya .cmds .setAttr ( "m1.visibility" , False )
766
+ maya .cmds .setAttr ( "m2.visibility" , False )
767
+
768
+ # should both be invisible now, as we've hidden the meshes:
769
+ self .assertEqual ( t1 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( False ) )
770
+ self .assertEqual ( t2 .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( False ) )
771
+
772
+ def testSceneShapeVisible ( self ) :
773
+
774
+ # make sure we are at time 0
775
+ maya .cmds .currentTime ( "0sec" )
776
+ scene = IECoreMaya .MayaScene ()
777
+
778
+ envShape = str ( IECoreMaya .FnSceneShape .create ( "ieScene1" ).fullPathName () )
779
+ envNode = 'ieScene1'
780
+
781
+ envScene = scene .child ( envNode )
782
+ self .failUnless ( IECore .InternedString ( "scene:visible" ) in envScene .attributeNames () )
783
+
784
+ maya .cmds .setAttr ( envShape + '.file' , 'test/IECore/data/sccFiles/animatedSpheres.scc' ,type = 'string' )
785
+ self .failUnless ( IECore .InternedString ( "scene:visible" ) in envScene .attributeNames () )
724
786
787
+ maya .cmds .setAttr ( "ieScene1.visibility" , False )
788
+ self .assertEqual ( envScene .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( False ) )
725
789
790
+ maya .cmds .setAttr ( "ieScene1.visibility" , True )
791
+ self .assertEqual ( envScene .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( True ) )
726
792
793
+ maya .cmds .setAttr ( envShape + ".visibility" , False )
794
+ self .assertEqual ( envScene .readAttribute ( "scene:visible" , 0 ), IECore .BoolData ( False ) )
795
+
727
796
if __name__ == "__main__" :
728
797
IECoreMaya .TestProgram ( plugins = [ "ieCore" ] )
0 commit comments