Copyright (C) 1994, Digital Equipment Corp.
Digital Internal Use Only
Created on Mon Feb 21 15:29:33 PST 1994 by najork
The 3D animation library supports two kinds of animations: synchronous and asynchronous ones.
An asynchronous animation is performed by attaching an {\em unsynchronized
time-variant property value} pv to a geometric object go. Attaching
pv to go immediately starts to animate go in some fashion, the
animation ends once pv is again detached.
A synchronous animation, on the other hand, is performed by attaching a
{\em synchronized time-variant property value} pv to a geometric object
go, and then issuing an animation request to pv. Associated with each
synchronous property value is an AnimHandle.T. However, pv will not
immediately start to change.
The message ah.animate() will start to animate all time-varying property
values tied to ah. The call to ah.animate() will return only after
these animations are completed.
Animation handles are monitored: only one thread can call animate at any
given time, and no thread can insert requests into the request queue of a
synchronous property value while animate is in progress.
INTERFACEAnimHandle ; IMPORT ProxiedObj; TYPE T <: Public; Public = ProxiedObj.T OBJECT METHODS init () : T; animate (); END;
ah.init()initializes a new animation handleahand returns it.ah.animate()triggers the animation of all synchronous property values that are tied toah. It returns when the animation is completed.
PROCEDURE New () : T;
Newis a convenience procedure. The expressionNew()is equivalent toNEW(T).init()
END AnimHandle.