49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
|
"""MopathInterval module: contains the MopathInterval class"""
|
||
|
|
||
|
__all__ = ['MopathInterval']
|
||
|
|
||
|
from . import LerpInterval
|
||
|
from panda3d.core import *
|
||
|
from panda3d.direct import *
|
||
|
from direct.directnotify.DirectNotifyGlobal import *
|
||
|
|
||
|
# import Mopath
|
||
|
|
||
|
class MopathInterval(LerpInterval.LerpFunctionInterval):
|
||
|
# Name counter
|
||
|
mopathNum = 1
|
||
|
# create MopathInterval DirectNotify category
|
||
|
notify = directNotify.newCategory('MopathInterval')
|
||
|
# Class methods
|
||
|
def __init__(self, mopath, node, fromT = 0, toT = None,
|
||
|
duration = None, blendType = 'noBlend', name = None):
|
||
|
if toT == None:
|
||
|
toT = mopath.getMaxT()
|
||
|
|
||
|
if duration == None:
|
||
|
duration = abs(toT - fromT)
|
||
|
|
||
|
# Generate unique name if necessary
|
||
|
if (name == None):
|
||
|
name = 'Mopath-%d' % MopathInterval.mopathNum
|
||
|
MopathInterval.mopathNum += 1
|
||
|
|
||
|
LerpInterval.LerpFunctionInterval.__init__(
|
||
|
self, self.__doMopath, fromData = fromT, toData = toT,
|
||
|
duration = duration, blendType = blendType,
|
||
|
name = name)
|
||
|
|
||
|
self.mopath = mopath
|
||
|
self.node = node
|
||
|
|
||
|
def destroy(self):
|
||
|
"""Cleanup to avoid a garbage cycle."""
|
||
|
self.function = None
|
||
|
|
||
|
def __doMopath(self, t):
|
||
|
"""
|
||
|
Go to time t
|
||
|
"""
|
||
|
self.mopath.goTo(self.node, t)
|
||
|
|