51 lines
		
	
	
		
			713 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			713 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | class Animation { | ||
|  | 
 | ||
|  | 	constructor( nodes, info ) { | ||
|  | 
 | ||
|  | 		this.nodes = nodes; | ||
|  | 		this.info = info; | ||
|  | 
 | ||
|  | 		this.animationLoop = null; | ||
|  | 		this.requestId = null; | ||
|  | 
 | ||
|  | 		this._init(); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	_init() { | ||
|  | 
 | ||
|  | 		const update = ( time, frame ) => { | ||
|  | 
 | ||
|  | 			this.requestId = self.requestAnimationFrame( update ); | ||
|  | 
 | ||
|  | 			if ( this.info.autoReset === true ) this.info.reset(); | ||
|  | 
 | ||
|  | 			this.nodes.nodeFrame.update(); | ||
|  | 
 | ||
|  | 			this.info.frame = this.nodes.nodeFrame.frameId; | ||
|  | 
 | ||
|  | 			if ( this.animationLoop !== null ) this.animationLoop( time, frame ); | ||
|  | 
 | ||
|  | 		}; | ||
|  | 
 | ||
|  | 		update(); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	dispose() { | ||
|  | 
 | ||
|  | 		self.cancelAnimationFrame( this.requestId ); | ||
|  | 		this.requestId = null; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	setAnimationLoop( callback ) { | ||
|  | 
 | ||
|  | 		this.animationLoop = callback; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | export default Animation; |