'nodepath.hasRunningInterval()' ?

So basically can I find out if a node has interval playing on it? Can i get a handle to it?

No, this is not possible. Intervals happen on a completely different level.

You could store a list on every node though, as a python tag, storing each interval you created for the node. Then you can do node.getPythonTag(“intervals”) to get back that list.

Ive noticed there are two ways to create intervals: by a NodePath method and by creating an interval object and passing the nodePath as argument. Is the first just a convenience function for the latter? Or do they work differently? If so, is it relevant here?

The python tag is a good idea though. :slight_smile:
BTW, “python” tag got me thinking, is everything inside the module “direct” (also Intervals) pure python? Maybe I should just use tasks? Because I might have hundreds of them running.

The nodePath methods that create intervals are just convenience wrappers around the interval constructors. The definition of NodePath.posInterval looks something like this:

def posInterval(self, *args, **kw):
    return LerpPosInterval(self, *args, **kw)

Some interval types (like Func) are implemented in pure Python, while others (like LerpPosInterval and most of the other lerp intervals) are implmented in C++. In either case, the interval system is reasonably efficient, but you can keep an eye on the performance in PStats.