Listing 3: The puppet component interface
pascal ComponentResult PuppetInitialize (PuppetComponent puppet,
								 ConductorComponent aConductor);
 
pascal ComponentResult PuppetSetTimeFormat (PuppetComponent puppet,
								 UInt32 eventTimeFormat);
 
pascal ComponentResult PuppetIdle (PuppetComponent puppet,
								 UInt32 atMediaTime);
		
			// message routines
pascal ComponentResult PuppetProcessActionEvent (PuppetComponent puppet,
								 QTAtomContainer anEvent);
 
pascal ComponentResult PuppetProcessMessage (PuppetComponent puppet,
								 UInt32 atMediaTime,
								 QTAtomContainer aMessage);
		
			// QD3D routines
pascal ComponentResult PuppetSubmit (PuppetComponent puppet,
								 TQ3ViewObject theView);
		
pascal ComponentResult PuppetGetGroupObject (PuppetComponent puppet,
								TQ3GroupObject* aGroup);
		
pascal ComponentResult PuppetGetTranslateObject (PuppetComponent puppet,
								TQ3TransformObject* aTransform);
 
pascal ComponentResult PuppetGetCameraObject (PuppetComponent puppet,
								 Rect* graphicsBox,
								 TQ3CameraObject* aCamera);