drose added HprScale

This commit is contained in:
Dave Schuyler 2001-09-18 01:14:05 +00:00
parent 1c58927483
commit 12fbeebc6f
2 changed files with 71 additions and 1 deletions

View File

@ -208,6 +208,29 @@ class PosHprInterval(FunctionInterval):
# Create function interval
FunctionInterval.__init__(self, posHprFunc, name = name)
class HprScaleInterval(FunctionInterval):
# HprScaleInterval counter
hprScaleIntervalNum = 1
# Initialization
def __init__(self, nodePath, hpr, scale, duration = 0.0,
name = None, other = None):
"""__init__(nodePath, hpr, scale, duration, other, name)
"""
# Create function
def hprScaleFunc(np=nodePath, hpr=hpr, scale=scale,
other = other):
if other:
np.setHprScale(other, hpr, scale)
else:
np.setHprScale(hpr, scale)
# Determine name
if (name == None):
name = ('HprScale-%d' %
HprScaleInterval.hprScaleIntervalNum)
HprScaleInterval.hprScaleIntervalNum += 1
# Create function interval
FunctionInterval.__init__(self, hprScaleFunc, name = name)
class PosHprScaleInterval(FunctionInterval):
# PosHprScaleInterval counter
posHprScaleIntervalNum = 1

View File

@ -100,7 +100,7 @@ class LerpHprInterval(LerpInterval):
if (other != None):
# lerp wrt other
if (startHpr == None):
startHpr = node.getHpr(other)
startHpr = VBase3(node.getHpr(other))
functor = HprLerpFunctor(node, startHpr, hpr, other)
else:
if (startHpr == None):
@ -193,6 +193,53 @@ class LerpPosHprInterval(LerpInterval):
# Initialize superclass
LerpInterval.__init__(self, name, duration, functorFunc, blendType)
class LerpHprScaleInterval(LerpInterval):
# Interval counter
lerpHprScaleNum = 1
# Class methods
def __init__(self, node, duration, hpr, scale,
startHpr=None, startScale=None,
other=None, blendType='noBlend', name=None):
""" __init__(node, duration, hpr, scale,
startHpr, startScale,
other, blendType, name)
"""
def functorFunc(node=node, hpr=hpr, scale=scale,
startHpr=startHpr,
startScale=startScale, other=other):
assert(not node.isEmpty())
if callable(hpr):
# This may be a thunk that returns a point.
hpr = hpr()
if callable(scale):
# This may be a thunk that returns a point.
scale = scale()
if (other != None):
# lerp wrt other
if (startHpr == None):
startHpr = node.getHpr(other)
if (startScale == None):
startScale = node.getScale(other)
functor = HprScaleLerpFunctor(
node, startHpr, hpr,
startScale, scale, other)
else:
if (startHpr == None):
startHpr = node.getHpr()
if (startScale == None):
startScale = node.getScale()
functor = HprScaleLerpFunctor(
node, startHpr, hpr, startScale, scale)
return functor
# Generate unique name if necessary
if (name == None):
name = ('LerpHprScale-%d' %
LerpHprScaleInterval.lerpHprScaleNum)
LerpHprScaleInterval.lerpHprScaleNum += 1
# Initialize superclass
LerpInterval.__init__(self, name, duration, functorFunc, blendType)
class LerpPosHprScaleInterval(LerpInterval):
# Interval counter
lerpPosHprScaleNum = 1