@@ -1503,6 +1503,77 @@ def testLiveAttributes( self ) :
1503
1503
self .assertEqual ( c .readAttribute ( "animColor" , 0.5 ), IECore .Color3dData ( IECore .Color3d ( 0.5 ) ) )
1504
1504
self .assertEqual ( c .readAttribute ( "animColor" , 1 ), IECore .Color3dData ( IECore .Color3d ( 1 ) ) )
1505
1505
1506
+ def testFullPathName ( self ) :
1507
+
1508
+ self .writeSCC ()
1509
+ node = self .sop ()
1510
+ node .parm ( "geometryType" ).set ( IECoreHoudini .SceneCacheNode .GeometryType .Houdini )
1511
+
1512
+ # make sure the full path doesn't load until the parm has a value
1513
+ self .assertEqual ( node .parm ( "fullPathName" ).eval (), "" )
1514
+ self .assertEqual ( node .geometry ().findPrimAttrib ( "path" ), None )
1515
+ self .assertEqual ( sorted ( [ x .name () for x in node .geometry ().primAttribs () ] ), ["Cd" , "ieMeshInterpolation" , "name" ] )
1516
+
1517
+ # now lets load it an validate the paths
1518
+ node .parm ( "fullPathName" ).set ( "path" )
1519
+ self .assertEqual ( sorted ( [ x .name () for x in node .geometry ().primAttribs () ] ), ["Cd" , "ieMeshInterpolation" , "name" , "path" ] )
1520
+
1521
+ prims = node .geometry ().prims ()
1522
+ self .assertEqual ( len (prims ), 18 )
1523
+ nameAttr = node .geometry ().findPrimAttrib ( "name" )
1524
+ pathAttr = node .geometry ().findPrimAttrib ( "path" )
1525
+ self .assertEqual ( nameAttr .strings (), tuple ( [ '/1' , '/1/2' , '/1/2/3' ] ) )
1526
+ self .assertEqual ( pathAttr .strings (), tuple ( [ '/1' , '/1/2' , '/1/2/3' ] ) )
1527
+ for name in nameAttr .strings () :
1528
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "name" ) == name ]), 6 )
1529
+ for path in pathAttr .strings () :
1530
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "path" ) == path ]), 6 )
1531
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 1 , 0 , 0 ) )
1532
+ self .assertEqual ( prims [6 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 3 , 0 , 0 ) )
1533
+ self .assertEqual ( prims [12 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 6 , 0 , 0 ) )
1534
+
1535
+ node .parm ( "root" ).set ( "/1" )
1536
+ prims = node .geometry ().prims ()
1537
+ self .assertEqual ( len (prims ), 18 )
1538
+ nameAttr = node .geometry ().findPrimAttrib ( "name" )
1539
+ pathAttr = node .geometry ().findPrimAttrib ( "path" )
1540
+ self .assertEqual ( nameAttr .strings (), tuple ( [ '/' , '/2' , '/2/3' ] ) )
1541
+ self .assertEqual ( pathAttr .strings (), tuple ( [ '/1' , '/1/2' , '/1/2/3' ] ) )
1542
+ for name in nameAttr .strings () :
1543
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "name" ) == name ]), 6 )
1544
+ for path in pathAttr .strings () :
1545
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "path" ) == path ]), 6 )
1546
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 1 , 0 , 0 ) )
1547
+ self .assertEqual ( prims [6 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 3 , 0 , 0 ) )
1548
+ self .assertEqual ( prims [12 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 6 , 0 , 0 ) )
1549
+
1550
+ node .parm ( "root" ).set ( "/1/2" )
1551
+ prims = node .geometry ().prims ()
1552
+ self .assertEqual ( len (prims ), 12 )
1553
+ nameAttr = node .geometry ().findPrimAttrib ( "name" )
1554
+ pathAttr = node .geometry ().findPrimAttrib ( "path" )
1555
+ self .assertEqual ( nameAttr .strings (), tuple ( [ '/' , '/3' ] ) )
1556
+ self .assertEqual ( pathAttr .strings (), tuple ( [ '/1/2' , '/1/2/3' ] ) )
1557
+ for name in nameAttr .strings () :
1558
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "name" ) == name ]), 6 )
1559
+ for path in pathAttr .strings () :
1560
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "path" ) == path ]), 6 )
1561
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 3 , 0 , 0 ) )
1562
+ self .assertEqual ( prims [6 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 6 , 0 , 0 ) )
1563
+
1564
+ node .parm ( "root" ).set ( "/1/2/3" )
1565
+ prims = node .geometry ().prims ()
1566
+ self .assertEqual ( len (prims ), 6 )
1567
+ nameAttr = node .geometry ().findPrimAttrib ( "name" )
1568
+ pathAttr = node .geometry ().findPrimAttrib ( "path" )
1569
+ self .assertEqual ( nameAttr .strings (), tuple ( [ '/' ] ) )
1570
+ self .assertEqual ( pathAttr .strings (), tuple ( [ '/1/2/3' ] ) )
1571
+ for name in nameAttr .strings () :
1572
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "name" ) == name ]), 6 )
1573
+ for path in pathAttr .strings () :
1574
+ self .assertEqual ( len ([ x for x in prims if x .attribValue ( "path" ) == path ]), 6 )
1575
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 6 , 0 , 0 ) )
1576
+
1506
1577
def testReloadButton ( self ) :
1507
1578
1508
1579
def testNode ( node ) :
0 commit comments