
"""
NodePathCollection-extensions module: contains methods to extend
functionality of the NodePathCollection class
"""

# For iterating over children
def asList(self):
    """Converts a NodePathCollection into a list"""
    if self.isEmpty():
        return []
    else:
        npList = []
        for nodePathIndex in range(self.getNumPaths()):
            npList.append(self.getPath(nodePathIndex))
        return npList

def getTightBounds(self):
    from panda3d.pandac import Point3

    if self.getNumPaths() == 0:
        return (Point3.Point3(0), Point3.Point3(0))

    v1, v2 = self.getPath(0).getTightBounds()
    for i in range(1, self.getNumPaths()):
        v1x, v2x = self.getPath(i).getTightBounds()
        v1 = Point3.Point3(min(v1[0], v1x[0]),
                            min(v1[1], v1x[1]),
                            min(v1[2], v1x[2]))
        v2 = Point3.Point3(max(v2[0], v2x[0]),
                            max(v2[1], v2x[1]),
                            max(v2[2], v2x[2]))

    return v1, v2
