My plan was to move my camera around my scene, to random points, starting and stopping smoothly; and keep the camera pointed towards the center.
def face( ):
base.cam.lookAt( 0, 0, 0 )
def next( ):
p1= ran.uniform( -5, 5 ), ran.uniform( -10, 0 ), ran.uniform( -5, 5 )
i= LerpPosInterval( base.cam, 5, p1, blendType= 'easeInOut' )
j= Func( next )
k= Sequence( i, j )
m= Func( face )
n= Parallel( k, m )
But, ‘m’, which is ‘Func( face )’ only runs once! I need m to loop, and stop when k stops (actually, possibly ‘i’…). But also, I learned from trying with taskMgr, I need ‘face’ to occur after ‘i’ every frame, I believe; I was getting a jitter without controlling that order.
Func() only calls its function once, by design. If you want a function that gets called repeatedly over a period of time in an interval, try LerpFunc(). The function called by LerpFunc() must be written to accept a parameter, t, which ranges from 0 to 1 (or whatever specified range) over the lerp’s duration (which must be explicitly specified with duration = x).
That seems “non-optimal” but quite adequate. Can I retrieve the duration I used on the 1st for setting the 2nd, such as from an attribute, or do I need to… Ick!.. declare a variable?
You need to declare a variable. In general, you’re responsible for knowing the structure of the intervals you’re constructing.
Your reverse psychology won’t work on me.
m= LerpFunc( face, duration= i.getDuration( ) )
Seems to have done the job.
I think the combination of Parallels and Funcs calls for an exception. If a Func is in a Parallel with other non-Func arguments, the Funcs should have the option to repeat.
This would have a benefit IMO, but I’m new, so I can’t attest to what the costs are.