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']
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()]
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']
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'
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'))
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')]
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', '']
def test_GetMSRCExport(self): tag=mTag.GetExportTagFromSelected('GameRoot')[0] MChar=tag.GetMSRC_Export() assert isinstance(MChar,meta.eMCharacter.MSRC)
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'