def test_GetTimeOutputRanges(self):
     Tag=mTag.GetExportTagFromSelected('GameRoot')[0]
     result=[(name,'%0.2f' % start,'%0.2f' % end) for name,start,end in Tag.GetTimeOutputRanges()]
     assert result==[('Middle', '30.00', '60.00'), ('Start', '1.00', '22.00'), ('End', '61.00', '100.00'), ('', '101.00', '110.00')]
     Tag=mTag.GetExportTagFromSelected('Test_EntityGrp')[0]      
     assert Tag.GetTimeOutputRanges()==[('__timelines__', 1.0, 24.0)],\
                     'TimeOutputRanges incorrect, even without loopData this should return an output time for the exporter'
 def test_AddActiveTimeData(self):
     '''
     The VFX Tag has an extra attr "ManageEL4TimelineVis" which determines if the Visibility
     of each node should be derived from its keyed visibility state. This is then cast to an
     attr on the node and subsequently serialized to Collada
     '''
     tag=mTag.GetExportTagFromSelected(pCore.PyNode('vfx_visiblityDataCast'))[0]
     nodes=tag._ProcessBaseTagFilter()
     
     result=['%s,on:%0.2f,off:%0.2f' % (node.name(),node.TimelineStart.get(),node.TimelineEnd.get()) for node in nodes]
     expected=['pSphere2,on:1.00,off:19.00',
               'pSphere3,on:20.00,off:31.00',
               'pSphere4,on:32.00,off:49.00',
               'pSphere5,on:50.00,off:70.00',
               'pSphere6,on:71.00,off:85.00',
               'pSphere7,on:71.00,off:101.00',
               'pSphere8,on:102.00,off:117.00',
               'pSphere9,on:118.00,off:136.00',
             'pSphere10,on:137.00,off:137.00']
     assert result==expected
     assert not [node for node in nodes \
                 if not node.SerializeForExport.get()=='[["TimelineStart", "TimelineStart", false],["TimelineEnd", "TimelineEnd", false]]']
     #Try removing the data added
     for node in nodes:
         mTag.RemoveActiveTimeData(node)
     assert not [node for node in nodes if node.hasAttr('TimelineStart') \
                 or node.hasAttr('TimelineEnd')  or node.hasAttr('SerializeForExport')]
 def setup(self):
     pCore.openFile(MAYA_TEST_FILES_DIR + "FindTagTypes.ma", f=True)
     self.Tag=mTag.GetExportTagFromSelected('GameRoot')[0]
     self.Tag.m_Delete()
     self.Tag=mTag.AddExportTag('GameRoot', 'Character', 'MRIG')
     self.Tag.AddLoopData('TestLoop',23,46)
     self.Tag.AddOverRides(Nodes=[pCore.PyNode('L_Leg')])
 def test_DeleteSampleSpaceRef(self):
     Tag=mTag.GetExportTagFromSelected('CarGroup')[0]
     assert Tag.GetChildSampleSpace()==['EXP_Crate2', 'EXP_Driver']
     Tag.DeleteSampleSpaceRef()
     assert not Tag.GetChildSampleSpace()
     #Reset the scene as we've destroyed it here
     self.setup()
 def test_GetSampleSpace(self):
     #check this nodes SampleSpace setup
     pCore.select('joint1')
     Tag=mTag.GetExportTagFromSelected()[0]
     ss=Tag.GetSampleSpace()
     assert isinstance(ss, mTag.MExportTag_EntityGroup)
     assert ss.MetaNode=='EXP_Car'
     assert Tag.GetSampleSpace(TagOnly=False)=='|CarGroup'
 def test_B_ConvertScene(self):
     current=mTag.FindExportTags()
     mTag.ConvertSceneToMetaTags()
     new=mTag.FindExportTags()
     assert not new==current
     converted=mTag.GetExportTagFromSelected(pCore.PyNode('Old_ProxyTag'))[0]
     assert isinstance(converted,mTag.MExportTag_Entity)
             
             
 def test_AddLoopDataFromVisibility(self):
     '''
     From the given tag cast it's keyed visibilty into loopTag data
     NOTE: This uses the _GetKeyedVisibilityNode funct which is overloaded for characters
     '''
     tag=mTag.GetExportTagFromSelected(pCore.PyNode('VisibilityCastTest'))[0]
     assert tag._GetKeyedVisibilityNode()=='VisibilityCastTest'
     loops=tag.AddLoopDataFromVisibility()
     assert [loop.__repr__() for loop in loops]==['MExportTimeRange(TimeStamp: "Vis_00", Start: 22.78, End: 55.78)',
                                                     'MExportTimeRange(TimeStamp: "Vis_01", Start: 80.0, End: 129.0)',
                                                     'MExportTimeRange(TimeStamp: "Vis_02", Start: 158.0, End: 159.0)',
                                                     'MExportTimeRange(TimeStamp: "Vis_03", Start: 230.0, End: 275.0)',
                                                     'MExportTimeRange(TimeStamp: "Vis_04", Start: 290.0, End: 290.0)']
     result=[(name,'%0.2f' % start,'%0.2f' % end) for name,start,end in tag.GetLoopData(AsTime=False)]
     assert result==[('Vis_01', '80.00', '129.00'),
                     ('Vis_00', '22.78', '55.78'),
                     ('Vis_02', '158.00', '159.00'),
                     ('Vis_03', '230.00', '275.00'),
                     ('Vis_04', '290.00', '290.00')]
 def test_AddOverRides(self): 
     Tag=mTag.GetExportTagFromSelected('Test_Zone')[0] 
     includers=[pCore.PyNode(node) for node in ['Area_A1_pSphere4','Area_A2_pSphere6','Area_A3_pSphere4','Area_A3_pSphere5']]
     excluders=[pCore.PyNode(node) for node in ['Area_A1_pSphere2','Area_A2_pSphere4','Area_A3_pSphere2','Area_A3_pSphere3']]
     
     Tag.AddOverRides(Nodes=includers,State='Include')
     Tag.AddOverRides(Nodes=excluders,State='Exclude')
     assert Tag.GetOverRides(State='Include')==includers
     assert Tag.GetOverRides(State='Exclude')==excluders
     allOverrides=list(excluders)
     allOverrides.extend(includers)
     assert sorted(Tag.GetOverRides())==sorted(allOverrides)
     
     Tag.SetOverRides(includers,'Exclude')
     assert not Tag.GetOverRides(State='Include')
     assert Tag.GetOverRides(State='Exclude')==sorted(allOverrides)
     assert sorted(Tag.GetOverRides())==sorted(allOverrides)
     
     Tag.DeleteOverRides()
     assert Tag.GetOverRides()==[]
 def test_GetChildSampleSpace(self):
     #Check for child SampleSpaces
     pCore.select('CarGroup')
     Tag=mTag.GetExportTagFromSelected()[0]
     assert Tag.GetChildSampleSpace()==['EXP_Crate2', 'EXP_Driver']
     assert [t.MetaNode for t in Tag.GetChildSampleSpace(AsMetaData=True)]==['EXP_Crate2', 'EXP_Driver']==['EXP_Crate2', 'EXP_Driver']
Esempio n. 10
0
 def test_EntityPerFrame(self):
     '''
     Test the conversion to single visibility switched nodes
     '''
     pCore.playbackOptions(min=1, max=50)
     tag=mTag.GetExportTagFromSelected(pCore.PyNode('pCube1'))[0]
     tag=tag.ConvertTagType('EntityPerFrame')
     data=tag._ProcessBaseTagFilter()
     
     #Test that the new nodes have the TimeLine Data cast over to them
     firstTenResults=['%s,on:%0.2f,off:%0.2f' % (node.name(),node.TimelineStart.get(),node.TimelineEnd.get()) for node in sorted(data)[:10]]
     assert firstTenResults==['EntityPerFrame_1,on:1.00,off:2.00',
                              'EntityPerFrame_10,on:10.00,off:11.00',
                              'EntityPerFrame_11,on:11.00,off:12.00',
                              'EntityPerFrame_12,on:12.00,off:13.00',
                              'EntityPerFrame_13,on:13.00,off:14.00',
                              'EntityPerFrame_14,on:14.00,off:15.00',
                              'EntityPerFrame_15,on:15.00,off:16.00',
                              'EntityPerFrame_16,on:16.00,off:17.00',
                              'EntityPerFrame_17,on:17.00,off:18.00',
                              'EntityPerFrame_18,on:18.00,off:19.00']
     
     expected=['EntityPerFrame_1',
              'EntityPerFrame_10',
              'EntityPerFrame_11',
              'EntityPerFrame_12',
              'EntityPerFrame_13',
              'EntityPerFrame_14',
              'EntityPerFrame_15',
              'EntityPerFrame_16',
              'EntityPerFrame_17',
              'EntityPerFrame_18',
              'EntityPerFrame_19',
              'EntityPerFrame_2',
              'EntityPerFrame_20',
              'EntityPerFrame_21',
              'EntityPerFrame_22',
              'EntityPerFrame_23',
              'EntityPerFrame_24',
              'EntityPerFrame_25',
              'EntityPerFrame_26',
              'EntityPerFrame_27',
              'EntityPerFrame_28',
              'EntityPerFrame_29',
              'EntityPerFrame_3',
              'EntityPerFrame_30',
              'EntityPerFrame_31',
              'EntityPerFrame_32',
              'EntityPerFrame_33',
              'EntityPerFrame_34',
              'EntityPerFrame_35',
              'EntityPerFrame_36',
              'EntityPerFrame_37',
              'EntityPerFrame_38',
              'EntityPerFrame_39',
              'EntityPerFrame_4',
              'EntityPerFrame_40',
              'EntityPerFrame_41',
              'EntityPerFrame_42',
              'EntityPerFrame_43',
              'EntityPerFrame_44',
              'EntityPerFrame_45',
              'EntityPerFrame_46',
              'EntityPerFrame_47',
              'EntityPerFrame_48',
              'EntityPerFrame_49',
              'EntityPerFrame_5',
              'EntityPerFrame_50',
              'EntityPerFrame_6',
              'EntityPerFrame_7',
              'EntityPerFrame_8',
              'EntityPerFrame_9'] 
     
     assert [n.name() for n in sorted(data)]==expected
     toClean=['EntityPerFrame']
     toClean.extend(expected)
     assert sorted(pCore.melGlobals['NodesToDeleteOnCleanUp'])==toClean
     
     #test the Cleanup calls
     tag._CleanupProcessedTagFilter()
     assert not pCore.melGlobals['NodesToDeleteOnCleanUp']
     assert not [n for n in data if pCore.PyNode(n).exists()]
Esempio n. 11
0
 def test_ProgressiveMorphFilter(self):
     '''
     Test the convertion of the deformerData to linear blendshape
     '''
     pCore.playbackOptions(min=1, max=50)
     tag=mTag.GetExportTagFromSelected(pCore.PyNode('pCube1'))[0]
     data=tag._ProcessBaseTagFilter()
     
     #Note the actual Tagged Node is NOT passed into the filtered nodes!
     assert data==['pCube1_progressive']
     
     #Test the generated Progressive network
     node=data[0]
     shape=node.getShape()
     shape.listHistory(type='mesh')
     blendshape=shape.listHistory(type='blendShape')[0]
     assert blendshape.name()=='blendShape1'
     assert blendshape.getTarget()==['Progressive_1',
                              'Progressive_2',
                              'Progressive_3',
                              'Progressive_4',
                              'Progressive_5',
                              'Progressive_6',
                              'Progressive_7',
                              'Progressive_8',
                              'Progressive_9',
                              'Progressive_10',
                              'Progressive_11',
                              'Progressive_12',
                              'Progressive_13',
                              'Progressive_14',
                              'Progressive_15',
                              'Progressive_16',
                              'Progressive_17',
                              'Progressive_18',
                              'Progressive_19',
                              'Progressive_20',
                              'Progressive_21',
                              'Progressive_22',
                              'Progressive_23',
                              'Progressive_24',
                              'Progressive_25',
                              'Progressive_26',
                              'Progressive_27',
                              'Progressive_28',
                              'Progressive_29',
                              'Progressive_30',
                              'Progressive_31',
                              'Progressive_32',
                              'Progressive_33',
                              'Progressive_34',
                              'Progressive_35',
                              'Progressive_36',
                              'Progressive_37',
                              'Progressive_38',
                              'Progressive_39',
                              'Progressive_40',
                              'Progressive_41',
                              'Progressive_42',
                              'Progressive_43',
                              'Progressive_44',
                              'Progressive_45',
                              'Progressive_46',
                              'Progressive_47',
                              'Progressive_48',
                              'Progressive_49',
                              'Progressive_50']
Esempio n. 12
0
 def test_GetExportTagFromSelected_PyNode(self):
     Tag=mTag.GetExportTagFromSelected(pCore.PyNode('GameRoot'))[0]
     assert isinstance(Tag,mTag.MExportTag_Character)
     assert Tag.TagNote=='MRIG'
     assert Tag.rootNode()=='GameRoot'
     assert Tag.TagType=='Character'
Esempio n. 13
0
 def test_RemoveExportTags(self):
     self.TestTag=mTag.AddExportTag('NewNode', 'Entity', 'EntityTag')
     assert self.TestTag.MetaNode=='EXP_EntityTag'
     mTag.RemoveExportTags('NewNode')
     assert not mTag.GetExportTagFromSelected(pCore.PyNode('NewNode'))
Esempio n. 14
0
 def test_GetLoopData_FromSelected_asString(self):
     Tag=mTag.GetExportTagFromSelected('GameRoot')[0]
     loops=Tag.GetLoopData(AsTime=False)
     result=[(name,'%0.2f' % start,'%0.2f' % end) for name,start,end in loops]
     assert result== [('Middle', '30.00', '60.00'), ('Start', '1.00', '22.00'), ('End', '61.00', '100.00'), ('', '101.00', '110.00')]
Esempio n. 15
0
 def test_GetLoopData_FromSelected_asTime(self):
     Tag=mTag.GetExportTagFromSelected('GameRoot')[0]
     loops=Tag.GetLoopData(AsTime=True)
     assert [loop.MetaNode for loop in loops]==['Middle','Start','End','MExportTimeRange']
     assert [loop.TimeStamp for loop in loops]== ['Middle', 'Start', 'End', '']
Esempio n. 16
0
 def test_GetMSRCExport(self):
     tag=mTag.GetExportTagFromSelected('GameRoot')[0]
     MChar=tag.GetMSRC_Export()
     assert isinstance(MChar,meta.eMCharacter.MSRC)
Esempio n. 17
0
 def test_GetExportTagFromSelected_Cmds(self):
     Tag=mTag.GetExportTagFromSelected('Test_Zone')[0]
     assert isinstance(Tag,mTag.MExportTag_Zone)
     assert Tag.TagNote=='Zone'
     assert Tag.rootNode()=='Test_Zone'
     assert Tag.TagType=='Zone'